关于paxos:MultiMasterPaxos3

Background200 行代码实现 paxos-kv 中介绍了一款十分简洁的分布式 kv 存储实现,它是基于 classic-paxos 实现分布式一致性。在 paxos 的直观解释 中咱们提到,每次写入,也就是每个 paxos 实例须要 2 轮 RPC 实现,效率低。 一个常见的优化就是 mutli-paxos(或 raft),用一次 RPC 对多个实例运行 phase-1;再对每个实例别离运行 phase-2,这样均摊开销是一次 RPC 实现一次写入。 它通过 phase-1 在集群中确定了一个惟一可写的 leader。这种设计在跨机房(或跨云)部署的环境中的缺点是:异地机房的写入就须要 2 个 RTT 能力实现: client → leader → followers → leader → client 也就是说它无奈做到异地多活,在 3 节点的场景里,有 2/3 的写入效率升高到 2 个 RTT。 本文从另一角度登程来解决异地多活的问题,3 机房部署的 3 正本集群中: 任一节点都可写,任一笔写入都能够严格在 1 个 RTT 内实现。这就是明天要介绍的 200 行代码实现 paxos-kv 的改进版: mmp-3: multi-master-paxos 3 正本实现。 同样 show me the code 的准则不能变:本文实现的 3 节点多活代码在: mmp3 异地多活是目前分布式畛域越来越被器重的一个问题,机房正在变成单机,单机房多机分布式在当初大规模部署的业务中曾经满足不了业务的可用性需要了。 简直所有线上环境部署的分布式存储, 都须要跨机房(或者跨云)的部署。而大家也踊跃在解决这些问题: ...

June 16, 2022 · 7 min · jiezi

关于paxos:可靠分布式系统-paxos-的直观解释

前言paxos 是什么? 在分布式系统中保障多正本数据强统一的算法。paxos 有啥用? 没有 paxos 的一堆机器, 叫做分布式;有 paxos 协同的一堆机器, 叫分布式系统。Google Chubby 的作者 Mike Burrows 说过: 这个世界上只有一种一致性算法,那就是Paxos …其余一致性算法, 都能够看做 paxos 在实现中的变体和扩大。另外一个常常被提及的分布式算法是【raft】,raft 的奉献在于把一致性算法落地。因为【Leslie Lamport】的实践很形象,要想把他的实践利用到事实中,还须要工程师齐全把握他的实践再增加工程必要的环节能力跑起来。常常有人问起 raft 和 paxos 的区别,或在实现中应该抉择哪个,在不理解 paxos 之前可能会有这种疑难。对于这个问题, 就像是被问及四则运算和算盘有什么区别,小店老板应该应用四则运算还是用算盘结账一样。记得 Leslie Lamport 2015 年时来了一次北京,那时会场上有人也问了老爷子 paxos 和 raft 有啥区别。老爷子过后给出的答复是:没听过 raft… raft 的外围能够认为是 multi paxos 的一个利用,对于要把握一致性算法的核心内容,从 paxos 动手,更容易去掉无关烦扰,中转问题实质。所以咱们抉择 paxos 作为理解一致性算法的入口,聊开了聊透了。网络上 raft 比 paxos 风行,因为 raft 的形容更直白一些,实际上 raft比 paxos 更简单。raft 具体的解释了“HOW”,短少“WHY”的解释。paxos 从根本上解释分明了“WHY”,但始终短少一份通俗易懂的教程,以至于没有被更宽泛的承受。所以就有了本文,一篇 paxos 入门教程,从根本的分布式中的复制的问题登程,通过逐渐解决和欠缺这几个问题,最初推导出 paxos 的算法。本文分为 2 个局部: 前 1 局部是分布式一致性问题的探讨和解决方案的逐步完善,用人话得出 paxos 算法的过程。如果只心愿了解 paxos 而不打算花太多工夫深刻细节, 只浏览这 1 局部就能够啦。第 2 局部是 paxos 算法和协定的严格形容。这部分能够作为 paxos 原 paper 的实现局部的概括。如果你打算实现本人的 paxos 或相似协定。须要认真理解协定细节,心愿这部分内容能够帮你节俭浏览原 paper 的工夫。图片是 xp 之前做过的 paxos 分享应用的 slides,在此基础上退出了更多口头解释的内容。分布式系统要解决的问题分布式系统要解决的问题 ...

May 13, 2022 · 4 min · jiezi