zookeeper 集群架构解析
1.ZooKeeper总体架构
zk 客户端库使用 zk服务。 zk客户端负责和 zk集群的交互。
zk集群可以有两种模式:standalone(有一个独立运行的znode) 模式和 quorum (多个znode)模式。
2.Session
zk客户端库和 zk集群中的节点创建一个 session。客户端可主动关闭 session。如果 zk节点没有在 session 关联的 timeout 时间内收到客户端的数据的话, zk节点也会关闭session 。另外 zk客户端库如果发现连接的 zk出错,会自动的和其他 zk节点建立连接。
3.Quorum模式
Quorum模式的集群包含多个 zk节点。 如:下图的 ZooKeeper 集群有 3 个节 点,其中节点 1 是 leader 节点,节点 2 和节点 3 是 follower 节点。 leader 节点可以处理读写请求, follower 只可以处理读请求。 follower 在接到写请求时会把写请求转发给leader来处理。
quorum模式的数据一致性
• 可线性化(Linearizable)写入:先到达 leader 的写请求会被先处理,leader 决定写请求 的执行顺序。
• 客户端 FIFO 顺序:来自给定客户端的请求按照发送顺序执行。
☆☆☆本篇文章图片来源于极客学院的视频学习讲解。