java连接zookeeper集群_Zookeeper集群之写请求处理流程

1. 前言

本编主要记录Zookeeper写请求处理的一些流程,涉及到过半机制,数据同步。

2. 处理流程

这里假设4台服务器,server1(Follower),server2(Leader),server3(Follower),server4(Observer)。 由于我们Zookeeper客户端对于服务端的任何一台服务都是可以进行连接的,有可能是连接的是Leader,或Follower,甚至是Observer。 这里若有一个客户端Client连接的是Observer,并写入数据。但是由于只有写请求只能交与Leader处理,所以若是连接到的是Follower,Observer,就会发生请求的转发到Leader。

d5ef21cab4be53dd519dbc65d2de17f6.png

接下来,Leader会想所有的Follower发送提议请求,不对Observer发送。Follower收到来自Leader的提议后,会返回ack响应。

4017abbc6750eccfac00d3f65da59400.png

Leader收到ack请求后,会采用过半机制,即发送出去的提议有一半以上的ack响应,则就会发送commit提交数据,同时也会向Observer提交commit。

bc25cee588233c444a39c9e6619dd017.png

整个写流程就是如此,这样就保证了每个写入请求都会成功的写入到集群中,若有新的服务器加入进来,也会对Leader进行数据同步,来达到集群中数据的一致性。

2ed9ee605759ad28abf79f46d240307a.png

3. 为何不向Observer发送提议?

这个问题在Zookeeper单机和集群环境搭建中有提到过

如果集群中读的负载比较高的情况下,增加observer比增加follower所带来的负面影响要好得多,同时不参与过半机制,可以加快数据同步的过程,减少数据同步的时间。这也是Observer的存在意义。

3. 总结

Zookeeper采用过半机制来保证了写数据的同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值