zookeeper的应用场景简介

zookeeper的中文意思是动物管理员的意思,同时也是一个开放源代码的分布式协调服务,zookeeper的设计目标是将那些复杂且容易出错的分布式一致性
服务封装起来,构成一个搞笑可靠的原语集,并以一系列简单易用的接口提供给用户使用。zookeeper是一个典型的分布式数据一致性的解决方案。
zookeeper可以保证如下分布式一致性特性
1.顺序一致性
这里的顺序一致性书中讲述的比较简单,那么怎么理解顺序一致性呢?顺序一致性说的是同一个客户端提交到zookeeper的事务请求不管zookeeper服务器端
怎么变化选举其follower节点与Leader节点会严格按照其客户端提交的读写顺序执行,联想到同一个客户端在服务器上其实可能使用了多核技术和多线程等技术,这样的话程序执行的顺序和结果可能有很多组合,也就是说程序的正常执行顺序可能会被打乱,客户端自己无法保证程序按预期顺序执行,因此zookeeper保证了顺序一致性的情况下,由客户端决定是什么样的顺序,由zookeeper保证这样的顺序不被打乱。
2.原子性
这里的原子性跟数据库的原子性类似,客户端提交的某个事务(请求)在zookeeper集群中要么保存要么回滚,不存在某些zookeeper服务器保留了这个事务,而另外一些服务器不保留这个事务。原子性的特性通过zookeeper的原子广播协议实现,同时也是后面几大特性的基础,保证了zookeeper本身存储的元数据在整体上是一致一样的。
3.单一视图
正是由于原子性和zookeeper实现的ZAB原子广播协议,让客户端连接任意一台zookeeper服务器都可以获取服务端的完整的数据模型。
4.可靠性
可靠性一方面也承担着可用性,也就是说从前面三个特性来说都描述了一种可靠性和可用性,可靠性本身来说就是我提交事务,写数据成功之后可以不用管了,其他客户端一定可以看到提交的事务效果。
5.实时性
这里的实时性其实是对于客户端来说的,也就是说客户端的提交的事务请求一旦处理其他客户端都可以很快看到,但是zookeeper也无法保证准实时性,因为zk集群之间也有一定延迟,做数据复制。但是zookeeper可以保证在一定的时间段内,客户端可以读到最终一致的数据状态。

那zookeeper可以帮忙实现哪些功能呢?

一、数据发布/订阅
数据发布/订阅,就是所说的配置中心,顾名思义就是发布者将数据发布到zookeeper的一个或者多个节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的。实现配置信息的集中式管理和数据的动态更新。zookeeper采用的是推拉相结合的方式,服务端向相应的客户端发送Watcher事件通知,客户端主动到服务端获取最新的数据。

二、负载均衡
zookeeper中存储集群的IP和端口号,服务注册方和服务消费方均需要这些数据,
如何进行负载均衡则需要应用系统自己去负责,这里的好处就在于不需要手动去
调整大量IP,端口号和域名了。

三、命名服务
命名服务是分布式系统最基本的公共服务之一。在分布式系统中,被命名的实体通常可以
统称它们为名字(name),其中较为常见的就是一些分布式服务框架(如RPC,RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据指定名字来获取资源的实体,服务地址和提供者的信息等。zookeeper提供的命名服务功能与JNDI技术有相似的地方,都能够帮助应用系统通过一个资源引用的方式来实现对资源的定位与使用。

四、分布式协调/通知
分布式协调/通知服务是分布式系统中不可缺少的一个环境,是将不同的分布式组件有机结合起来的关键所在。例如分布式事务的处理,机器之间的相互协调调用等。引入一个协调者便于将分布式协调的职责从应用中分离出来,从而可以大大减少系统之间的额耦合性。能够显著提高系统的可扩展性。zookeeper中特有的watcher注册与异步通知机制,能够很好的实现分布式环境下不同机器,甚至是不同系统之间的协调与通知,从而实现对数据变更的实时处理。

五、集群管理
集群管理包括集群监控与集群控制两大块,前者侧重于对集群运行时状态的收集
,后者则是对集群进行操作与控制。通常我们希望知道当前集群中究竟有多少机器在工作;
对集群中每台机器的运行时状态进行数据收集;
对集群中的机器进行上下线操作。
通过zookeeper的watcher注册监听机制进行通知,利用临时节点和会话机制可以实现集群机器存活性监控的系统。

六、Master选举
Master选举是一个在分布式系统中非常常见的应用场景。在分布式系统中,Master往往用来协调集群中其他系统单元,具有对分布式系统状态变更的决定权,比如读写分离的应用场景,客户端的写请求往往是由Master来处理的。笔者读到的书里提到的更复杂的场景是指定一台机器作为一个运算逻辑的单元作为Master运行,然后把结果进行
持久化,其他机器进行同步。这里选举Master的原理是每个机器向zookeeper中创建一个临时节点,只有一个客户端能创建成功。

七、分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。其中一种场景就是数据库的锁会消耗一些性能,zookeeper通过创建临时节点与watcher监听通知机制可以实现。
可以通过一定的组合实现排他锁,共享锁,读写锁等。

八、分布式队列
zookeeper可以实现FIFO的队列,所有客户端向一个节点下创建顺序性临时节点,通过监听通知机制即可实现先进先出的队列功能。

发布了172 篇原创文章 · 获赞 74 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/u010504064/article/details/104300143