第5章 Cassandra 的架构

5.1 system keyspace

Cassandra有一个称为system的内部keyspace,用于存储关于集群的元数据。包括:节点令牌,集群名,用于支持动态装载的keyspace和schema的定义,迁移数据,节点是否自举成功。

5.2 对等结构

主从架构通常是主节点读写,从节点读,数据从主节点向从节点单向复制,存在很严重的单点故障问题。

Cassandra采用对等结构(P2P)的分布式模型。所有节点地位相同,利于系统可用性和扩展性;任意节点的掉线会影响系统吞吐,但是不会中断服务;支持动态增加节点。

5.3 gossip与故障检测

gossip:Cassandra内部维护一个环形节点列表(Gossiper类)用于故障检测。gossiper的流程如下:

(1)   gossiper 周期性运行,在环里面随机选择一个节点(假设为A)发起gossip会话,每轮发送三条消息。

(2)   gossip发起者先向A发送一个Sync消息

(3)   A收到消息后回复一条Ack1消息

(4)   发起者收到Ack1后再向A发送Ack2消息。至此完成本轮gossip

(是不是很像tcp三次握手?)

一轮gossip能判断一个节点的存活状态,考虑到网络的不稳定性,在死和活之间引入中间值——嫌疑级别。

具体gossip细节《Cassandra权威指南》并没有讲明白。

5.4 逆商与读修复

逆商是Cassandra的副本同步机制,用于保障不同节点上数据都更新到最新的版本。

具体细节《Cassandra权威指南》没有讲明白

5.5 commit log、memtable和SSTable

简要介绍下写操作:

先写commit log(写操作成功)——>

写内存memtable(每个列族可能有多个memtable)——>

memtable达到一定数量后,写入SSTable文件

commit log有两阶段提交的意思,书翻译描述不清楚。

以上写操作都是顺序进行的,性能很高;配合后续的压紧操作获得更好的读性能。

5.6 提示移交

提示移交:在某个节点因为网络、硬件等原因导致不可写入时,其他节点会把这个写入信息记录下来,等待该节点重新上线后把记录发给它。这使得Cassandra写操作永远可用。

5.7 压紧

压紧操作用于合并SSTable。键进行合并,列被组合,丢弃墓碑,创建新索引。

压紧是后台操作。

5.8 Bloom filter

能判断一个元素一定不在集合中(真阴性),可能在一个集合中(假阳性)。

大致原理,将一个元素映射到一个位数组,判断位数组的0/1值来确定元素在集合中的存在性。优势是内存占用少,访问速度远远大于磁盘扫描。

比如,url白名单,快速判断一个url在不在一个超大超大的集合中(当hash算法内存不足的时候)。

5.9 墓碑

软删除,应用并不直接执行数据库的delete删除操作,而是使用update操作把某列值标记为“已删除”。

Cassandra中,上述操作在删除的值上放置墓碑。那么,在执行压紧操的的时候,比墓碑更旧的数据都会被清除。

5.10 分阶段事件驱动

没太看明白

5.11 管理与服务

Cassandra守护进程

存储服务

消息服务

提示移交管理器

Cassandra的架构的更多相关文章

  1. Cassandra内部架构

    Cassandra是一个开源的.分布式.无中心节点.弹性可扩展.高可用.容错.一致性协调.面向列的NoSQL数据库 Cassandra集群(Cluster) Cluster Data center(s ...

  2. cassandra 系统分析 架构

    cassandra cassandra是无中心节点的列式数据库 集群管理:      使用gossip算法,最终每个节点都知道集群中的所有节点信息,新增一个节点,新节点发送上线消息,     其他节点 ...

  3. Cassandra联手Spark 大数据分析将迎来哪些改变?

    2014Spark峰会在美国旧金山举行,与会数据库平台供应商DataStax宣布,与Spark供应商Databricks合作,在它的旗舰产 品 DataStax Enterprise 4.5 (DSE ...

  4. 通过cassandra-cli客户端了解cassandra的内部数据结构

    和cassandra数据库交互的方式有两种,一种是通过类似于cassandra-cli命令的thrift api,或者通过cassandra提供的cql(cassandra query lanugag ...

  5. Cassandra 学习二

    Cassandra的架构 Cassandra的设计目的是处理跨多个节点的大数据工作负载,而没有任何单点故障.Cassandra在其节点之间具有对等分布式系统,并且数据分布在集群中的所有节点之间. 1 ...

  6. Cassandra数据库Java訪问

    针对的时Cassandra 2.0 数据库 Java本地client訪问Cassandra,首先建立Javaproject,使用Maven进行管理. 引入依赖: <dependency> ...

  7. Cassandra 在 360 的实践与改进

    分享嘉宾:王锋 奇虎360 技术总监 文章整理:王彦 内容来源:Cassandra Meetup 出品平台:DataFunTalk 注:欢迎转载,转载请留言. 导读:2010年,Dropbox 在线云 ...

  8. 什么是Cassandra数据库

    在本文中,我们将介绍Cassandra名字的含义.Cassandra的发展简史.Cassandra这项技术的特点及优势,以及对于这项技术的未来展望. 本文将用浅显易懂的方式,帮助您将对Cassandr ...

  9. 活动精彩实录 | 王峰:Cassandra在360的多场景应用及未来趋势

    点击此处观看完整活动视频 大家好,我是360的王峰,我今天主要通过Cassandra在多场景下的应用来介绍一下Cassandra在360落地的情况. 我会从以下这几个方面进行介绍.首先介绍下Cassa ...

随机推荐

  1. BZOJ 3895 3895: 取石子 / Luogu SP9934 ALICE - Alice and Bob (博弈 记忆化搜索)

    转自PoPoQQQ大佬博客 题目大意:给定n堆石子,两人轮流操作,每个人可以合并两堆石子或拿走一个石子,不能操作者输,问是否先手必胜 直接想很难搞,我们不妨来考虑一个特殊情况 假设每堆石子的数量都&g ...

  2. 智能指针weak_ptr记录

    智能指针weak_ptr为弱共享指针,实际上是share_ptr的辅助指针,不具备指针的功能.主要是为了协助 shared_ptr 工作,可用来观测资源的使用情况.weak_ptr 只对 shared ...

  3. 封装Vue组件的一些技巧

    封装Vue组件的一些技巧 本文同步在个人博客shymean.com上,欢迎关注 写Vue有很长一段时间了,除了常规的业务开发之外,也应该思考和反思一下封装组件的正确方式.以弹窗组件为例,一种实现是在需 ...

  4. Intel Wireless AC9560 160MHZ 联网黄色感叹号的问题

    Intel Wireless 开始支持5G设备了,AC9560 160MHZ可以工作在5G模式了.新入的设备驱动程序升级到了最新版本,发现联网出现“黄色感叹号”,DHCP的IP地址获取正常,从无线路由 ...

  5. [Sdwc] 线段

    线段有如下两类特点:1 x y, 表示第 x 条线段和第 y 条线段相交 (相交在这里指至少有一个公共点)2 x y,表示第 x 条线段在第 y 条线段的左边,且它们不相交.共有 m 个特点,每个特点 ...

  6. Python 爬取喜马拉雅音频

    一.分析音频下载相关链接地址 1. 分析专辑音频列表页面   在 PC端用 Chrome 浏览器中打开 喜马拉雅 网站,打开 Chrome开发者工具,随意打开一个音频专辑页面,Chrome开发者工具中 ...

  7. [Linux]awk RSTART,RLENGTH

    转自 http://blog.sina.com.cn/s/blog_6d76c7e20102v381.html awk 是一门非常优秀的文本处理工具,甚至可以上升作为一门程序设计语言. 它处理文本的速 ...

  8. IDEA2019.1.3的安装和破解

    上一篇文章我有写过我会尝试安装IDEA(这玩意儿收费啊!),倘若尝试成功以后都会用它编译,很幸运,我安装成功了,所以今天这篇文章我来写安装和破解方法. IDEA界面: ​ 首先我们访问官方网站:htt ...

  9. json常用的注解

    json注解: 1.@JsonIgnoreProperties: 此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 写法将此标签加在model ...

  10. 2个最好的JavaScript编辑器 必须要知道

    JavaScript程序员有许多很好的工具可供选择,几乎太多了.在这篇文章中,介绍2个最好用的文本编辑器,也是顶级的.并且很好地支持使用JavaScript,HTML5和CSS进行开发,并用Markd ...