开篇词、想成为分布式高手

你好,我是韩健,你叫我“老韩”就可以了。 在专栏开始之前,我想先和你聊聊自己的经历,加深彼此的了解。在重庆大学的软件工程专业毕业之后,我就开始和分布式系统打交道,至今有十多年了。早期,我接触了电信级分布式系统,比如内核态HA Cluster,现在是互...

分布式协议与算法实战

开篇词、分布式协议与算法应该这么学

你好,我是韩健。 在正式开始学习这门课之前,我想先和你聊一聊怎么学,因为掌握了学习路径、建立了全局观之后,你才能达到事半功倍的效果。 我们都知道,分布式协议和算法(为了不啰嗦,咱们下文都简称分布式算法)很实用、也很火,很多后端工程师在面试的时候,都会...

分布式协议与算法实战

1、拜占庭将军问题:有叛徒的情况下,如何才能达成共识?

你好,我是韩健。 在日常工作中,我常听到有人吐槽“没看懂拜占庭将军问题”“中文的文章看不懂,英文论文更看不下去”。想必你也跟他们一样,有类似的感受。 在我看来,拜占庭将军问题(The Byzantine Generals Problem),它其实是借...

分布式协议与算法实战

2、CAP理论:分布式系统的PH试纸,用它来测酸碱度

你好,我是韩健。 很多同学可能都有这样的感觉,每次要开发分布式系统的时候,就会遇到一个非常棘手的问题,那就是如何根据业务特点,为系统设计合适的分区容错一致性模型,以实现集群能力。这个问题棘手在当发生分区错误时,应该如何保障系统稳定运行,不影响业务。 ...

分布式协议与算法实战

3、ACID理论:CAP的酸,追求一致性

你好,我是韩健。 提到ACID,我想你并不陌生,很多同学也会觉得它容易理解,在单机上实现ACID也不难,比如可以通过锁、时间序列等机制保障操作的顺序执行,让系统实现ACID特性。但是,一说要实现分布式系统的ACID特性,很多同学就犯难了。那么问题来了...

分布式协议与算法实战

4、BASE理论:CAP的碱,追求可用性

你好,我是韩健。 很多同学可能喜欢使用事务型的分布式系统,或者是强一致性的分布式系统,因为使用起来很方便,不需要考虑太多,就像使用单机系统一样。但是学了CAP理论后,你肯定知道在分布式系统中要实现强一致性必然会影响可用性。比如,在采用两阶段提交协议的...

分布式协议与算法实战

5、Paxos算法(一):如何在多个节点间确定某变量的值?

你好,我是韩健。 提到分布式算法,就不得不提Paxos算法,在过去几十年里,它基本上是分布式共识的代名词,因为当前最常用的一批共识算法都是基于它改进的。比如,Fast Paxos算法、Cheap Paxos算法、Raft算法等等。而很多同学都会在准确...

分布式协议与算法实战

6、Paxos算法(二):Multi-Paxos不是一个算法,而是统称

你好,我是韩健。 经过上节课的学习,你应该知道,Basic Paxos只能就单个值(Value)达成共识,一旦遇到为一系列的值实现共识的时候,它就不管用了。虽然兰伯特提到可以通过多次执行Basic Paxos实例(比如每接收到一个值时,就执行一次Ba...

分布式协议与算法实战

7、Raft算法(一):如何选举领导者?

你好,我是韩健。 通过前两节课,我带你打卡了Paxos算法,今天我想和你聊聊最常用的共识算法,Raft算法。 Raft算法属于Multi-Paxos算法,它是在兰伯特Multi-Paxos思想的基础上,做了一些简化和限制,比如增加了日志必须是连续的,...

分布式协议与算法实战

8、Raft算法(二):如何复制日志?

你好,我是韩健。 通过上一讲的学习,你应该知道Raft除了能实现一系列值的共识之外,还能实现各节点日志的一致,不过你也许会有这样的疑惑:“什么是日志呢?它和我的业务数据有什么关系呢?” 想象一下,一个木筏(Raft)是由多根整齐一致的原木(Log)组...

分布式协议与算法实战