导图社区 Zookeeper
这是一篇关于Zookeeper的思维导图 。 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
这是一篇关于Java集合的思维导图,包括了Collection和Map两个部分,Collectio 有List和set这两个部分。
Java数据类型完整详细版,包括基本类型(四类八种)、引用数据类型、数据类型转换、强制数据类型转换、数据类型转换等内容。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
Zookeeper
概述
ZooKeeper是一个开源分布式协调服务,用于管理大型主机。(服务治理) Zookeeper运行依赖Java环境 Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据。
提供的常见服务
命名服务
按名称标识集群中的节点。它类似于DNS,但仅对于节点。
配置管理
加入节点的最近的和最新的系统配置信息。
集群管理
实时地在集群和节点状态中加入/离开节点。
选举算法
选举一个节点作为协调目的的leader。
锁定和同步服务
在修改数据的同时锁定数据。此机制可帮助你在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。
高度可靠的数据注册表
即使在一个或几个节点关闭时也可以获得数据。
好处有那些:
简单的分布式协调过程
同步 - 服务器进程之间的相互排斥和协作。此过程有助于Apache HBase进行配置管理。
有序的消息
序列化- 根据特定规则对数据进行编码。确保应用程序运行一致。这种方法可以在MapReduce中用来协调队列以执行运行的线程。
可靠性
原子性 - 数据转移完全成功或完全失败,但没有事务是部分的
架构
Client(客户端)
客户端,我们的分布式应用集群中的一个节点,从服务器访问信息。对于特定的时间间隔,每个客户端向服务器发送消息以使服务器知道客户端是活跃的。 类似地,当客户端连接时,服务器发送确认码。如果连接的服务器没有响应,客户端会自动将消息重定向到另一个服务器。
Server(服务器)
服务器,我们的ZooKeeper总体中的一个节点,为客户端提供所有的服务。向客户端发送确认码以告知服务器是活跃的。
Ensemble
ZooKeeper服务器组。形成ensemble所需的最小节点数为3。
Leader
服务器节点,如果任何连接的节点失败,则执行自动恢复。Leader在服务启动时被选举。
Follower
跟随leader指令的服务器节点。
选举
只启动一台,没有follower和leader 只有两台,第一个启动的是follower,第二个启动时leader 三台启动,第一台和第三台是follower,第二台是leader.
选举方式
CLI操作
首先打开ZooKeeper服务器
zkServer.sh start
然后打开ZooKeeper客户端
zkCli.sh
命令基本语法
显示所有操作命令
help
查看当前znode中所包含的内容
ls path
ls /
创建节点znode
默认状态创建是持久节点
create /path
创建持久顺序节点
create -s /path
创建临时节点
create -e /path
创建子节点
Create /parentpath/childpath data
退出客户端
quit
获取数据内容
get /path
更新数据内容
set /path 数据
检查状态
stat /path
删除节点
删除空节点
delete /path
删除非空节点
deleteall /path
设置监听
get -w /path [监听数据变化](对指定节点进行针对性监视)
ls -w /a 监视,只会监视/a路径内部的子节点变化
get -w /a/b 监视,只会监视/b子节点变化,/a父节点的变化监视不到
监视器是”一次性”的
客户端连接指定服务器
使用zkCli.sh默认连接是本机的zk服务
使用命令:zkCli.sh -server ip:端口 连接指定zookeeper服务
ZK的Java-API
分布式应用
单个或几个系统的故障不会使整个系统出现故障。不会出现单点故障
可拓展性
可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。
透明性
隐藏系统的复杂性,并将其显示为单个实体/应用程序。