Zookeeper 集群
特点
- 顺序一致性(按顺序执行命令)
- 原子性(要么都成功,要么都失败)
- 可靠性(在一个服务器上修改了,其他服务器也修改了)
- 实时性(有一定的延迟)
- 角色轮换避免单点故障
角色
通过 stat 命令可以查看服务器角色。
- Leader:集群工作机制中的核心
- 任务的调度:集群内部个服务器的调度者(管理 follower,数据同步)
- 事务:事务请求的唯一调度和处理者,保证集群事务处理的顺序性
- Follower:集群工作机制中的跟随者
- 处理非事务请求,转发事务请求给 Leader
- 参与事务请求 proposal 投票
- 参与 Leader 选举投票
- Observer:观察者
- 处理非事务请求,转发事务请求给Leader
- 提高集群非事务处理能力
Observer 与 Follower 的区别:有读请求,但不做任何投票处理。
配置
zoo.cfg
集群机器的 zoo.cfg 文件是一致的。
clientPort=2181
initLimit=5
syncLimit=2
peerType=observer
server.ID1=IP1:2888:3888
server.ID2=IP2:2888:3888
server.ID3=IP3:nnnn:mmmm:observer
- IDn: server id,集群中机器序号
- IPn: 机器ip地址
- nnnn: 同步端口
- mmmm: 选举端口
- observer: 是否为观察者
myid
在 data 目录下,创建一个名为 myid 的文件,在该文件的第一行写上一个数字,和 zoo.cfg 中当前机器的编号(IDn)对应上。
绝大多数服务器启动了(zkServer.sh start)之后,集群才能启动(zkServer.sh status)。
Java 客户端连接集群
ZkClient client = new ZkClient("host1,host2,host3,host4,host5");
Zk客户端处理过程:解析→打散→形成环形地址列表队列


浙公网安备 33010602011771号