Zookeeper
2021-11-12 11:37:24 4 举报
AI智能生成
分布式协调工具
作者其他创作
大纲/内容
集群
角色
Leader
处理所有的事务请求(写请求),可以处理读请求,集群中只能有一个Leader
Follower
只能处理读请求,同时作为 Leader的候选节点,即如果Leader宕机,Follower节点要参与到新的Leader选举中,有可能成为新的Leader节点
Observer
只能处理读请求。不能参与选举
多层队列架构
选举应用层
消息传输层<br>
启动或leader宕机选举leader流程
选票格式
vote(Myid,Zxid)
ZXID
1.高32位,可以看作epoch 值(leader选举周期),当一轮新的选举结束后,会对这个值加一,并且事务id又从0开始自增
2.低 32 位可以看作是一个简单的递增的计数器
保证主从节点的状态同步?
ZAB(原子广播机制)
模式
广播模式(Leader可用)
说明
对于客户端发送的写请求,全部由 Leader 接收,Leader 将请求封装成一个事务 Proposal,将其发送给所有 Follwer ,然后,根据所有 Follwer 的反馈,如果超过半数成功响应,则执行commit 操作
存储
严格保证事务的顺序性,内部采用内存队列进行存放,事务标识为ZXID
备注
Leader收到半数Follower的Ack相应后,再发送Commit指令,再发送inform让Observe存储消息<br>
Leader写数据到自身本地内存后再告知Client,本次事务执行状态<br>
恢复模式(Leader不可用)
假设
1.Leader 在复制数据给所有 Follwer 之后,还没来得及收到Follower的ack返回就崩溃,怎么办?
2.Leader 在收到 ack 并提交了自己,同时发送了部分 commit 出去之后崩溃怎么办?
原则
1.ZAB 协议确保丢弃那些只在 Leader 提出/复制,但没有提交的事务
2. ZAB 协议确保那些已经在 Leader 提交的事务最终会被所有服务器提交
特征
文件系统
监听通知
0 条评论
下一页