Golang - ZooKeeper
一、概念
ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper 的 Java 客户端都有哪些?
- Zookeeper 自带的 zkclient
-
Apache 开源的 Curator:实际项目中,采用 Curator 居多。因为,功能更加强大。
1、工作机制
2、特点
3、数据结构
4、应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。
5、部署方式
1)、ZooKeeper的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?
(1)部署方式:单机模式、集群模式
(2)角色:Leader和Follower
(3)集群最少需要机器数:3台(半数机制:集群中半数以上机器存活,集群可用。所以zk适合安装奇数台服务器)
Zookeeper 集群,是一个由多个 Server 组成,一个 Leader,多个 Follower。(这个不同于我们常见的 Master/Slave 模式)Leader 为客户端服务器提供读写服务,除了 Leader 外其他的机器只能提供读服务。每个 Server 保存一份数据副本全数据一致,分布式读 Follower ,写由 Leader 实施更新请求转发,由 Leader 实施更新请求顺序进行,来自同一个 Client 的更新请求按其发送顺序依次执行数据更新原子性,一次数据更新要么成功,要么失败。
全局唯一数据视图,Client 无论连接到哪个 Server,数据视图都是一致的实时性,在一定事件范围内,Client 能读到最新数据。
2)、ZooKeeper 集群中个服务器之间是怎样通信的?
Leader 服务器会和每一个 Follower/Observer 服务器都建立 TCP 连接,同时为每个 Follower/Observer 都创建一个叫做 LearnerHandler 的实体。
- LearnerHandler 主要负责 Leader 和 Follower/Observer 之间的网络通讯,包括数据同步,请求转发和 Proposal 提议的投票等。
- Leader 服务器保存了所有 Follower/Observer 的 LearnerHandler。
3)、Zookeeper 的选举算法有两种:
- LeaderElection : 使用 basic paxos 算法。
- FastLeaderElection :使用 fast paxos 算法。系统默认的选举算法为 fast paxos 。最终在 Zookeeper 3.4.0 版本之后,只保留 FastLeaderElection 版本。
4)、Zookeeper 选举流程(fast paxos)
- FastLeaderElection 成了Zookeeper默认的Leader选举算法。
- FastLeaderElection 是标准的 Fast Paxos 的实现。它首先向所有 Server 提议自己要成为 Leader ,当其它 Server 收到提议以后,解决 epoch 和 zxid 的冲突,并接受对方的提议,然后向对方发送接受提议完成的消息。重复这个流程,最后一定能选举出Leader。
- FastLeaderElection 算法通过异步的通信方式来收集其它节点的选票,同时在分析选票时又根据投票者的当前状态来作不同的处理,以加快 Leader 的选举进程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」