鸟瞰Zookeeper Service
摘自《apache zookeeper essentials》
正如您所知道的,Apache ZooKeeper
是给分布式应用(distributed application
)提供协调服务(coordination service
)的。目的就是为了解决分布式应用中组件间协调等相关困难的问题。它确实暴露了一些强大的原始接口,应用程序可以通过实现ZooKeeper APIs
去解决分布式同步,集群配置管理和组成员(group memberships
)等等问题
ZooKeeper它本身就是一个复制性(replicated
)的,分布式的系统应用,意图就是像服务一样运行(run as service
),就像我们运行DNS或者是其他集中化服务(centralized service
)方式一样,如图:
图片来自( http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html),可以看到ZooKeeper service
在运行的时候会发生一系列的复制,客户端可以连接ZooKeeper service
内部中的任一一台服务器,通过TCP连接的方式连接,并不间断的发送心跳(sending heartbeats
)检测
这个
ZooKeeper service
整体内部的成员会相互感知状态(aware of each other's state
),我指的是内存中的当前状态、事务日志(transaction log
)和由组成集合的单个主机在本地数据存储中以持久的方式存储服务状态的时间点副本。ZooKeeper
是一个高可用的服务这点尤为重要,只要大多数服务器可用,服务总是可用