本文最后更新于:2023年12月5日 晚上
https://zookeeper.apache.org/
ZooKeeper 是一个分布式服务框架,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:命名服务、状态同步、配置中心、集群管理等
命名服务
命名服务是分布式系统最基本的公共服务之一。在分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等,这些我们都可以统称它们为名字(Name),其中较为常见的就是一些分布式服务框架(如 RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据指定名字来获取资源的实体、服务地址和提供者的信息等
状态同步
每个节点除了存储数据内容和 node 节点状态信息之外,还存储了已经注册的 APP 的状态信息,当有些节点或 APP 不可用,就将当前状态同步给其他服务
配置中心
现在我们大多数应用都是采用的是分布式开发的应用,搭建到不同的服务器上,可以使用 ZooKeeper 来实现配置中心,ZooKeeper 采用的是推拉相结合的方式: 客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应的客户端发送 Watcher 事件通知,客户端接收到这个消息通知后,需要主动到服务端获取最新的数据
集群管理
所谓集群管理,包括 集群监控 与 集群控制 两部分,前者侧重对集群运行时状态的收集,后者则是对集群进行操作与控制
- 客户端如果对 ZooKeepe 的一个数据节点注册 Watcher 监听,那么当该数据节点的内容或是其子节点列表发生变更时,ZooKeeper 服务器就会向订阅的客户端发送变更通知
- 对在 ZooKeeper 上创建的临时节点,一旦客户端与服务器之间的会话失效,该临时节点也就被自动除
0、生产者启动
1、生产者注册至 zookeeper
2、消费者启动并订阅频道
3、zookeeper 通知消费者事件
4、消费者调用生产者
5、监控中心负责统计和监控服务状态
ZooKeeper 单机安装
ZooKeeper 依赖 Java 环境,要求 JDK1.7 及以上
配置 java 环境
部署 ZooKeeper
官网下载地址:https://archive.apache.org/dist/zookeeper/
注意,要下载带 bin 的包,不带 bin 的只是源码包,不包含必要的 jar 包
验证 Zookeeper 状态
ZooKeeper 集群简介
集群架构:
集群角色:
Zookeeper 集群部署
整个集群中只要有超过集群数量一半的 zookeeper 工作只正常的,那么整个集群对外就是可用的
各个节点安装 zookeeper,参考上面单机部署,但是先不要启动
各个节点创建数据目录
各个节点配置文件
集群 id
启动 zookeeper
验证 Zookeeper 状态
zookeeper 集群选举过程
节点角色状态:
选举 ID:
zookeeper 数据增删改查
任意一台 zookeeper 节点进行以下操作:
zookeeper 客户端 ZooInspector
Linux:https://github.com/zzhang5/zooinspector
Windows:https://www.cnblogs.com/weiyiming007/p/11951591.html
- 下载、解压、双击
build/zookeeper-dev-ZooInspector.jar
- 连接成功