zookeeper 数据存储 和 写入 博客分类: 架构
程序员文章站
2024-03-18 18:12:16
...
参照 https://www.cnblogs.com/leesf456/p/6179118.html
可以简单概括为以下
1. 使用内存数据库,定期全量dump快照数据到硬盘
2. 针对所有的更新操作,在返回客户端“更新成功”的响应前,zookeeper会保证已经将本次更新操作的事务日志已经写到磁盘上,只有这样,整个更新操作才会生效。
3. 服务启动时
1)会使用最新的快照数据加载到内存(当然会有一些逻辑判断和保护)
2)会根据本机的zxid等信息,和 Leader的zxid对比,并且会有全量和增量等各种同步方式
以上可以保证大部分数据在硬盘,一旦宕机恢复,还会有跟Leader的同步数据机制
https://www.cnblogs.com/wade-luffy/p/8689524.html#_label1_2
类似于两阶段提交的方案进行写操作
1. leader 生成zxid,提出proposal
2. proposal发送给follower
3. 如果超过半数的follower回复 ack,leader commit,并通知 follower commit
若第3步时 leader挂掉
1)leader已经提交成功,follower 未提交,leader崩溃;崩溃恢复时,follower当选为leader,发现自己有prepare的proposal,跟同其他follower确认proposal状态,先prepare 后 commit,然后要求其他follower commit
2) leader 未提交成功而崩溃,跟上面一样