分布式系统的一致性 所谓一致性就是指数据要完整,要同步。区块链系统本质就是一个分布式应用软件。分布式系统的首要问题就是如何解决一致性的问题,也就是如何在多个独立节点之间达成共识。要注意的事,制里说的事要达成一致,而没有说保证一定要结果正确,比如给所有的节点都达成失败状态也是一种一致,说白了就是要称为一致行动人。 多路处理器和分布式系统中的一致性问题解决难点: 1.分布式系统本身可能出故障 2.分布式系统之间的通信可能有故障,或者有巨大的延迟 3.分布式系统运行的速度可能大不相同,有的系统很快,有的很慢 用状态机来解释一致性问题 所谓状态机事表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,状态可以特指某个系统在某一时刻的数据变量,这个数据变量有以下特点 状态总数事有限的 任一时刻,只处在一种状态中 某种条件下,会从一种状态转变到另一种状态 对于分布式系统需要具备以下能力 1.分布式系统作为一个逻辑整体,不应该返回错误结果 2.只要系统里的大部分机器工作正常,整个分布式系统就能有效运行,这也是分布式系统应用的一个优点,抵抗单点故障 3.系统的性能可以横向扩展的,对于分布式系统来说,木桶原理不起作用 4.分布式系统必须是异步的,也就是说每个节点可以按照自己的时序独立工作,没有全序的时间顺序。 拜占庭将军问题 拜占庭的军队是由小分队组成的,每个小分队由一个将军指挥,将军们通过传令兵来策划一系列的行动。有些将军是叛徒,他们会有意的妨碍忠诚的将军达成一致的计划。整个问题的目标是使忠诚的将军达成一致的计划,即使背叛的僵局一致在诱使他们采用糟糕的计划。已经证明,如果背叛的将军超过了将军总数的1/3,达成上述目标是不可能的。特别要注意的是,要把拜占庭将军问题和两军问题区分开。 拜占庭将军问题的复杂性,可以用计算机容错学的概念来表述 拜占庭容错:是指有一个节点压根就不按照程序逻辑执行,对它的调用会返回随意或者混乱的结果。要解决拜占庭式故障需要由同步网络,并且故障节点必须小于1/3,通常只有某些特定领域才会考虑着这种情况,通过高冗余来消除故障 崩溃容错:它比拜占庭容错多了一个限制,那就是节点总是按照程序逻辑执行,结果式正确的,但是不保证消息返回的时间,不能及时返回消息的原因可能式节点崩溃后重启了,网络中断了,异步网络中的高延迟等。 遗漏容错:它比崩溃容错多了一个限制,就是一定要“非健忘”。非健忘事指整个节点崩溃之前能把状态完整地保存在持久储存上,启动之后可以再次按照以前的状态继续执行和通信。 崩溃停止容错:它比遗漏容错懂了一个故障发生后要停止响应的要求。简单讲,一旦发生故障,整个节点就不会再和其他节点有任何交互,就像它的名字描述的那样,崩溃并且停止。 —- 编译者/作者:杰西卡 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
杰西卡读书笔记《白话区块链》第四章1
2019-12-22 杰西卡 来源:区块链网络
LOADING...
相关阅读:
- ConsenSys通过向法国兴业银行提供技术和专业知识参与数字欧洲试点2020-10-30
- 他们会还是不会? 中央银行盯着对方的数字货币走势2020-10-29
- AOFEX观察:数字货币领域合规之路2020-10-29
- USDT如何消解美元霸权2020-10-29
- 法国兴业银行选择ConsenSys进行CBDC开发2020-10-29