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