《Zookeeper》源码分析(十一)之选举通信网络辅助类

目录

Listener

Listener用于管理服务器的选举端口。

数据结构

构造函数

run()

Listener的主要工作是创建一系列的ListenerHandler并将他们投放到线程池中等待执行,在第1步中如果想要开启多个地址:

  1. 启动的时候添加java参数-Dzookeeper.multiAddress.enabled=true
  2. 在配置文件的服务器地址添加多个端口,如server.1=localhost:2888:3888|localhost:2891:3891

如果按照这个配置,那么服务器会开启3888和3891两个端口用于选举。

ListenerHandler

数据结构

run()

ListenerHandler的工作主要是监听来自对方服务器的连接请求,一旦监听到连接请求则转交给QuorumCnxManager处理。

SendWorker

两个服务器之间一旦建立连接,就会根据sid创建一个对应的SendWorker,用于后续的选举信息发送。

数据结构

构造函数

run()

SendWorker 的工作是从QuorumCnxManager.queueSendMap队列中获取待发送的信息发送给目标服务器。

RecvWorker

RecvWorker不断地从TCP连接中读取消息并存放到QuorumCnxManager.recvQueue中。

数据结构

run()

至此,关于zookeeper选举期间的网络通信到此为止。

相关推荐
Hoking2 天前
Kafka集群部署(docker容器方式)SASL认证(zookeeper)
docker·zookeeper·kafka
一弓虽2 天前
zookeeper 学习
分布式·学习·zookeeper
viperrrrrrrrrr72 天前
大数据学习(130)-zookeeper
大数据·学习·zookeeper
darin_ฅ( ̳• ◡ • ̳)ฅ12 天前
Linux环境-通过命令查看zookeeper注册的服务
linux·zookeeper
UCoding3 天前
我们来学zookeeper -- 集群搭建
分布式·zookeeper
bigdata-rookie8 天前
kafka SASL/PLAIN 认证及 ACL 权限控制
大数据·运维·服务器·分布式·zookeeper·kafka
一切顺势而行10 天前
zookeeper 操作总结
分布式·zookeeper·云原生
兮动人10 天前
ZooKeeper 命令操作
分布式·zookeeper·zookeeper 命令操作
蒂法就是我11 天前
ZAB 和 RAFT分别是什么?它们的区别是什么?
大数据·分布式·zookeeper·高性能
master-dragon14 天前
分布式锁总结
redis·分布式·zookeeper