在常规的添加 ZK 节点操作中, 需要手动的停止 ZK 集群, 并添加新的节点, 如果此时没有按照原有的ZK顺序启动节点, 则可能会导致事务丢失

如上图
- 一开始 节点1, 2, 3 构成一个集群. 此时 leader 节点为 节点2, 节点3 还未完全同步所有事务
- 手动添加节点, 重启之后, 节点3, 4, 5 先形成了集群, 此时因为 leader 已经发生改变, 故后续新增的事务以 Epoch
<2,
为开头, 如 <2,1>
- 最后当节点1,2 连上来时会从 leader 处同步数据, 因为此时 leader 中不包含 <1,3> , 故原来的 <1,3> 事务直接丢失, 造成数据覆盖
解决该问题的办法
- 确保启动顺序
- 使用动态配置