作为开启分布式架构的基石,除了必会还有的选么
自己的一些理解,有错误的话请一定要给予指正!
一、是什么?
分布式数据一致性的解决方案。
二、有什么用
数据的发布/订阅(配置中心) 、 负载均衡(dubbo利用了zookeeper机制实现负载均衡) 、命名服务、
master选举(kafka、hadoop、hbase)、分布式队列、分布式锁。
zookeeper入门知识
1.CAP理论和BASE理论
参考文献: http://www.jdon.com/bigdata/how-to-understand-cap.html
● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
EPHEMERAL(临时节点,服务断开,节点消失)
EPHEMERAL_SEQUENTIAL(临时有序节点)
从同一个客户端发起的事务请求(增删改),最终会严格按照顺序被应用到zookeeper中(队列,fifo)
3,2原子性
所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、
要么全都不应用
3.3可靠些
一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的
3.4实时性
一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内,近实时)
4.zab协议(角色,Paxos算法,选主过程)
参考文献:http://blog.jobbole.com/104985/
这一块恐怕要理解起来不是那么简单(源码级别)
zab主要是消息广播和崩溃恢复...
5.zookeeper 中的observe角色
这个比较特殊:https://blog.csdn.net/mayp1/article/details/52026797/
事务:对数据源进行了改变
observe用来提高系统读取的吞吐量,不参与事务(增删改)以及投票.
这也很正常,如果leader是皇帝,observe顶多算个监国,只能处理日常事情,不然岂不是比leader权利还大.(代码即人生).