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

相关推荐
言之。1 天前
Apache ZooKeeper 核心技术全解(面试+实战版)
zookeeper·面试·apache
czlczl200209254 天前
Zookeeper原理
分布式·zookeeper·云原生
czlczl200209254 天前
KRaft原理
java·zookeeper
白驹过隙不负青春4 天前
Zookeeper版本升级
分布式·zookeeper·云原生
java1234_小锋5 天前
Java高频面试题:RocketMQ有哪些使用场景?
java·zookeeper·java-zookeeper
拦路雨g5 天前
Duboo配置zookeeper账号密码认证链接
分布式·zookeeper·云原生
人间打气筒(Ada)6 天前
go实战案例:如何基于 Conul 给微服务添加服务注册与发现?
开发语言·微服务·zookeeper·golang·kubernetes·etcd·consul
一叶飘零_sweeeet8 天前
分布式协调双雄深度拆解:ZooKeeper 与 Nacos 从底层原理到生产实战全指南
分布式·zookeeper·nacos
Volunteer Technology10 天前
zookeeper基础应用与实战二
分布式·zookeeper·云原生
星辰_mya13 天前
ZooKeeper 分布式锁:强一致性下的“排队”哲学
分布式·zookeeper·云原生·面试·分布式锁