ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序能够基于它实现同步服务,配置维护和命名服务等。node
1.最终一致性:client不论链接到哪一个Server,展现给它都是同一个视图,这是zookeeper最重要的功能。
2.可靠性:具备简单、健壮、良好的性能,若是消息m被到一台服务器接受,那么它将被全部的服务器接受。
3.实时性:Zookeeper保证客户端将在一个时间间隔范围内得到服务器的更新信息,或者服务器失效的信息。但因为网络延时等缘由,Zookeeper不能保证两个客户端能同时获得刚更新的数据,若是须要最新数据,应该在读数据以前调用sync()接口。
4.等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每一个client都能有效的等待。
5.原子性:更新只能成功或者失败,没有中间状态。
6.顺序性:包括全局有序和偏序两种:全局有序是指若是在一台服务器上消息a在消息b前发布,则在全部Server上消息a都将在消息b前被发布;偏序是指若是一个消息b在消息a后被同一个发送者发布,a必将排在b前面。服务器
Zookeeper会维护一个具备层次关系的数据结构,它很是相似于一个标准的文件系统,如图所示:网络
Zookeeper这种数据结构有以下这些特色:数据结构
1)每一个子目录项如NameService都被称做为znode,这个znode是被它所在的路径惟一标识,如Server1这个znode的标识为/NameService/Server1。分布式