ZooKeeper概述

来源:互联网 发布:自动校对时间软件 编辑:程序博客网 时间:2024/05/21 06:49

高并发、大存储。

分布式:把一个计算任务分解成若干个计算单元,并且分派到若干台计算机上去执行计算,再将计算结果汇总。


ZooKeeper分布式协作规范。

ZooKeeper是源码开放的分布式协调服务。

ZooKeeper是一个高性能的分布式数据一致性解决方案,它将那些复杂的、容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并提供一些简单易用的接口供用户使用。


ZooKeeper分布式协调服务,解决数据分布式一致性问题:

1.顺序一致性:从一个客户端发起一个请求,最终会严格按照其发起的顺序被应用到ZK中。

2.原子性:所有事务请求的处理结果,在整个集群上的所有机器上的应用情况是一致的。

3.单一视图:无论客户端连接到哪个服务器,看到的服务端数据是一致的。

4.可靠性:一旦服务端成功的应用了一个事务并完成了对客户端的响应,这个事务所引起的服务端状态的变更会一直的保留下来,直到另外一个事务对它进行了修改。

5.实时性,ZK保证了在一段时间内,客户端最终一定能够从服务端读到数据。


ZooKeeper高性能:一个3台ZK集群,可以带到12-13W的QPS。


ZooKeeper典型应用

1.数据的发布与订阅:

即是将数据发布出来,另一方可以通过某种手段得到这些数据。

通常数据订阅有两种模式:推模式和拉模式。推模式就是服务端向客户端推送数据,拉模式就是客户端主动向服务端获取数据(通常是采用定时轮询的方式)。

ZK采用两种方法相结合:

发布者将数据发布到ZK集群节点上,订阅者通过一定的方式告诉服务器,我对哪个节点上的数据比较感兴趣,那么服务器在这个节点上的数据发生变化时,就通知客户端,客户端得到通知后去服务器取数据。

2.负载均衡:

                                  ->DB

 Client -> ZooKeeper  ->DB

                                 ->DB

3.命名服务:
提供名称的服务,例如数据库表格ID

4.分布式协调/通知

心跳检测

在分布式系统中,我们通常需要知道某台机器是否可用,传统的开发中,我们ping某个主机来实现。在ZK中,我们让所有的机器都注册一个临时节点,我们判断一个机器是否可用,我们只需要判断这个临时节点是否存在即可,不需要去连接相应的机器,降低了系统的复杂性。









0 0