首页 理论教育集中系统和分布系统:探索P2P系统的分布式数据库技术

集中系统和分布系统:探索P2P系统的分布式数据库技术

【摘要】:区块链的基础是分布系统,因此,有必要进一步讨论分布系统。集中系统和分布系统是两种主要的软件体系结构。图19.2集中系统和分布系统的软件体系结构与单台计算机相比,分布系统有其独特的优势:计算能力强、成本低、可靠性高、伸缩性强。P2P系统是近年来分布式系统的白马。用P2P系统代替中间人提高了处理速度,降低了成本开销。P2P系统的信任问题和完整性问题是一个挑战。要实现和维护纯P2P系统的完整性,取决众多因素,主要如下。

区块链的基础是分布系统,因此,有必要进一步讨论分布系统。下面先讨论基础问题,即从集中系统到分布系统的演变。

集中系统和分布系统是两种主要的软件体系结构。集中系统里,各种成分都在本地与一个中心成分连接在一起。分布系统里的成分互相连接起来,形成一个网络。其中没有或无需中央成分来协调或控制。我们用图19.2表示这两种软件体系结构,左边是集中系统(图的中央就是一个核心),右边是分布系统(不存在核心)。

图19.2 集中系统和分布系统的软件体系结构

与单台计算机相比,分布系统有其独特的优势:计算能力强、成本低、可靠性高、伸缩性强。

1.计算能力强

分布系统将多台计算机组合起来,可以获得比单台计算机更强的计算能力。

2.成本低

与昂贵的主机系统相比,分布系统参与的计算机不必像大型主机那么高端,也能获得相同的计算和存储能力,但成本就低多了。

3.可靠性高

由于分布系统基于网络把多个计算机集成在一起,单台计算机的瘫痪不会影响系统的工作,可靠性提高了。

4.伸缩性强

不像单台主机那样,一旦购买,其功能已经固定,以后的扩容十分繁复与耗时。分布系统则灵活得多,如果觉得应用不需要当前规模,就可以从系统撤走一些节点;如果应用需要扩容,则可以随时加入新的节点。

与单台计算机比,分布系统也有不足,如下。

●需要额外协调开销(coordination overhead)。

●需要额外通信开销(communication overhead)。

●依赖于网络(dependency on networks)。

●程序复杂性较高(higher program complexity)。

●存在安全问题(security issues)。

P2P系统是近年来分布式系统的白马。例如,由于P2P文件共享系统(如Napster)的冲击,传统的黑胶唱片和CD的销售大大萎缩。P2P系统的应用,使得传统上音乐工作室(music studios)的三个基本功能,即生产、市场推广和分发可以由艺术家和消费者自己完成。Napster在其中扮演着中间人的角色。

在区块链中,P2P是基石。而在纯P2P系统中,可以使用区块链作为技术,也可以实现和维护系统的完整性。(www.chuimin.cn)

●P2P系统由计算机构成,自己的计算资源可让其他计算机直接使用。

●P2P系统的优点是用户可以直接与他方交互,无需中间人介入。用P2P系统代替中间人提高了处理速度,降低了成本开销。

●纯分布式P2P系统形成了平等成员网络,它们可以直接交互,无需中心节点协调。

●区块链还有能力在纯P2P系统里实现和维护完整性。

P2P遇到的第一个问题是如何“放牧”(herd)一群独立的计算机?学界使用“放牧”这个词,原因是这些计算机就像草原上一群散放的羊,为了不让其走散、离群和自作主张,目前学术界还需要进一步研究。

区块链的主要目标是在分布式系统中维护完整性。P2P系统的信任问题和完整性问题是一个挑战。

信任和完整性好比硬币的两个面。软件系统里,完整性是一个非功能性的概念,是指系统应当安全、完整、一致、正确和无错。信任指的是使人坚信:某人/某物/某事的可靠性、真实性或能力,无需证据、证明或调查。信任是实现时给定的,随着发展,通过交互会增加或减少信任。

P2P系统里,意味着“人”如果被信任的话,可以参加进来,为系统做贡献;或者在进来以后,发展中逐步增加信任。为了满足用户的期望和提高他们在系统里的信任感,需要系统的完整性。如果缺乏完整性,则系统无法给用户信任感,用户会流失,会抛弃系统,最终系统会死亡。所以如何实现和维护纯P2P系统的完整性极其重要。

要实现和维护纯P2P系统的完整性,取决众多因素,主要如下。

●节点数目方面的知识(knowledge about the number of nodes or peers)。

●关于节点可信赖行方面的知识(knowledge about the trustworthiness of the peers)。

在分布式系统里实现和维护完整性是区块链迫切需要解决的问题。在一个纯P2P分布式系统里,有多少端点接入系统是未知的,其可靠性和可信任性也是未知的。

显然,区块链要解决的问题类似于军事上的拜占庭将军问题[2]

拜占庭将军问题是一个协议问题。当年,拜占庭帝国军队的将军们必须全体一致决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的决定才能获得胜利。

拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求。区块链里遇到的问题与此类似。

对于数据库系统而言,能维护数据的完整性是其一大长处。其实,对于软件系统而言,完整性也是其必须关注的,这里的完整性主要涉及以下几个方面。

●数据完整性(data integrity):系统使用和维护的数据是完整、正确和没有矛盾的。

●行为完整性(behavioral integrity):系统行为符合预期目标,无任意非预期的、无逻辑的错误。

●安全性(security):系统对数据和功能的访问是有限制的,只能让授权用户去访问。

区块链选择了P2P结构,可以说,区块链是一个在分布式软件系统里实现完整性的工具,区块链的目的就是在分布式系统里实现完整性。实现完整性是一个技术要求很高的问题,高度需要技术支持。以比特币为例,为了实现完整性,采用了三个关键技术:哈希货币(hashcash)、无中心网络中繁复的容错技术和区块链技术。