zookeeper- 集群和 zab 协议
zookeeper 集群搭建
以一台虚拟机为例,搭建伪集群环境,一共搭建 3 个节点。节点对外提供服务端口号分别为 2181、2182、2183
以原始 zookeeper-版本号为基准,复制三份 zookeeper 文件,目录名称分别取名为 zookeeper2181、zookeeper2182、zookeeper2183
分别修改 zookeeper2181、zookeeper2182、zookeeper2183 服务器对应配置文件,主要修改内容:服务器对应的端口号、数据快照文件所在路径、集群配置信息(集群服务器编号、包括服务器 ip+zookeeper 之间的通信端口和 Leader 的选举端口)
在 dataDir(数据快照文件所在路径)指定的目录下,创建 myid 文件,然后在该文件添加上一步 server 配置的对应 集群服务器编号
分别启动三台服务器,检验集群状态
zab 协议
zab 协议 的全称是 Zookeeper Atomic Broadcast ,中文名为 zookeeper 原子广播。zookeeper 内部也是通过 zab 协议来保证分布式事务的最终一致性。
zab 广播模式工作原理,通过类似两阶段提交协议的方式解决数据一致性:
leader 从客户端收到一个写请求
leader 生成一个新的事务并为这个事务生成一个唯一的 ZXID
leader 将这个事务提议发送给所有的 follower 节点
follower 节点将收到的事务请求加入到历史队列(history queue)中,并发送 ack 给 leader
当 leader 收到大多数 follower 的 ack 消息,一般为半数以上节点,leader 就会发送 commit 请求
当 follower 收到 commit 请求时,从历史队列中将事务请求 commit
完成
zookeeperAPI 连接集群
其中:connectionString - zooKeeper 集合主机 sessionTimeout - 会话超时(以毫秒为单位)watcher - 实现“监视器”界面的对象。ZooKeeper 集合通过监视器对象返回连接状态
版权声明: 本文为 InfoQ 作者【zarmnosaj】的原创文章。
原文链接:【http://xie.infoq.cn/article/63210cad63f5c709c4ec3c29f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论