当前课程知识点:大数据系统基础 > 6. NoSQL > 授课视频 > 系统架构与Gossip协议
下面学习Cassandra系统的
系统架构和Gassip协议
Cassandra集群采用的是
去中心化的P2P分布式架构
这个架构与Hadoop集群采用的
Master sliver架构不同
在P2P架构当中所有节点
在结构上都是对等的
这样Cassandra
任何一个节点的宕机
只会对整个集群的吞吐性能
造成影响
而不会造成
整个系统的服务中断
也就是说
它克服了Hadoop机群当中的
单点故障问题
同时 由于Cassandra
采用了P2P架构
它具有较强的机群的扩展能力
也就是说
当集群扩展时
绝大多数步骤都可以自动完成
那么不同的节点
是如何相互感知的
在Hadoop集群当中
所有的数据节点
都会定期地与主节点通讯
因此主节点掌握着集群当中的
全局信息
而Cassandra的P2P架构
在管理集群方面
就没有那么简单了
需要一些特殊的技术
那么P2P架构如何管理节点
在Cassandra系统中
两个节点又是如何交换信息的
Cassandra借鉴了Amazon的
键值系统Dynamo的体系结构
它利用Gossip协议
来发现集群中
其它节点的位置和状态
位置信息包括
路由表 Hash环等
状态信息包括
节点上边数据的版本 负载情况
以及节点的死活的信息
流言协议是1987年
第一次被斯诺公司提出的
也称为疫情算法
因为它的工作机制
也像瘟疫的传播
一个节点一旦获取了
另一个节点的信息
它就会把该信息
传给集群中的其它节点
最后集群中的所有节点
都拥有了这个节点的信息
下面我们一起来看一个例子
绿色节点A D为种子节点
用来初始化集群
并且要求存在某个节点
预知多个种子节点
Cassandra集群中
虽然没有Master的节点
但是需要有部分种子节点
用来初始化集群
并且要求存在某些节点
要预知多个种子节点
绿色节点A D为种子节点
红色节点B C E为非种子节点
白色方框内表示
每个节点的路由表
也叫lookup表
这里我们假设
节点B C预知种子节点A
节点E预知种子节点A和D
两个种子节点A和D之间互不相知
这是A与D首先通信
A和B彼此感知
它们的路由表同步为AB
然后C与A通信
C和A的路由表修改为ABC
而B节点的路由表仍为AB
接下来 节点C与B通信
或者节点B与A通信
这时A B C三个节点的路由表
达成一致
此后如果E与D进行通信
同理D与E组成了子网
注意此时A B C三个节点
和D E两个节点并未连通
这时
因为E还知道另外一个种子节点A
它与A进行通信后
每个节点的路由表如右图所示
E和A节点的路由表为五个节点
它们已经感知到了全部的节点
B和C的路由表为三个节点
D的路由表只包括两个节点
最后再通过多轮的通信
比如 B与A C与B等等
就形成了完整的全连同的
Cassandra集群结构
Gossip交换信息有三种模式
即推模式 拽模式和推+拽的模式
Cassandra系统当中的Gossip协议
采用了推+拽的模式
具体过程如下
Cassandra的某一个节点
作为发起者会周期性地
随机选择一个朋友节点
并初始划一个与它的gossip会话
gossip发起者首先向朋友节点
发送GossipDigestSynMessage
当这个朋友节点
接收到这个消息后
即返回一个AckMessage
发起者接收到朋友节点的
ACK消息后
再向朋友节点发送它的Ack2Message
这里给出了在Cassandra系统中
某一个数据对象E的K属性的值
如何同步到21版本当中的
注意这里对象的值
用小数点来表示
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-1. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7