浅谈zk(5).如何保证并发写的顺序性?

ZooKeeper通过确保所有写请求都由Leader节点处理,并使用全局唯一递增的事务ID(zxid)来维护并发写的顺序性。Leader节点与Follower节点通过特定端口通信,转发写请求并同步zxid。当follower接收到写请求时,比较请求的zxid与当前全局zxid,若相差1则执行写操作,从而实现顺序性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所有写请求都会被转发到leader节点,follower会通过单独的端向leader报告, 集群配置里面有专门指定,如下 zoo.cfg配置:
clientPort=4180 #用来接受客户端读请求的监听端口
# server.A=B:C:D:其 中
A 是一个数字,表示这个是第几号服务器;
     B 是这个服务器的 ip地址;
     C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;也就是说,该端口是leader接收写请求的端口。
     D 表示的是follower之间选举时通信用的端口。
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772

当所有请求被转发到leader后,leader会同步的维护一个全局写事务编号 mzxid, 该序号是递增的。如下:
每条写请求都对应一个全局唯一的zxid, 同时leader会将该写请求转发至follower, follower在写的时候会拿当前的全局编号与对应写请求上的zxid进行匹配,写请求zxid-当前全局编号=1,则进行写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值