《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选举期间的网络通信到此为止。

相关推荐
9091932218 小时前
SQL关键词标签在数据分析中的应用与实践
zookeeper
小马爱打代码12 小时前
zookeeper:一致性原理和算法
分布式·zookeeper·云原生
小马爱打代码14 小时前
zookeeper:架构原理和使用场景
分布式·zookeeper·架构
thginWalker1 天前
ZooKeeper源码分析与实战-模块五:原理篇
zookeeper
thginWalker1 天前
ZooKeeper源码分析与实战-模块四:实战篇
zookeeper
唐僧洗头爱飘柔95274 天前
【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
spring cloud·微服务·zookeeper·eureka·服务发现·集群部署·服务注册
new_daimond10 天前
Zookeeper 技术详细介绍
分布式·zookeeper·云原生
Vahala0623-孔勇10 天前
分布式锁巅峰对决:Redis RedLock vs ZooKeeper临时节点——Redission看门狗如何破解续期困局
redis·分布式·zookeeper
伞啊伞11 天前
ZooKeeper与Kafka分布式:从基础原理到集群部署
分布式·zookeeper·kafka
我好饿111 天前
zookeeper+kafka
分布式·zookeeper·kafka