Zookeeper
1、分布式系统脑裂
在一个分布式系统中,不同服务器获得了相互冲突的数据信息或者执行指令,导致整个集群陷入混乱,数据损坏,称为分布式系统脑裂。
2、数据库主主备份
![](https://static001.geekbang.org/infoq/85/859df7a3d39ea2e76eca241579444be9.png)
3、分布式一致性算法Paxos
有三个角色: Proposer、Acceptor、Leaner
![](https://static001.geekbang.org/infoq/95/9517ac5e9be76848ef1f6a78f194cbbe.png)
分为三个阶段:Prepare阶段 、Accept阶段、Learn阶段。
Prepare阶段:Proposer向Acceptors发出Prepare请求,Acceptors针对收到的Proposer请求进行Promise承诺;
Accept阶段:Proposer收到多数Acceptors承诺的Promise后,向Acceptors发出Proposer请求,Acceptors针对收到的Propose请求进行Accept处理。
Learn阶段:Proposer在收到多数Acceptors的Accept之后,标志着本次Accept成功,决议形成,将形成的决议发送给所有Learners。
![](https://static001.geekbang.org/infoq/d0/d04eb104f6671bdfd4aa39f42d7c9cdb.png)
Proposer生成全局唯一且递增的Proposal ID(也可以使用时间戳加Server ID),向所有Acceptors发送Prepare请求,这里无需携带提案内容,只携带Proposal ID即可。
Acceptors收到Prepare和Propose请求后,将作出如下判断:
不在接受Proposal ID小于等于当前请求的Prepare请求。
不在接受Proposal ID小于当前请求的Prepare请求。
4、Zookerper架构
![](https://static001.geekbang.org/infoq/ad/ad4544a4a53b89a63ddffd90e9ebd065.png)
5、ZAB协议
![](https://static001.geekbang.org/infoq/62/62b3997073235da22336c461d1e4a0c3.png)
![](https://static001.geekbang.org/infoq/e8/e8d842e5b159585fe2cfc68ccdb3b5bc.png)
6、ZK的树状记录结构
![](https://static001.geekbang.org/infoq/1a/1ae739d9a68400dd0efd05ee49242e9c.png)
7、选master
![](https://static001.geekbang.org/infoq/ac/ac20ad3317393bdea0b4d1dc5164d3b0.png)
评论