跳转至

分散与分布式系统

区块链领域最大的误解之一是分布式系统和分散式系统之间的区别。在这一章中,我们将讨论这两种类型的系统,为什么它们很重要,它们的相似之处,它们的不同之处,以及区块链技术如何适应这两种类型。

学完本章后,您应该能够做到以下几点:

  • 定义分布式系统
  • 定义一个分散的系统
  • 理解分布式系统的优点和缺点
  • 理解分散系统的优点和缺点

分布式系统

分布式系统是指应用程序及其架构分布在大量机器上,最好是物理位置上。更简单地说,分布式系统是指系统的目标分布在不同位置的多个子系统中。这意味着位于多个位置的多台计算机必须相互协调才能实现整个系统或应用程序的目标。这不同于所有东西都捆绑在一起的单一应用程序。

让我们以一个简单的 web 应用程序为例。一个基本的 web 应用程序将在一台 web 服务器上运行处理、存储和其他一切功能。代码倾向于作为一个整体运行——所有的东西都捆绑在一起。当用户连接到 web 应用程序时,它接受 HTTP 请求,使用代码处理请求,访问数据库,然后返回结果。

优点是这非常容易定义和设计。缺点是这样的系统只能扩展这么多。要增加更多用户,就必须增加处理能力。随着负载的增加,系统所有者不能只添加额外的机器,因为代码不是设计成一次在多台机器上运行的。相反,所有者必须购买更强大和更昂贵的计算机来跟上。如果用户来自世界各地,还有另一个问题——一些靠近服务器的用户会得到快速响应,而远离服务器的用户会有一些延迟。下图说明了构建到单个工件的单个整体代码库:

如果运行这个应用的电脑出现故障、断电或者被黑了会怎么样?答案是整个系统完全瘫痪。由于这些原因,业务和应用程序变得越来越分散。分布式系统通常属于几种基本架构中的一种:客户机-服务器、三层、n 层或对等网络。区块链系统通常是点对点的,所以这就是我们将在这里讨论的内容。

分布式系统有许多优点,如下所示:

  • 弹性:如果系统的一部分出现故障,整个系统不会出现故障
  • 冗余:系统的每一部分都可以建立备份,这样如果它失败了,可以用另一个副本来代替,有时是即时的
  • 并行性:工作可以被有效地分割,这样就可以使用许多廉价的计算机,而不是一台(非常昂贵的)高速计算机

跳回

弹性是系统适应变化和挑战并保持工作的能力。弹性只能在系统可以弹性应对的事件类型的上下文中讨论。一个系统可能对少数几台电脑关机有弹性,但可能对核战争没有弹性。

弹性可以分为不同的子类别:

  • 容错:系统处理无效状态、坏数据和其他问题的能力
  • 故障隔离:系统某个部分的问题不会传染到系统的其他部分。一个地方的坏数据或系统故障不会导致其他地方的问题
  • 可伸缩性:在大量使用的情况下,可伸缩的系统能够提供额外的容量,因此对负载具有弹性
  • 复杂性管理:拥有管理复杂性的方法的系统有助于抵御人为错误

我们现在将更详细地讨论容错。

容错和故障隔离

当一个系统即使在某些部分发生故障或失灵的情况下仍能运行时,称之为容错系统。通常,容错是一个程度问题:子组件的故障水平要么被系统的其他部分抵消,要么退化是渐进的,而不是绝对的关闭。故障可能发生在许多层面:软件、硬件或网络。一个容错软件需要在这些层中的任何一层出现部分中断时继续运行。

在区块链中,单个硬件级别上的容错是通过为每项功能存在多个重复的计算机来处理的——比特币中的矿工或工作证明系统或 PoS 和相关系统中的验证器。如果一台计算机有硬件故障,那么要么它将无法有效地与网络签署一致的事务,要么它将简单地停止作为网络节点——其他节点将接管空闲。

共识和协调

区块链最重要的方面之一是共识的概念。我们将在第七章、达成共识中讨论区块链达成共识的不同方式。目前,只要了解大多数区块链网络的协议就足够了,只要网络上三分之二到略多于一半的计算机正常运行,这些协议就允许它们运行,尽管每个区块链网络都有不同的方法来确保这一点,这将在以后的章节中讨论。

备份

在大多数区块链,作为网络完全参与者的每台计算机都保存着自网络启动以来发生的所有交易的完整副本。这意味着,即使在灾难性的压力下,只要网络计算机的一部分仍在运行,完整的备份就将存在。

在 PoS 链中,完全参与者往往少得多,因此备份和分发的数量也少得多。到目前为止,这种冗余级别的降低还不是一个问题。

一致性

如前几章所述,区块链上所有事务和行为的散列和 Merkle 根使得一致性的计算变得简单。如果区块链的一致性被打破,人们会立即注意到。区块链的设计永远不会不一致。但是,数据一致并不代表准确。这些问题将在第 21 章、可扩展性和其他挑战中讨论。

对等系统

今天使用的大多数计算机系统都是客户机-服务器。一个很好的例子是你的网络浏览器和典型的网络应用程序。你打开谷歌浏览器或其他浏览器,进入一个网站,你的电脑(客户端)连接到服务器。系统上的所有通信都是在您和服务器之间进行的。任何其他连接(比如在脸书上与朋友聊天)都是在您的客户端连接到服务器,而服务器连接到另一个客户端的情况下发生的,服务器充当中间人。

点对点系统是关于省去服务器的。在对等系统中,您的计算机和您朋友的计算机会直接连接,中间没有服务器。

下图说明了对等体系结构:

分散系统

所有分散的系统都必须是分布式的。但是分布式系统不一定是分散的。这让很多人很困惑。如果一个分布式系统是一个分布在许多计算机、地点等等的系统,它怎么可能是集中式的呢?

区别在于位置和冗余与控制。在这种情况下,集权与控制有关。展示分布式和分散式系统之间差异的一个很好的例子是脸书。脸书是一个高度分布式的应用程序。它在世界各地都有服务器,运行数千种不同的测试软件。它的任何一个数据中心都可能出现故障,而大多数站点功能将继续运行。其系统分布具有容错、广泛协调、冗余等特点。

然而,这些服务仍然是集中的,因为没有其他利益相关者的投入,脸书可以改变规则。数百万小企业使用并依赖脸书做广告。已经迁移到脸书的群体可能会突然发现他们的旧消息、工作和联系能力被撤销了——没有任何追索权。脸书已经成为一个其他人依赖的平台,但没有相互的可靠性协议。对于那些部分或全部依赖脸书平台的团体、企业和组织来说,这是一个可怕的局面。

过去十年,大量高度分散但高度集中的平台公司——脸书、Alphabet、AirBnB、优步等——走到了前台,它们提供了同行之间的市场,但也几乎完全不受用户的欢迎。由于这种情况,对分散应用和服务的需求越来越大。在一个分散的系统中,没有一个中心的压倒性的利益相关者有能力在没有其他网络用户许可的情况下制定和执行规则。

分散系统的原理

像分布式系统一样,去中心化与其说是一种绝对的状态,不如说是一种滑动的尺度。要判断一个系统的分散程度,有许多因素需要考虑。我们将着眼于与区块链和分散式应用程序和组织特别相关的因素。它们是:

  • 开架借阅
  • 非等级制
  • 多样性
  • 操作的透明度

开架借阅

根据定义,任何实际上或逻辑上封闭的系统都至少在某种程度上是集中的。一个封闭的系统自动集中到预先存在的参与者。与分散系统的所有其他方面一样,这不是一个二元的是/否,而是一个可能性的滑动尺度。

早期的互联网被认为是革命性的,部分原因是它的开放访问特性,以及任何人(只要有电脑、时间和访问权限)都可以上网并开始交易信息。同样,区块链的技术到目前为止对创新和获取是开放的。

非等级制

等级制度是公司和组织中常见的制度。处于层级顶端的人拥有支配资源和事件的压倒性权力。等级制度有不同的极端。在一个极端,你可能有一个系统,其中一个仲裁人拥有绝对的权力。在另一个极端,你可以有一个系统,系统中的每个成员都拥有相同的直接权力,因此控制通过影响力、声誉或其他形式的组织货币存在。

在区块链,出现了几种非等级模式。第一个是工作证明挖掘系统。在区块链中,所有矿工基本上都是平等的参与者,但他们的影响力与他们为网络提供的计算资源成正比。

在 PoS 区块链系统中,权力是根据特定协议的投资/股份水平来分配的。在这种情况下,分散化是通过大规模采用以及与其他连锁店的竞争来实现的。如果一个链变得过于集中,没有什么可以阻止用户迁移到另一个链。

随着时间的推移,这些系统将在多大程度上保持分散是一个悬而未决的问题。

生态系统多样性

开放存取自然会导致分散系统的另一个特征:多样性。多元化的体系与单一文化相对立。在技术领域,单一文化是指单一系统的压倒性优势,比如 Windows 在美国企业中长期占据主导地位。

透明度

权力集中在一个系统中的方式之一是通过信息优势,即系统中的一组参与者比其他参与者获得更多或更大的信息。在大多数当前的区块链技术中,链上的每个参与者都获得相同数量的信息。也有一些例外。例如,Hyperledger Fabric 能够对参与者隐藏信息。

完美实施透明度的能力是对区块链系统感兴趣的驱动因素之一。通过创建透明和难忘的记录,区块链在物流和法律记录保存方面有明显的效用。有了区块链上的记录,就有可能确定数据没有被修改。一个透明的区块链也确保了一定程度的公平——参与者都可以确信,至少所有人都有一个共享的真理水平,不会改变。

下降趋势

分散系统并非没有缺点。以下是与区块链特别相关的分散系统的几个关键问题:

  • 速度
  • 抵制审查
  • 混沌/非决定论

速度

集中式系统和分散式系统在处理某些类型的事件时往往会更快或更慢。区块链是分散的记录保存系统。考虑比特币等基本区块链的一种方式是,它是一个只附加的数据库。比特币每秒可以处理大约 7 笔交易。相比之下,Visa 和 MasterCard 是分布式(而非分散式)交易处理系统,每秒可以处理超过 40,000 笔交易。区块链系统的速度不断提高,但通常会以一定程度的集中化或访问限制为代价。一些 PoS 系统,如 Tendermint 或 Waves,理论吞吐量超过 1,000 tx/秒,但仍远未达到其传统同类产品的峰值容量。

抵制审查

分散的系统往往更难审查,因为缺乏一个中央权力机构来进行审查。对于言论自由和信息自由的纯粹主义者来说,这一点也不被视为不利因素。然而,一些信息(儿童色情、仇恨言论、炸弹制造说明)被视为危险或不道德的公开传播,因此应该受到审查。作为一项技术,一旦保存信息的块完成,实际写入区块链的任何内容都是不可变的。例如,Steemit 是一个位于区块链的社交博客平台,每个帖子都会保存到链上。一旦每个数据块完成,就不能删除数据。系统的客户可以选择不显示信息,但是信息仍然会存在,供那些想看的人使用。

对审查的渴望延伸到自我审查。写入变更的内容是不可变的——即使对其作者来说也是如此。例如,通过比特币完成的金融交易永远无法瞒过当局。虽然比特币是匿名的,但一旦一个人与比特币钱包绑定,就有可能轻松跟踪自区块链诞生以来的每一笔交易。

正因为如此,基于区块链的国家货币将允许完美的税收——由于完善的金融监督链。因此,抵制审查是一把双刃剑。

混沌和非决定论

就其本质而言,分散系统往往比集中系统更加混乱。在一个分散的系统中,每个行动者都按照自己的愿望而不是最高权威的要求工作。正因为如此,分散系统很难预测。

摘要

在这一章中,我们已经讨论了分布式系统和分散式系统之间的区别,并回顾了一些关键特征。现在,您应该了解每个分散式系统如何也是一个分布式系统,以及每个概念的一些关键方面。

在下一章,我们将开始研究这些东西在实践中是如何工作的。


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组