副问题[/!--empirenews.page--]
ZooKeeper 是大型漫衍式体系中靠得住的和谐体系,它以树状布局存储数据,以率领推举和信息同步机制担保了集群的高可用性,以变乱关照机制帮忙变乱订阅者实时捕捉数据的变革,可帮忙实现 Dubbo、Kafka 等架构。本文以 CentOS 和 Windows 为例,总结了 ZooKeeper 集群的陈设操纵,并以自带的剧本呼吁操纵其数据。

1.概述
ZooKeeper 是 Hadoop 的一个子项目,是大型漫衍式体系中靠得住的和谐体系。漫衍式应用措施以此实现更高级此外处事,可用于漫衍式体系的设置维护、名字处事、漫衍式同步、组处事等:
用于 Dubbo: 作为设置中心;
用于 Kafka: 作为 Broker/Producer/Consumer 共享的设置中心。
官网首页: https://zookeeper.apache.org/
官网文档: https://zookeeper.apache.org/doc/current/
1.1 ZAB协议

集群间通过 ZAB(ZooKeeper Atomic Broadcast)协议保持数据同等性,该协议包罗两个阶段:
1.1.1 率领推举(Leader Election)
推举出一个 Leader(全部写操纵传送给 Leader),其他呆板被称为 Follower;
当前 Leader 瓦解或失去大大都 Follower 后,会推举出新的 Leader;
1.1.2 信息同步(Atomic broadcast)
用于同步 Leader 与 Follower 之间的信息,担保数据同等。
1.2 内部道理
https://zookeeper.apache.org/doc/current/zookeeperOver.html
存储方法与尺度文件体系很是相似,每个节点称作 znode,自己包括数据,还可以拥有子节点。
客户端以TCP毗连一台节点,该节点妨碍时,客户端会切换至其他节点。
客户端可以订阅某些节点的变乱(watcher机制),当节点内容或其子节点有变革时,客户端会收到关照。

- 高机能:多读少写的环境下,速率很快;存储于内存中,并有耐久存储中的事宜日记和快照;
- 高可用性(无中心化布局可停止单点妨碍): 个体节点妨碍不影响整体行使;
- 监督机制: 客户端可以监督一个结点(node),当结点断开或有修改时,客户端会收到关照;
- 次序同等性: 来自客户端的更新将凭证它们发送的次序举办应用。
- 原子性: 担保数据完备、同等,更新乐成或失败,没有部门功效。
- 单体系映像: 无论处事器毗连到哪个处事器,客户端城市看到沟通的处事视图。
- 靠得住性: 一旦更新被应用,它将一向一连到客户包围更新。
- 实时性: 体系的客户概念在必然的时刻范畴内担保是最新的。
1.3 体系要求
ZooKeeper 以 Java 版本运行,Java 版本要求为 1.6+;
支持的操纵体系包罗: GNU/Linux, Solaris, FreeBSD, Windows。
2.Linux 下安装
https://zookeeper.apache.org/doc/current/zookeeperStarted.html
2.1 下载并解压(35M)
- # https://archive.apache.org/dist/zookeeper/
- # https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/
- wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
- sudo rm -rf /opt/zookeeper-3.4.11
- sudo tar -zxf zookeeper-3.4.11.tar.gz -C /opt
- sudo chown -R root:root /opt/zookeeper-3.4.11
- sudo rm -rf /opt/zookeeper-3.4.11/bin/*.cmd
2.2 配置情形变量
- ## sudo vim /etc/profile ## 全部用户有用
- export ZOOKEEPER_HOME=/opt/zookeeper-3.4.11
- export PATH=$PATH:$ZOOKEEPER_HOME/bin
文件生涯后,Linux用户从头登录后见效。
2.3 筹备目次与设置文件
- # sudo vim $ZOOKEEPER_HOME/bin/zkInit.sh
- # sudo -E sh $ZOOKEEPER_HOME/bin/zkInit.sh
- for INDEX in {1..3}; do
- sudo rm -rf $ZOOKEEPER_HOME/{data,logs}/$INDEX
- sudo mkdir -p $ZOOKEEPER_HOME/{data,logs}/$INDEX
- echo $INDEX | sudo tee $ZOOKEEPER_HOME/data/$INDEX/myid > /dev/null
-
- # zoo.cfg 参考: grep -v "^#" $ZOOKEEPER_HOME/conf/zoo_sample.cfg
- cat > $ZOOKEEPER_HOME/conf/zoo-$INDEX.cfg << EOF
- tickTime=2000 ## ZooKeeper 的最小时刻单元(ms)
- initLimit=10 ## 投票推举新 leader 的初始化时刻(以 tickTime 为单元)
- syncLimit=5 ## Leader 检测 Follower 可用性心跳的超时时刻(以 tickTime 为单元)
- clientPort=218$INDEX ## 客户端用来毗连 ZooKeeper 的端口
- dataDir=$ZOOKEEPER_HOME/data/$INDEX ## 数据目次(存储内存数据库快照)
- dataLogDir=$ZOOKEEPER_HOME/logs/$INDEX ## 日记目次(存储事宜日记)
- server.1=localhost:2281:2291
- server.2=localhost:2282:2292
- server.3=localhost:2283:2293
- EOF
- done
个中的 clientPort=218$INDEX 是提供应客户端毗连的端口(2181,2182,2183);
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|