【引言】
最近在研究开源库和国产数据库时,现阶段涉及到两个的方向:一个是
MySQL
的
InnoDB
Cluster
;一个是
OceanBase
,两者均用到
Paxos
算法来保障数据一致性。熟悉大数据的
亲都知道
zookeeper
通过实现分段提交协议(
zab
协议)来使得其具有强一致性和分区容
错性的特点,其大量用于解决分布式中间件在遇到脑裂时的主
-
备选举和数据恢复的功能。
Paxos
算法是个嘛,今天重点先初步学习下。
本文内容主要参考如下两篇文章,根据个人理解做了内容整合。
【参考
1
】
https://www.cnblogs.com/hugb/p/8955505.html
【参考
2
】
https://www.jianshu.com/p/910eb4e0909c
一、
先有个
Paxos
协议
/
算法重要性的认知:
Paxos
协议
/
算法是分布式系统中比较重要的协议,有多重要?
<
分布式系统的事务处理
>
:
Google Chubby
的作者
Mike Burrows
说过这个世界上只有一种一致性
算法,那就是
Paxos
,其它的算法都是残次品。
<
大规模分布式存储系统
>
:
理解了这两个分布式协议之后
(Paxos/2PC)
,学习其他分布式协议会变得
相当容易。
看着很狂对不对,狂就有其狂的资本,接着了解
Paxos
协议。
二、
Paxos
协议
/
算法的历史
Paxos
算法是莱斯利
·
兰伯特(
Leslie Lamport
,就是
LaTeX
中的
"La"
,此人现在在微软研
究院)于
1990
年提出的一种基于消息传递的一致性算法。这个算法被认为是类似算法中
最有效的。
从
20
世纪
80
年代起对于一致性算法的研究就没有停止过。节点通信存在两种模型:共享
内存(
Shared memory
,需要锁)和消息传递(
Messages passing
)。
Paxos
算法就是一种基于消息传递模型的一致性算法,不仅仅是分布式系统中,凡是多个
过程需要达成某种一致的场合都可以使用
Paxos
算法。
Paxos
算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场
景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操
作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需
要在每一条指令上执行一个
“
一致性算法
”
以保证每个节点看到的指令一致。
Paxos
算法适用场景:一台机器中多个进程
/
线程达成数据一致;分布式文件系统或分
评论