从paxos到zookeeper读书笔记(第四章)

来源:互联网 发布:阿里云 内网穿透 编辑:程序博客网 时间:2024/06/07 00:54

netty集群简单的集群方案:zk用来实现服务发现的功能,通过高性能的netty网络框架作为服务器,注册到zk中,client请求到zk中选取可用的netty服务器,选取策略有:轮询、哈希、IP分组、加权分组(均衡负载和服务发现的功能),netty服务器关闭时主动到zk注销。


ZAB算法:

zookeeper官方文档说明,zab算法提供崩溃可恢复的原子消息广播算法,paxos是一种通用的分布式一致性算法。zab的目标是构建一个分布式数据主备系统,针对数据主备系统。paxos的目的是构建一个分布式一致性的状态系统,在各个node节点上的各种状态的一致性。

zap的原理:

1  , zk选取一个主服务器处理客户端的请求,主服务器使用zab协议原子广播协议,通过proposal通知其他服务器端数据状态的改变。

2 , 在分布式应用中,事务A可能依赖于事务B、事务C,所以zk需要保证在处理变更A时,B和C变更已经被执行了。

3 , 考虑到任何主进程都有可能崩溃或者宕机,所以需要考虑主进程在上述情况下,分布式系统仍然能够正常工作。

zab协议的处理流程:

zk定义了leader、follower、observer服务器,leader负责协调处理所有client事务,leader将客户端事务转变为proposal事务,leader将这个proposal转发给其他follower,leader等待其他follower正确反馈,之后leader会向所有follower下发commit消息,提交proposal,处理proposal事务。


zab协议具体内容:

zab协议主要包括两种基本的模式:崩溃恢复、原子广播协议、数据同步。

原子广播:leader服务器向所有follower服务器原子广播。


崩溃恢复:当一个leader与过半的follower失去联系时,zookeeper集群即认为leader处于崩溃状态,follower会elect一个新的leader。


数据同步:当选举出行的leader服务器时,需要保证日志中的所有proposal是否已经半数通过了,即所有的proposal事务是否已经表决了。

zab算法描述:

zab算法主要分为原子广播和崩溃恢复,细分为三个阶段,分别为discovery、sync、broadcast。


discovery主要是leader选举的过程、准leader、follower。

sync:

广播的过程:接收客户端的请求,进行消息广播流程。

阅读全文
0 0
原创粉丝点击