这个女生说:弄懂本文前,你所知道的区块链可能都是错的
单个进程的故障率其实很低,但随着系统中的进程越来越多,系统会发生故障就从一个偶然事件变为必然事件。我们要做的就是开发分布式协议,保证系统在各种异常情形下仍能正常工作。因此分布式系统也被称为“容错分布式计算”。 这些异常可大致分为三个类型:
为了控制网络中的分散个体,我们需要设计一项协议,让一定会产生异常的系统仍然能够提供服务,完成共同目标,即系统需要具备容错性。 因此,在构建分布式系统时必须做的核心假设是,在部分异常时系统还能否正常工作,异常是由于非恶意行为还是恶意行为。 一般来说,在构建分布式系统时,有两种模型需要考虑: (1)简单容错 在简单的容错系统中,我们假设系统的所有进程的行为方式都是固定的:要么遵守协议,要么失败。这种类型的系统能够妥善处理脱机或故障节点,并且不必担心节点发出任意或恶意的行为。 但是,如果运行环境不受控,简单容错机制很难发挥作用。 (2a)拜占庭容错 在拜占庭容错系统中,我们假设节点可能产生故障或者恶意。在分散系统中,网络是开放的、不受限制的,节点由独立的个体控制,因此行为有很大的随意性,在设计系统模型时,这种情况必须考虑。 (2b)BAR 容错 还有一种故障叫做“理性”故障,即节点为了自身利益,可能会背离系统整体的目标。换句话说,节点可以老实,也可以不老实,这取决于其动机。如果“筹码”足够高,那么甚至大多数节点都会“叛变”。正所谓忠诚,取决于背叛的筹码。 这被正式定义为 BAR 模型,它考虑到了拜占庭式故障和理性故障。BAR 模型假设系统中有三种角色:
4、信息传输 分布式系统中的计算机之间通过“信息传输”实现沟通和协调,信息传输协议可以任选,无论是 HTTP、RPC 还是特定场景中的自定义协议。 我们首先来了解一下信息传输环境: (1)同步式 在同步信息传输系统中,假定信息传输时间是固定的、已知的。 概念上并不复杂,用户发送了消息,接收组件就会在固定的时间内得到消息。这样用户可以根据信息传输所需的固定时间上限来设计他们的协议。 然而,在分布式系统的实际操作中,这种传输环境应用有限。因为计算机可能崩溃或掉线,消息可能丢失、重复、延迟或乱序。 (2)异步式 在异步信息传输系统中,假定网络可能无限延迟消息的发送,或者大量重复或者乱序。这时候,对于信息传输所需时间是不确定的。 三、分布式系统中的共识问题 到这里,我们已经了解了分布式系统的下列特性:
接下来,我们将重点理解在分布式系统中“达成共识”的意义。最常见的一种模型称为复制状态机。 复制状态机(Replicated state machine) 复制状态机,通俗点讲,就是多个节点从相同的初始状态开始,执行相同的一串命令,产生相同的最终状态。这一系列节点的状态都是相同的,就是所谓的“复制状态”。 ![]() 在复制状态机中,如果某一事务是有效的,将其输入将导致系统的状态向下一个转换。在每个状态转换过程中,每个进程决定下一个输出值。 从一个有效状态转换到下一个有效状态的逻辑称为“状态转换逻辑”。 ![]() 事务是数据库上的原子操作,这种操作一旦开始,就一直运行到结束,中间不会有任何切换。 换句话讲就是操作要么完全完成,要么根本不发生。在复制状态机中,这一系列被维护的事务集合称为“事务日志”。 所谓的“达成共识”意味着所有的计算机必须一致同意在每个状态转换过程中的输出值,也就是说,每台计算机上的事务日志都是相同的。 复制状态是一种确定性状态机,功能与单个状态机相同,状态机中的单个计算机可能发生故障,但整个状态机依然会正常运转。 故障主要有:
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |