一、Zookeeper概念
一套分布式、高吞吐的分布式协调系统。他是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理的操作。
二、作用
1、配置管理
2、统一命名服务
3、分布式锁
4、负载均衡
5、主控服务器选举以及主从切换等
三、特点
1、最终一致性:为客户端展示同一个视图,这是zookeeper里面一个非常重要的功能。
2、可靠性:如果消息被一台服务器接收,那么他将被所有的服务器接收。
3、实时性:zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。leader上一定有最新数据。
4、独立性:各个client之间互不干预。
5、原子性:更新只能成功或者失败,没有中间状态。
6、顺序性:所有Server,同一消息发布顺序一致。根据leader接收其他Server发送过来的消息的时间,来保证顺序性。
四、工作原理
1、每个Server在内存中存储了一份数据,数据回落到磁盘当中。(通常保存元数据,定期将数据落到磁盘当中)。
2、zookeeper启动时,将会从示例中选举一个leader(根据paxos协议/算法)。
3、leader处理数据更新等操作。
4、一个更新操作成功,当且仅当大多数Server在内存中成功修改数据(超过半数)。
五、zookeeper的角色
leader follower observer(观察者,不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要