主页 > imtoken苹果手机不能下载 > 科普 | 分布式共识的工作原理,Part-1:分布式系统的定义和属性

科普 | 分布式共识的工作原理,Part-1:分布式系统的定义和属性

imtoken苹果手机不能下载 2023-10-16 05:11:48

在本文中,我们将重点关注那些由空间隔离的计算机组成的分布式系统。

比特币 挖矿 原理 hash_比特币分布式的实现原理_比特币挖矿机显卡原理

-作者图解-

请注意:我可能会使用几个术语来表示与“进程”相同的含义:“节点”(节点、对等体)、“计算机”(计算机)、“组件”(组件)。在本文中它们都是同义词。同理, “网络”和“系统”在本文档中作为同义词使用。

分布式系统的特点

每个分布式系统都有一组属性,如下所示:

A)并发

进程在系统中并发运行,即多个事件同时发生。 也就是说,在任何时刻,系统中各个节点的事件执行都是相互独立的。

这需要协作。

比特币 挖矿 原理 hash_比特币分布式的实现原理_比特币挖矿机显卡原理

-分布式系统中的时间、时钟和事件排序,来自 Lamport, L (1978)-

B) 没有全局时钟

为了让分布式系统工作,我们需要一种方法来确定事件的顺序。 然而,由于分布式系统中的计算机在空间上是隔离的并且同时运行,因此有时很难判断两个事件中哪个先发生。 换句话说,系统中的所有计算机都没有单一的全局时钟来确定事件发生的顺序。

在他的论文“分布式系统中的时间、时钟和事件排序”中,Leslie Lamport 展示了事件的顺序如何由以下事实确定:

消息总是先发送后接收。

每台计算机都有一系列事件。

通过确定事件的相对顺序(先发生,后发生),我们可以获得系统中事件的部分排序。 Lamport 的论文描述了一种算法,该算法要求每台计算机都听取其他计算机的信息。 这样,所有事件都可以根据这个本地排序进行全局排序。

但是,如果排名仅基于每台计算机侦听的事件,则可能会出现排名结果与外部用户的观察结果不一致的情况。 因此,论文中提到该算法仍然不能完全排除异常情况。 最后,Lamport 讨论了如何通过正确同步物理时钟来避免上述异常。

但是等一下——这里有一个重要前提:协调和同步独立时钟是一个非常复杂的计算机科学问题。 即使您开始时同步了一堆时钟比特币分布式的实现原理,一段时间后它们的时间也会开始漂移。 这称为“时钟偏差”,是一种时钟滴答声略有不同的现象。

从本质上讲,Lamport 的论文证明,在由一组空间隔离的计算机组成的分布式系统中比特币分布式的实现原理,事件的时间和顺序是系统中可能出现错误的障碍源。

C) 单点错误

理解分布式系统的关键是认识到分布式系统中的组件可能会失败。 这就是分布式系统被称为“容错分布式计算”的原因。 一个没有错误的系统是不可能存在的。 现实世界的系统总是面临许多可能的错误和故障风险,包括程序崩溃; 消息丢失、真实性和重播; 网络隔离导致的消息延迟或丢帧; 甚至进程完全失控,恶意发送消息。

错误大致可以分为三类:

理解了以上概念后,分布式系统的目标可以定义为:为一个有可能发生故障的组件的系统设计一个协议,期望系统仍然能够完成组件的共同任务,为用户提供可用的服务。

考虑到所有的系统都可能出错,我们构建分布式系统的核心考虑是是否可以在某些组件中出现异常(是否由于非恶意行为,例如崩溃错误或丢失错误,或者由于恶意行为行为,例如拜占庭错误)以继续工作。

粗略地说,构建分布式系统有两种模型需要考虑:

1)简单容错

在一个简单的容错系统中,我们假设系统中的所有组件都会处于以下两种状态之一:要么严格按照约定工作,要么不遵守约定。 这种类型的系统可以处理节点离线或故障的情况。 但它无法处理不按既定规则工作或恶意工作的节点。

2A) 拜占庭容错

简单的容错系统在不受控制的环境中用处不大。 在节点由独立参与者控制并通过无需许可的开放互联网进行通信的去中心化网络中,我们需要考虑网络中存在恶意节点(或“拜占庭”节点)的可能性。 因此,在拜占庭容错系统中,我们假设节点可能崩溃或作恶。

2B) BAR容错

尽管大多数现实世界的系统都设计为可以容忍拜占庭故障,但一些专家认为这些设计过于宽泛,没有考虑到所谓的“自利”错误,即节点可能会因为合法的自我而做出恶意行为-兴趣。 . 换句话说,节点可能诚实也可能不诚实,这取决于激励措施。 所以如果有足够的激励,甚至有可能大部分节点都会不诚实。

更正式地定义,这是 BAR 模型——同时考虑拜占庭错误和自利错误。 BAR 模型假设系统中有以下三个参与者:

D)消息传递

正如我前面提到的,分布式系统中的计算机通过它们之间的“消息传递”进行通信和协作。 可以通过任何消息传递协议(例如 HTTP 或 RPC)或为特定系统实现的一组自定义协议来传递消息。 消息传递有两种上下文:

1)同步

在同步系统中,我们假设消息将在固定且已知的时间范围内接收。

同步消息在概念上更简单,因为用户有时间保证:当他们发送消息时,接收者将在一定时间内收到消息。 这允许用户为其协议设置消息传递所需时间的上限。

然而,这种假设在现实生活中的分布式系统中是不现实的:组件计算机可能会崩溃或脱机,并且消息可能会丢失、重复、延迟或乱序接收。

2)异步

在异步消息系统中,我们假设系统可能会导致消息永远延迟,导致消息重放,或者乱序发送消息。 换句话说,在这种环境下,消息传递的预期时间没有上限。

原文链接: