欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 未提交成功而崩溃,跟上面一样