`

Zookeeper简介

阅读更多

Zookeeper简介:

 

1.什么是Zookeeper?

       ZK是一个高效的分布式协调服务,他暴露了一些公用服务,比如命名、配置管理,同步控制,群组服务等,我们可以使用ZK实现比如达成共识,集团管理,leader选举等。
 
2.设计目标
      简单:ZK中的namespace组织结构类似与标准的文件系统,通过这些共享的有层次的namespace来互相协调分布式中的多个进程,这些namespace由Znodes组成,ZK数据被保存在内存中,这也意味着ZK将可以达到较高的吞吐量/较低的延迟。
    ZK的核心目标就是高性能高可用严格有序的存取
     高性能标志着ZK可以使用在大规模分布式环境中;
     高可用标志着ZK避免单点故障,具有较强的容错能力;
     严格有序意味着客户端可以实现复杂的同步。
    复制:ZK的数据将会在ZK Cluster中的每台机器上协作复制(备份),构成ZK服务的机器必须能够互相感知对方。他们保持了一个内存视图状态,同事伴随着tnxlog和snapshot的持久存储。只要大部分server有效,那么ZK服务也是有效的。客户端只与一个ZKserver 建立连接,client通过建立的TCP连接来进行请求,响应,获取事件,发送心跳等。如果此TCP连接失效,Client将会尝试连接其他的ZKserver.
   全序性:对于每个update请求,ZK都会为生成唯一的zid来表示其事务的顺序,接下来的操作可以使用zid的顺序实现同步原语(队列)。
  高效快速:ZK在“读主导”的应用中表现的非常优秀。ZK应用可以运行在数台机器上,并且在read远大于write的场景中,是非常合适的,通常这个比例为10:1.
 
3.Zookeeper server 组成
    ZK server 根据其身份特性分为三种:leader,follower,Observer,其中follower和Observer又统称Learner(学习者)。
    leader : 负责客户端的writer类型请求.
    follower: 负责客户端的reader类型请求,参与leader选举等。
    Observer:特殊的“follower”,其可以接受客户端reader请求,但不参与选举。(扩容系统支持能力,提高了读取速度。因为它不接受任何同步的写入请求,只负责与leader同步数据)
 
4.数据模型
        1.每个子目录项如nameservice 都被称为Znode,这个znode是被它所在的路径唯一标识,如Server1这个znode的表识为/nameservice/server1
        2.znode可以有子节点目录,并且每个znode可以存储数据,注意EPHEMERAL类型的目录节点不能有子节点目录,
        3.znode是有版本的,每个znode中存储的数据可以有多个版本,也就是一个访问路径可以存储多份数据
       4.znode可以是临时节点,一旦创建这个znode的客户端与服务器失去联系,这个znode也将自动删除,ZK的客户端和服务器通信使用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为sesion,如果znode是临时节点,这个session失效,znode也就删除了
    5.znode的目录名可以自动编号,如App1已经存在,再创建的话,将会自动命名为App2.
    6.znode 可以被监控,包括这个目录节点中存储的数据修改,子节点目录的变化等,一旦变化可以通过设置监控的客户端,这个是ZK的核心特性,Zk的很多功能都是基于这个特性是实现的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics