文章目录
zookeeper 简介
什么是 zookeeper,干什么用的?
分布式协调服务,用于管理大型主机。zookeeper通过简单的架构和API解决服务管理问题。
集群和 节点
分布式应用正在运行的一组系统称为 集群,而在集群中运行的每台机器被称为节点。
分布式应用的一些挑战
分布式应用的挑战 竞争条件 -
两个或多个机器尝试执行特定任务,实际上只需在任意给定时间由单个机器完成。例如,共享资源只能在任意给定时间由单个机器修改。死锁 - 两个或多个操作等待彼此无限期完成。
不一致 - 数据的部分失败。
zk 提供的常见服务如下:
命名服务 - 按名称标识集群中的节点。它类似于DNS,但仅对于节点。
配置管理 - 加入节点的最近的和最新的系统配置信息。
集群管理 - 实时地在集群和节点状态中加入/离开节点。
选举算法 - 选举一个节点作为协调目的的leader。
锁定和同步服务 - 在修改数据的同时锁定数据。此机制可帮助你在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。
高度可靠的数据注册表 - 即使在一个或几个节点关闭时也可以获得数据。
zookeeper 基础
zookeeper 的层次命名空间
zk节点称为znode,每一个znode 由一个名称表示,并用路径(/)序列分隔。
config 和workers
config 命名空间用于管理集中式 管理配置,workers 命名空间用于命名。
在 config 命名空间下,每个znode最多可储存1MB的数据。这种结构的主要目的是存储同步数据并描述znode的元数据。此 结构称为zookeeper 数据模型。