zookeeper 操作 顺序性如何保证

zookeeper  顺序性如何保证?

zk读写操作特点: 所有执行都是推送,异步但顺序.

1. 对Leader而言

    因为和集群其他节点都是单长连接通道交互的.中间通过队列缓存. 二者都是顺序性的.所以所有请求也是顺序性的.

    NOTE By Phil: 我之前一开始的设想是,所有的消息都必须要有其前置消息id,这样能保证数据的顺序性校验. Leader是单机能实现. mq这种就不能实现了.

2. 对Leader 宕机后重新选举出的Leader而言?

   待研究!     根据zk的读写逻辑, zxid最新的那个肯定是数据最新的. 不需要再次从其他机器上把数据都同步过来.

3. 对新加入的Follower而言.

    存在数据同步和接受leader的新消息推送; 这两个步骤的切换. 出现切换肯定会有并发问题,如何避免?

    加锁实现. "最后一个数据同步+切换" 切换的时候对数据加锁,不能变更数据,这样才能保证之前的那个最后一个数据的确是最后一个数据.

    NOTE By Phil: 锁的力度较大,将zk的主操作锁都锁住了,主要原因还是基于推送的.

    如果变成拉取. 只需要锁住follower对应的handler的就好了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值