1 问题来源
在我们学习一项新技术之前,首先要了解的是这个技术为何而出现,也就是说它是为了解决什么问题。2013年图灵奖获得者 Leslie Lamport 为了解决分布式系统中的一致性问题,抽象出来了一个例子,这个例子就是著名的“拜占庭将军问题”。
拜占庭帝国国土辽阔,每支军队的驻地相隔很远,将军们只能靠信使传递消息。发生战争时将军们必须制订统一的行动计划。然而,这些将军中有叛徒,叛徒们篡改行动计划并传播虚假消息。因此,将军们必须提前制订一个预案,使所有忠诚的将军能够达成一致。即使存在少数几个叛徒也不能使忠诚的将军们做出错误的计划。也就是说,拜占庭将军问题的实质就是要寻找一个方法,使得将军们在一个有叛徒的非信任环境中建立对战斗计划的共识,能够有效过滤那些被篡改的计划。
而在分布式系统中,特别是在区块链网络环境中,存在许多类似拜占庭将军问题,比如故障的服务器、遭黑客攻击的服务器,这些称之为“拜占庭错误节点”。而共识算法的核心就是在正常的节点间形成对网络状态的共识。
2 分布式系统中的一个实际问题
假如有一个分布式集群,这个集群是由节点 A、B、C 组成,提供只读 key-value 存储服务。创建只读变量的时候,必须要先对它进行初始化,而且这个值后续不能再修改了。所以,所有节点必须要先对只读变量的值达成共识,然后所有节点再一起创建这个只读变量。
如下图所示,不同时刻,客户端 1 和 客户端 2 试图创建同一个只读变量 X,客户端 1 试图创键值为 3 的 X,客户端 2 试图创键值为 7 的 X,要怎样才能达成共识呢?
本文介绍了Paxos共识算法的背景,通过拜占庭将军问题阐述了分布式系统中的一致性需求。文章以一个分布式集群为例,展示了如何在存在异常节点的情况下,通过Paxos算法达成数据共识。Paxos通过多轮投票和大多数节点的同意来确保决策的正确性,是许多现代共识算法的基础。
订阅专栏 解锁全文

2337

被折叠的 条评论
为什么被折叠?



