加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

这个女生说:弄懂本文前,你所知道的区块链可能都是错的

发布时间:2018-11-29 06:49:38 所属栏目:业界 来源:李晓泉译
导读:整个区块链行业的凛冽寒冬中,价格的涨跌已经左右了太多的人头脑之中的理智。可是,众人之中,究竟有几个人真正理解了区块链技术的密码学机制与分布式计算?究竟有几个人还会关心区块链在技术上的创新? 尘归尘,土归土。可能只有巨大的泡沫消散之后,区块链

单个进程的故障率其实很低,但随着系统中的进程越来越多,系统会发生故障就从一个偶然事件变为必然事件。我们要做的就是开发分布式协议,保证系统在各种异常情形下仍能正常工作。因此分布式系统也被称为“容错分布式计算”。

这些异常可大致分为三个类型:

  • 崩溃:进程在没有任何警告的情况下停止工作,如计算机崩溃。属于非恶意行为。
  • 遗漏:进程发送消息,但其他节点收不到,如消息丢失。属于非恶意行为。
  • 拜占庭:进程的行为随机。如果是在受控环境(例如 Google 或 Amazon 的数据中心)中,这种情况可以不做考虑。我们主要关心故障发生在“冲突地带”中的情形,他们的行为相当随意,可能会恶意更改和阻断信息,或者根本就不发送。属于恶意行为。

为了控制网络中的分散个体,我们需要设计一项协议,让一定会产生异常的系统仍然能够提供服务,完成共同目标,即系统需要具备容错性。

因此,在构建分布式系统时必须做的核心假设是,在部分异常时系统还能否正常工作,异常是由于非恶意行为还是恶意行为。

一般来说,在构建分布式系统时,有两种模型需要考虑:

(1)简单容错

在简单的容错系统中,我们假设系统的所有进程的行为方式都是固定的:要么遵守协议,要么失败。这种类型的系统能够妥善处理脱机或故障节点,并且不必担心节点发出任意或恶意的行为。

但是,如果运行环境不受控,简单容错机制很难发挥作用。

(2a)拜占庭容错

在拜占庭容错系统中,我们假设节点可能产生故障或者恶意。在分散系统中,网络是开放的、不受限制的,节点由独立的个体控制,因此行为有很大的随意性,在设计系统模型时,这种情况必须考虑。

(2b)BAR 容错

还有一种故障叫做“理性”故障,即节点为了自身利益,可能会背离系统整体的目标。换句话说,节点可以老实,也可以不老实,这取决于其动机。如果“筹码”足够高,那么甚至大多数节点都会“叛变”。正所谓忠诚,取决于背叛的筹码。

这被正式定义为 BAR 模型,它考虑到了拜占庭式故障和理性故障。BAR 模型假设系统中有三种角色:

  • 拜占庭节点:是恶意的,只想作恶 ——坏人
  • 无私节点:诚实的,总是遵循协议 ——老实人
  • 理性节点:符合自身利益才会遵循协议 ——普通人

4、信息传输

分布式系统中的计算机之间通过“信息传输”实现沟通和协调,信息传输协议可以任选,无论是 HTTP、RPC 还是特定场景中的自定义协议。

我们首先来了解一下信息传输环境:

(1)同步式

在同步信息传输系统中,假定信息传输时间是固定的、已知的。

概念上并不复杂,用户发送了消息,接收组件就会在固定的时间内得到消息。这样用户可以根据信息传输所需的固定时间上限来设计他们的协议。

然而,在分布式系统的实际操作中,这种传输环境应用有限。因为计算机可能崩溃或掉线,消息可能丢失、重复、延迟或乱序。

(2)异步式

在异步信息传输系统中,假定网络可能无限延迟消息的发送,或者大量重复或者乱序。这时候,对于信息传输所需时间是不确定的。

三、分布式系统中的共识问题

到这里,我们已经了解了分布式系统的下列特性:

  • 并发性
  • 缺少全局时钟
  • 独立进程故障
  • 信息传输

接下来,我们将重点理解在分布式系统中“达成共识”的意义。最常见的一种模型称为复制状态机。

复制状态机(Replicated state machine)

复制状态机,通俗点讲,就是多个节点从相同的初始状态开始,执行相同的一串命令,产生相同的最终状态。这一系列节点的状态都是相同的,就是所谓的“复制状态”。

6

在复制状态机中,如果某一事务是有效的,将其输入将导致系统的状态向下一个转换。在每个状态转换过程中,每个进程决定下一个输出值。

从一个有效状态转换到下一个有效状态的逻辑称为“状态转换逻辑”。

7

事务是数据库上的原子操作,这种操作一旦开始,就一直运行到结束,中间不会有任何切换。

换句话讲就是操作要么完全完成,要么根本不发生。在复制状态机中,这一系列被维护的事务集合称为“事务日志”。

所谓的“达成共识”意味着所有的计算机必须一致同意在每个状态转换过程中的输出值,也就是说,每台计算机上的事务日志都是相同的。

复制状态是一种确定性状态机,功能与单个状态机相同,状态机中的单个计算机可能发生故障,但整个状态机依然会正常运转。

故障主要有:

  • 计算机崩溃。
  • 网络不稳定,信息传递可能会延迟、乱序或者失败。
  • 没有全局时钟,事件顺序难以确定。

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读