八分钟了解动物园管理员
ZooKeeper 概述
ZooKeeper
是一个开源的分布式协调服务,ZooKeeper
框架最初是在“Yahoo!"
上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper
成为 Hadoop
,HBase
和其他分布式框架使用的有组织服务的标准。 例如,Apache HBase
使用 ZooKeeper
跟踪分布式数据的状态。ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
原语: 操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断。
ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
Zookeeper 一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心。 服务生产者将自己提供的服务注册到 Zookeeper
中心,服务的消费者在进行服务调用的时候先到 Zookeeper
中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。如下图所示,在 Dubbo
架构中 Zookeeper
就担任了注册中心这一角色。
特点
Zookeeper
:一个领导者(leader
),多个跟随者(follower
)组成的集群
集群中只要有半数以上的节点存活,Zookeeper
集群就能正常服务
全局数据一致:每个 Server
保存一份相同的数据副本,Client
无论连接到那个 Server
,数据都是一致的
更新请求顺序进行,来自同一个 Client
的更新请求按其发送顺序依次执行
数据更新原子性,一次数据更新要么成功,要么失败
实时性,在一定时间范围内,Client
能读到最新数据
数据结构
Zookeeper
数据模型的结构于Unix系统文件类似,整体上可以看成是一棵树,每个节点称作一个 ZNode
。每个 ZNode
默认只能存储 1MB
的数据,每个 ZNode
都可以通过其路径得到唯一标识。
应用场景
提供的服务包括:统一命名服务,统一配置管理,统一集群管理,服务器节点动态上下线,软负载均衡等。
统一命名服务
统一配置管理
服务器动态上下线
软负载均衡
来源:www.jianshu.com/p/c6c48ee5e…
我的微信公众号:Java架构师进阶编程
专注分享Java技术干货,期待你的关注!