说明:分布式应用程序协调服务
设计:基于层次型的目录树的数据结构,所有节点都叫做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
本文出自 “塞上名猪” 博客,请务必保留此出处http://zuohao1990.blog.51cto.com/6057850/1732980
原文:http://zuohao1990.blog.51cto.com/6057850/1732980