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客户端处理过程:解析→打散→形成环形地址列表队列

posted @ 2021-01-31 09:32  qianbuhan  阅读(98)  评论(0)    收藏  举报