Cassandra的架构
第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的架构的更多相关文章
- Cassandra内部架构
Cassandra是一个开源的.分布式.无中心节点.弹性可扩展.高可用.容错.一致性协调.面向列的NoSQL数据库 Cassandra集群(Cluster) Cluster Data center(s ...
- cassandra 系统分析 架构
cassandra cassandra是无中心节点的列式数据库 集群管理: 使用gossip算法,最终每个节点都知道集群中的所有节点信息,新增一个节点,新节点发送上线消息, 其他节点 ...
- Cassandra联手Spark 大数据分析将迎来哪些改变?
2014Spark峰会在美国旧金山举行,与会数据库平台供应商DataStax宣布,与Spark供应商Databricks合作,在它的旗舰产 品 DataStax Enterprise 4.5 (DSE ...
- 通过cassandra-cli客户端了解cassandra的内部数据结构
和cassandra数据库交互的方式有两种,一种是通过类似于cassandra-cli命令的thrift api,或者通过cassandra提供的cql(cassandra query lanugag ...
- Cassandra 学习二
Cassandra的架构 Cassandra的设计目的是处理跨多个节点的大数据工作负载,而没有任何单点故障.Cassandra在其节点之间具有对等分布式系统,并且数据分布在集群中的所有节点之间. 1 ...
- Cassandra数据库Java訪问
针对的时Cassandra 2.0 数据库 Java本地client訪问Cassandra,首先建立Javaproject,使用Maven进行管理. 引入依赖: <dependency> ...
- Cassandra 在 360 的实践与改进
分享嘉宾:王锋 奇虎360 技术总监 文章整理:王彦 内容来源:Cassandra Meetup 出品平台:DataFunTalk 注:欢迎转载,转载请留言. 导读:2010年,Dropbox 在线云 ...
- 什么是Cassandra数据库
在本文中,我们将介绍Cassandra名字的含义.Cassandra的发展简史.Cassandra这项技术的特点及优势,以及对于这项技术的未来展望. 本文将用浅显易懂的方式,帮助您将对Cassandr ...
- 活动精彩实录 | 王峰:Cassandra在360的多场景应用及未来趋势
点击此处观看完整活动视频 大家好,我是360的王峰,我今天主要通过Cassandra在多场景下的应用来介绍一下Cassandra在360落地的情况. 我会从以下这几个方面进行介绍.首先介绍下Cassa ...
随机推荐
- Codeforces Round #590 (Div. 3) D. Distinct Characters Queries(线段树, 位运算)
链接: https://codeforces.com/contest/1234/problem/D 题意: You are given a string s consisting of lowerca ...
- svn 跟 git的区别
1.svn是集中式版本控制系统,git是分布式版本控制系统 2.svn是直接与服务器进行交互,git是将文件存到本地然后再推送到服务器 3.svn必须在连网的情况下工作,git可以不连网开发 4.sv ...
- JavaScript数组的简单介绍
㈠对象分类 ⑴内建对象 ⑵宿主对象 ⑶自定义对象 ㈡数组(Array) ⑴简单介绍 ①数组也是一个对象 ②它和我们普通对象功能类似,也是用来存储一些值的 ③不同的是普通对象是使用字符串作为属性名的 ...
- POJ1961 Period && POJ2604 Power Strings 字符串循环节
两道题都是求循环节的...但是一道是学哈希时做的,另一道是学$KMP$时做的 POJ2604 用的哈希...枚举长度的因数作为循环节的长度,然后暴力算出所有循环节位置的哈希值,看看是否相等. #inc ...
- react-native-pg-style使用方法(以最简单的方式编写样式代码,抛弃react-native标准的样式创建方式.)
react-native-pg-style 以最简单的方式编写样式代码,抛弃react-native标准的样式创建方式. 看大家写的源码中都是按照react-native标准的样式创建方式来写样式代码 ...
- 'telnet' is not recognized as an internal or external command
http://blog.csdn.net/lubinsu/article/details/7294870 使用telnet的时候出现如下提示:'telnet' is not recognized ...
- 多线程中volatile关键字的作用
原文链接:https://blog.csdn.net/xuwentao37x/article/details/27804169 多线程的程序是出了名的难编写.难验证.难调试.难维护,这通常是件苦差事. ...
- WHU 583 Palindrome ( 回文自动机 && 本质不同的回文串的个数 )
题目链接 题意 : 给你一个串.要你将其划分成两个串.使得左边的串的本质不同回文子串的个数是右边串的两倍.对于每一个这样子的划分.其对答案的贡献就是左边串的长度.现在要你找出所有这样子的划分.并将贡献 ...
- Hdu 5248
hdu5248-序列变换 题意: 给你一个序列A,要求改变序列A中的某些元素的顺序,形成一个新的数列B,并保证数列B严格单调递增,求出最小代价. 代价计算公式 $ cost(a,b)=max(|A_i ...
- 论一种基于JS技术的WEB前端动态生成框图的方法
前言 HTML是一种标记语言,由HTML的标签元素和文本编写的文档可被浏览器描述为一幅网页.通常情况下网页的实现是由HTML.CSS和Javascript三者结合完成的,HTML负责网页的结构,CSS ...