Last updated
Last updated
zookeeper是一个为分布式应用所设计的分布式的、开源的协调服务。它提供了一项基本服务:分布式锁服务,同时也提供了分布式应用数据的维护和管理机制,包括统一命名服务、状态同步服务、集群管理、分布式消息队列、分布式应用配置项的管理等。zookeeper支持独立安装以及集群部署。
zookeeper官方网站:http://zookeeper.apache.org/
zookeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
Zookeeper集群主要角色有Server和Client,其中Server分为Leader、Follower和Observer三个角色:
Leader:领导者角色,主要负责投票的发起和决议,以及更新系统状态
Follower:跟随者角色,用于接收客户请求并向客户端返回结果,在选主过程中参与投票
Observer:Observer可以接收客户端连接,将写请求转发给leader。但observer不参加投票,只同步leader状态。observer的目的是为了扩展系统,提高读取速度。
Client:客户端,用于向zk发起请求。
zk集群中每个server在内存中存储一份数据。在zk启动时,将从实例中选举一个server作为leader,leader负责处理数据更新等操作,当且仅当大多数server在内存中成功修改数据,才认为数据修改成功。
zk写的流程:
apache-zookeeper-3.8.0-bin.tar.gz
online env
ls 查询当前节点列表(/是根节点)path:路径(ls /)
create 创建新的 Znode 节点(create /node_1 "test")
get 查看节点数据 path:路径(get /node_1)
stat 查看数据节点的状态信息 path:路径
set 设置数据节点的值,path:路径,data:数据,可以带版本号,可以不带版本号(set /node_1 "11114")
delete 删除 node_1_3节点 (delete /node_1/node_1_3)
rmr 循环删除有子节点的父节点,例如删除 node_1 (rmr /node_1)
提示
单启用zookeeper的SASL认证,并不能阻止客户端的匿名连接,仍需要防火墙来配合阻断。匿名连接是zookeeper身份认证的一种方式,是zookeeper有意设计的。