作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

前面我们介绍介绍了几个常用的代理服务器,本章节我们讲来讲解Zookeeper这个中间件。
上个小节我们介绍了Zookeeper的选举流程,本小节来讲解一个读写流程,作为集群对外提供服务,而我们的客户端连接的时候也会把所有的地址都写到配置文件里面,那么读写数据的时候他具体是怎么实现的呢?
Zookeeper读流程
我这里使用一个测试python程序来连接到集群进行测试,代码里面写了3个Zookeeper地址。
zk_hosts = '192.168.31.140:2181,192.168.31.141:2181,192.168.31.142:2181'
执行写入程序,从下面的网络连接可以看到,我们虽然写了3个zk地址,但是实际上他只会随机连接其中一个,如果连接失败,他则重新选择一个进行连接(业务程序不受影响,从PID来看,他没有变化)。


我们前面介绍了zk的2个角色,leader是可读可写的,follower只读,如果我的客户端连接刚好连接到follower以后,他是如何来出来我的的写请求呢?下面都是修改了日志级别才看到的日志情况。
sed -i 's/INFO/DEBUG/g' logback.xml
连接leader 写日志
#leader日志
2025-04-19 15:39:38,194 [myid:] - DEBUG [ProcessThread(sid:2 cport:-1)::o.a.z.s.SessionTrackerImpl@309] - Checking session 0x200003287770000
2025-04-19 15:39:38,194 [myid:] - DEBUG [ProcessThread(sid:2 cport:-1)::o.a.z.s.ZooKeeperServer@2012] - Permission requested: 2
2025-04-19 15:39:38,194 [myid:] - DEBUG [ProcessThread(sid:2 cport:-1)::o.a.z.s.ZooKeeperServer@2013] - ACLs for node: [31,s{'world,'anyone}]
2025-04-19 15:39:38,194&nbs

最低0.47元/天 解锁文章
3443

被折叠的 条评论
为什么被折叠?



