ZK简介

                            ZooKeeper: 分布式应用的分布式协调服务
   ZooKeeper是一个分布式的,开源的分布式协调服务。它公开了一系列原语可以帮助分布式服务实现更高层的同步,配置维护,分组和命名服务。它设计的易于编程,使用一个近似于文件系统目录结构树的数据结构。ZK可以运行在Java和同时具有Java,C绑定的环境中。
   协调服务众所周知是很难实现。它们很容易出错,例如竞争条件以及死锁。ZK的动机是缓解分布式应用从头实现协调服务的责任  
设计目标
  ZK简单:ZK允许分布式进程通过一个共享的近似于标准文件系统的层次命名空间相互协调。命名空间由数据寄存器组成-在ZK中称之为Znode,它近似于文件和目录。但又不同于典型的文件系统,Znode设计用来存储,ZK的数据保存在内存中,这就意味着ZK可以提供高吞吐量和低延迟的数据。
           ZK实现重视高性,高可用严格有序访问。ZK的性能方面一位置它可以在大型分布式系统中使用。可用性方面它可以从单点故障中恢复。严格有序意味着客户端可以实现复杂的同步原语。


ZK是可复制的:像分布式进程协调一样,ZK自身旨在通过称之为信号群的一系列主机进行复制。


 
  组成ZK服务的主机必须相互了解,他们在内存中保存图像装填,事务日志以及事务快照。只要大多数服务器可用ZK服务就可用。
  客户端连接单一的ZK服务器。客户端通过发送请求,获取响应,获取watch事件以及发送心跳维持TCP连接。如果和服务器的TCP连接断开,客户端将和其他的服务器建立建立连接。
  ZK有序:ZK对每一个更新加盖一份能够反映所有ZK事物顺序的数字戳。后续的操作可以通过顺序性实现更高层次的抽象,例如同步原语。


  ZK快:ZK在读主导的工作负载下特别快。ZK应用运行在数以千计的机器上,它读性能通常要好于写,读写比约为10:1.
 
 数据模型和层次命名空间
  ZK提供的命名空间很像一个标准的文件系统。名称是一个使用"/"分割的路径元素序列。ZK的每个节点的名称是通过路径确定。



 

猜你喜欢

转载自wujiu.iteye.com/blog/2222749