作为开启分布式架构的基石,除了必会还有的选么   

自己的一些理解,有错误的话请一定要给予指正!

一、是什么?

分布式数据一致性的解决方案。

二、有什么用

数据的发布/订阅(配置中心)   负载均衡(dubbo利用了zookeeper机制实现负载均衡) 、命名服务、

master选举(kafka、hadoop、hbase)、分布式队列、分布式锁。

zookeeper入门知识

1.CAP理论和BASE理论

参考文献: http://www.jdon.com/bigdata/how-to-understand-cap.html

 分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:
● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
● 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。分区容错性主要是考虑到网络故障时系统的处理.
关于CA冲突的理解:C 要求备份完才返回,保证数据一致(有故障则失败),而A不考虑数据同步的情况,会导致数据出现脏数据
base理论是在cap理论上升级,ba 表示基本可用, s表示soft-state,指的是  在基于client-server模式的系统中,server端有状态,即可以知道当前节点的同步情况.e指的是最终一致性(最终同步)
2.zookeeper的数据模型
树形结构 znode(节点),可被监听,且名字同级唯一,
节点类型分为:
 PERSISTENT(持久节点,服务断开任然存在)
PERSISTENT_SEQUENTIAL(例如:持久序列/test0000000019 即有序持久节点)
EPHEMERAL(临时节点,服务断开,节点消失)
EPHEMERAL_SEQUENTIAL(临时有序节点)
3.zookeeper 特性
3.1 顺序一致性,

从同一个客户端发起的事务请求(增删改),最终会严格按照顺序被应用到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权利还大.(代码即人生).

 
 

 

posted on 2018-05-01 23:17  爱不死  阅读(171)  评论(0编辑  收藏  举报