1、Zookeeper架构图

一、Zookeeper架构图

1、Zookeeper架构图_第1张图片

图的链接

二、要素说明

  1. 色块1:zk集群中的follower服务节点,物理体现为一个java进程
  2. 色块2:zk集群中的leader服务节点,物理体现为一个java进程
  3. 色块3:连接zk服务的客户端,物理体现为一个进程
  4. 色块4:保存在zk服务进程中java堆内存的 数据
  5. 色块5:写操作日志,物理体现为一个文件
  6. 色块6:保存zk服务进程中数据的一个快照文件,在zk服务进程重启时通过读取这个文件还原之前的内存数据

三、要素之间关系说明

zk server 与客户端关系

  1. zk server 包括follower,leader,observer角色的server
  2. 客户端与zk server 之间使用NIO进行连接,zk server之间使用BIO进行连接
  3. 一个客户端只能连接一个zk server
  4. 客户重新连接另外一个zk server时 会注册原来的watch事件到新连接的zk server
  5. 每台机器只能跟zk server 建立60(数量可配置)个连接,如果超过了会被拒绝
  6. zk server默认的2181端口是用于客户端连接的端口,另外两个端口是用于数据同步与leader选举,那说明 zk server 之间有两个BIO连接
  7. 所有类型的zk server 都可以执行读操作,只有leader角色的zk server 支持写操作
  8. follower 和 observer 接收到客户端的写操作,会把写操作请求转发给leader

zk server 内部

  1. 每个zk server内部实现了预写日志系统(WAL)
  2. 当有数据写入时,先把数据写入到操作日志(上图色块5)里
  3. 然后把数据写入内存中(上图色块4)
  4. 定时把内存数据 保存到快照文件中(上图色块6)
  5. zk server重启时,先读取快照数据恢复内存数据,再从日志中恢复未被保存到快照文件的数据

你可能感兴趣的:(图解zk,java,开发语言,zookeeper,大数据)