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

xiaoxiao2021-02-28  80

所有写请求都会被转发到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,则进行写操作。
转载请注明原文地址: https://www.6miu.com/read-42643.html

最新回复(0)