zookeeper是一个开源的分布式协调服务,可以用来解决分布式数据一致性的问题。
数据的发布/订阅(配置中心:disconf)、负载均衡(dubbo利用了zookeeper机制实现负载均衡) 、命名服务、master选举(kafka、hadoop、hbase)、分布式队列、分布式锁
顺序一致性 :从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中
原子性:所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、要么全都不应用
可靠性:一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的
实时性:一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态(zookeeper仅仅保证在一定时间内,近实时)
zookeeper集群中有三种角色:leader,follower,observer
leader: 接受follower和observer的提案请求并统一发起投票,与所有follower,observer进行数据交互,更新系统状态。
follwer: 处理客户端读请求,将写请求转发给leader。参与选举,处理leader的提议,在leader提交提议时,在本地也进行提交。
observer: 处理客户端读请求,将写请求转发给leader。不参与选举(降低投票的成本),只同步leader的状态。目的是提高扩展性和读取速度。
原文:https://www.cnblogs.com/dream2true/p/10903089.html