zookeeper

    说明:分布式应用程序协调服务

    设计:基于层次型的目录树的数据结构,所有节点都叫做znode,可以包含子znode,同时可以包含数据

    功能:配置管理,服务治理

在分布式系统中,通常需要对多个服务器上应用系统的配置信息进行统一管理,zookeeper的配置管理功能就体现在这里。将配置信息保存在zookeeper的某个目录节点中,然后将所有需要修改的应用机器监控配置信息的状态,一旦配置信息发生变化,每台应用机器都会收到zookeeper的通知,然后从zookeeper获取新的配置信息到系统中。

    说明:

        zookeeper可以简单的分为两类:leader(唯一)和follower(多个)。leader和follower是相互通信的,zk的数据都是在内存中的,这就保证了它的访问速度,在磁盘中也会有一个备份。如果leader挂了,zk集群会重新选举,在以毫秒级别的速度选出新的leader,除非有一半以上节点都挂了zk服务才会不可用。

    原理:

    数据读写:

        写:当客户端发来写请求时,会指定zk集群中节点,如果是follower接受请求,会将请求转发给leader,leader通过Zab协议进行原子广播,使所有节点都写入数据(内存同步及磁盘更新),最后zk service将响应回传给client。

        读:由于写数据已经使得数据得到了统一,所有读可以在任意一台zk节点上。但是写的时候并不是保证所有节点完成才响应,而是有一半以上完成,所以在读的时候可以获取的不是最新节点信息,可以通过sync()解决。


        注意:通过zk UI等用户界面管理配置时,需要留意空格,隐藏在行末的空格可能会影响读取



参考:http://cailin.iteye.com/blog/2014486

http://blog.chinaunix.net/uid-13875633-id-4551483.html


你可能感兴趣的:(zookeeper,zk)