zookeeper笔记

本文深入探讨了CAP理论及其在分布式系统中的应用,详细介绍了2PC、3PC、Paxos、ZAB等一致性协议的工作原理与优缺点,并对比了TCC等柔性事务机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《从PAXOS到ZOOKEEPER分布式一致性原理与实践》

CAP中,P是必然要满足的(否则分布式就没意义了),所以要在C和A中做选择和平衡了;

BASE是对CAP中一致性和可用性的权衡结果;
BASE核心思想是,即使无法做到强一致性,也可以用适当的方式达到最终一致性;
(ACID是强一致性;)
(最终一致性是一种特殊的弱一致性;)
(最终一致性存在5种变种:因果一致性、读己之所写、会话一致性、单调读一致性、单调写一致性;)

CAP的一致性有很多协议,如2PC、3PC、Paxos;
(绝大部分关系型数据库都是用2PC来完成分布式事务的;)

2PC的阶段一是投票阶段,表明是否要执行事务;
2PC的阶段二是事务执行或中断(回滚);(只要有一个反馈是NO,就不会执行事务;)
2PC中有协调者(一个)和参与者(多个);
2PC是一个强一致性算法;
2PC的优点:原理简单、实现方便;
2PC的缺点:同步阻塞、单点问题、脑裂(数据不一致)、太过保守;

3PC将2PC的阶段二进行了一分为二,最终形成CanCommit、PreCommit、doCommit三个阶段;
3PC的优点:与2PC相比,降低了参与者阻塞范围、出现单点故障也能继续达成一致;
3PC的缺点:当参与者接收到PreCommit消息之后,此时网络出现问题,无法阻止参与者提交事务,也会导致数据不一致;

拜占庭问题假设信道不可靠,会被篡改;实际假设不存在拜占庭问题;
(在异步系统和不可靠信道达到一致性是不可能的!)
(貌似不仅是分布式问题,也是信息安全和密码学的问题。。)

Paxos和拜占庭问题一样,也是Lamport提出的(Paxos是一个岛的名字);
Paxos论文在1990年以讲故事方式发表不被接受,在1998年重写后发表,又在2001年重写了一遍;(总共有3篇论文)
Paxos引入了‘过半’的概念,通俗点,就是‘少数服从多数’;
Paxos支持分布式节点角色之间的轮换,极大的避免了单点问题的出现,既解决了无限期等待的问题,也解决了‘脑裂’问题;

Paxos的一个工程应用是google的Chubby,一个分布式锁服务;(Chubby主要用于master选举)
(Chubby提供了分布式锁服务,而不是一致性协议的库;侵入性更小、也能便捷;)
(Chubby是强一致性;)

zk使用ZAB协议(zookeeper Atomic Broadcast);
zk是google Chubby的开源实现,由雅虎创建;
zk有leader、follower、observer三种角色;
(observer节点不参与选举;)
(leader提供读写服务,follower、observer只能提供读服务;)
zab协议包括消息广播和奔溃恢复;
zab对事务编号ZXID进行如下设计:低32位是一个递增的计数器(每个事务会加1),高32位是leader周期的epoch(每选举一个leader加1);
zab三个步骤或阶段:发现、同步、广播;
(正常情况一直在阶段三;)
(若leader奔溃,需要重新选举,则会进入阶段一;)

zab和paxos区别:
zab在paxos之上额外加了同步阶段;

https://en.wikipedia.org/wiki/Paxos_(computer_science)

满足ACID的事务的为钢性事务,满足BASE理论的为柔性事务?
柔性事务分为四种:两阶段型、补偿型、异步确保型、最大努力通知型;
TCC属于补偿型柔性事务,本质也是一个两阶段型事务,这与JTA是极为相似的,但是与JTA的不同点是,JTA属于资源层事务,而TCC是服务层事务;
https://my.oschina.net/fileoptions/blog/899991?utm_source=tool.lu

TCC是指try、confirm、cancel;

Paxos、ZAB、TCC哪个好?
TCC是专门的事务机制,Paxos、ZAB只是一致性协议?
(当然它们都满足BASE理论)

分布式事务一般使用2PC、3PC解决,而不是Paxos、ZAB(当然2PC、3PC都有问题);
TCC就是基于2PC的;

es内部自己实现了和zk类似的主节点选举和发现机制?
(es的zen和zk的zab类似?)
(es选举采用bully即霸道算法?发现采用zen?注意霸道算法比paxos简单很多!)
https://www.jianshu.com/p/9454ac19921d
https://www.2cto.com/kf/201709/681444.html
es也是过半原则的吗
https://www.jianshu.com/p/b21b42d02bd8
https://www.jianshu.com/p/8601bc17a270

有人认为zk的选举算法是paxos或fast paxos,有人认为不是,有争议!
见https://www.cnblogs.com/shenguanpu/p/4048660.html

zk的数据同步包括(7.9.5节):直接差异化同步、先回滚再差异化同步、仅回滚同步、全量同步;
(同步期间集群不可用;)

Learner负责leader和follower/observer之间的网络通信?包括同步、请求转发、投票等

第1,2,4章,6.1,7.6,7.7节也是重点;

《分布式系统概念与设计》
分布式涉及面比较广,它以计算机网络、密码学(网络安全)、操作系统、软件体系结构等课程为基础;
细分为分布式文件系统、分布式计算、分布式对象、分布式事务、分布式多媒体、分布式共享内存等;
(甚至还包括特定语言的知识和技术,如java的rmi、rpc、序列化;)
(注意,DSM或分布式共享内存,在spark博士论文也多次提到;)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值