想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!
Tanenbaum将分布式系统定义为“分布式系统是一组独立的计算机,它们看起来像是一个用户的单一、连贯的系统”,在“分布式系统原理和范式”当中。
区块链,通过构建一个全球性的分布式系统,试图实现分散的新的数据存储和组织结构。
首先,面向分布式系统的原因主要是可扩展性、局部性和可用性。区块链也不例外。地理可扩展性,以形成用于信息保护的全局值存储网络/位置,包括非集中式结构/零停机时间的可用性下的防篡改。这些都是用分布式系统实现的。
1.引言(一致性概述和一致性原因)
在分布式系统中,数据主要是为了“可靠性”和“性能”而复制的。复制是必需的,特别是如果分布式系统需要在数量上和地理上增长。复制是缩放技术中的一种。此外,它还可以应对数据损坏和副本崩溃。
此时,需要保持数据和副本的状态的一致性。然而,这直接导致可扩展性问题。当你考虑一致性时,理想的情况是“保持所有副本处于完全相同的状态和操作”,即,实现了原子性,但这是一个相当大的挑战。
在现实中,我们不能解决可扩展性问题,除非我们放弃一些一致性约束。因此,有必要了解系统需要多少一致性,以及如何实现一致性的程度。
在本章中,副本之间的一致性将按以下顺序解释。
有什么样的一致性模型?
关于复制管理
-何时何地进行复制
-谁放置伺服器(客户端)?服务器?)
如何保证拷贝之间的一致性
特定一致性协议实例及实现
2.以数据为中心的一致性模型
传统上,主要从数据(数据存储)来讨论一致性。
在分布式系统中,每个进程都保存自己的本地副本。此时,包括每个本地副本的存储数据集合被称为分布式数据存储。
当进程从数据存储中读取时,它期望最后写入操作的结果作为数据返回。为了阐明哪一个是最后一个写,我们把序关系称为一致性。
如第1节所述,几乎不可能保持完全一致性。允许某种程度的不一致导致兼容性与性能,但它取决于你的应用程序,你可以容忍什么,你可以容忍多少。你应该根据应用程序、系统选择一个一致性级别。因此,有必要首先理解什么样的一致性存在。
顺序一致性是最流行和最重要的一致性模型。偶然一致性是其弱变量。
2–1.序列一致性
当满足以下条件时,数据存储顺序一致。
任何执行序列的结果是,所进程到数据存储区的读/写操作与以特定顺序特定顺序执行的结果相同,并且各个进程的操作按其进程所指定的顺序执行。
关键在于,当比较每个过程的操作时,它们处于完全相同的顺序。
在下面的图中,(a)顺序一致,但是(b)不是因为处理P3和处理P4中的读数顺序不同。具体而言,在P3中,P1将由处理P2的写入结果的值r(x)b改变为值r(x)a,但在P4中相反。
W(x)a表示写入数据“x”的值“a”,R(x)b表示从数据“x”读取值“b”。
2–2.偶然一致性
当满足以下条件时,数据存储是偶然一致的。
潜在因果关系的写入必须按所有进程以相同的顺序来观察。对于不同的机器,可以以不同的顺序观察并发写入。
换句话说,它减少了序列一致性的约束,并且没有因果关系的处理序列可以处于不同的顺序。
此时,每个操作取决于哪些操作(其中两个操作是否具有因果关系)非常重要,为此&#x