zookeeper是一个开源的分布式协调服务中间件
zookeeper能做什么?
数据的发布/订阅(配置中心:disconf) 、 负载均衡(dubbo利用了zookeeper机制实现负载均衡) 、
命名服务、 master选举(kafka、hadoop、hbase)、分布式队列、分布式锁
zookeeper的特性:
顺序一致性:从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中
原子性:所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、要么全都不应用;
可靠性:一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的
实时性:一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内,近实时)
zookeeper集群, 包含三种角色: leader / follower /observer
observer 是一种特殊的zookeeper节点。可以帮助解决zookeeper的扩展性(如果大量客户端访问我们zookeeper集群,需要增加zookeeper集群机器数量。从而增加zookeeper集群的性能。 导致zookeeper写性能下降, zookeeper的数据变更需要半数以上服务器投票通过。造成网络消耗增加投票成本)
1. observer不参与投票。 只接收投票结果。
2. 不属于zookeeper的关键部位。