区块链如何颠覆软件架构?

区块链大本营  2019-06-08  新手入门/区块链知识栏目  

  

  你买过车吗?即使没有买过车,你大概也知道一辆车可以配置不同的发动机(依靠油、天然气或者电来驱动)。如果我们对汽车进行分层拆分,可以将汽车的发动机看作一个模块。选配不同类型的发动机会给汽车带来巨大的差别,两辆外观相同的汽车会因为配置了不同的发动机而带来极为不同的驾驶体验。同时你对汽车发动机的选择会显著影响汽车的售价、保养开销、所用燃料、排气系统以及刹车系统。

  在脑中记住发动机与车的关系,接下来就能更容易地理解区块链在整个软件系统中的位置与意义了。

  本文将描绘区块链技术所处软件系统的大环境,同时也将重点指出区块链在该大环境中的位置。通过这篇文章,你将学到:

  1、软件架构的概念以及软件架构与系统分层之间的联系;

  2、区块链与不同软件架构的关系;

  3、区块链在软件架构中的核心作用。

  一个支付系统 

  让我们将分层的概念应用到一个支付系统中,下表中列出了支付系统的功能性特征与非功能性特征,以及该系统的应用层与实现层。

  

  一个支付系统的分层与架构

  注意到表中的那个问号了吗?我故意留空白,之后需要你在里面填写实现各类功能并且确保系统正常运行的技术方案,这个空供你来选择在这套支付系统中使用怎样的“发动机”。在下一个部分,我们会开始接触软件系统中的“发动机设计方案”。

  两种软件系统 

  实现一个软件系统有很多种方法,其中首先要决定的是该系统的各个模块之间如何互相关联,即需要决定采用什么样的基础架构。

  现代软件系统主要采用两种架构:中心化架构与去中心化架构。在一个中心化系统中,一个中心模块连接了其他所有的模块。对应地,一个去中心化的系统中没有任何一个中心节点可进行节点间的协调与控制。

  下图形象地描绘了这两类架构。图中的每个圆圈代表了系统的一个模块,也称之为“节点”,圆圈之间的线表示了两个模块之间的联系。现在我们还不需要深究这些模块如何工作,以及它们之间如何交换信息,只需要先理解这两种系统架构的组成方式。

  图中的左半部分是一个去中心化的系统,其中的各个节点彼此相连,没有一个中心节点同时连接所有其余的节点。而在右半部分的中心化系统中,除了中心节点之外的节点都不和其余节点直接相连,它们只与中心节点直接相连。

  

  去中心化系统架构(左)与中心化系统架构(右)

  1、建立在多台计算机之上的去中心化系统主要具有以下4点优势

  更强的计算能力;

  更低的成本;

  更高的可靠性;

  自增长的能力。

  1、更强的计算能力

  一个去中心化系统的计算能力表现为系统中所有互联计算机的计算能力之和。因此,去中心化系统可以拥有比中心化系统更强大的计算能力。事实证明,就算去中心化系统中使用了计算能力不强的计算机,也可以拥有超过独立的超级计算机的计算能力。

  2、更低的成本

  在过去 20 年中,配置一台计算机所需要的内存、硬盘与网卡等硬件的价格大幅下降。虽然看起来组建一个去中心化系统需要大量的计算机,系统的初始搭建成本较高。然而一台超级计算机的搭建、维护与运营成本会远远高于相同计算能力的去中心化系统。特别地,相对于更换超级计算机的一个模块,更换一个去中心化系统中的节点计算机对系统的影响与开销几乎可以忽略不计。

  3、更高的可靠性

  去中心化系统中即使一个节点计算机宕机,整个系统依旧可以照常工作,这个特性为去中心化系统带来了更高的可靠性。当一个节点宕机时,其余节点可以接管该节点的工作,而相比之下一台超级计算机的可靠性就相形见绌了。

  4、自增长的能力

  一个去中心化系统的计算能力是其所有组成节点的计算能力之和。通过向系统中加入新的计算机,去中心化系统的计算能力能够得到进一步的提升,这就意味着一个组织良好的去中心化系统可以不断增加自己的计算能力,这个特性满足了大量的组织与公司的需求。对于单独的计算机而言,要获得更强的计算能力,只能更换CPU,或者索性买一台新的计算机。

  2、去中心化系统具有以下5点劣势

  节点间的协调;

  节点间的冗余通信;

  对网络的过度依赖;

  系统编程的较高复杂度;

  安全问题。

  a)节点间的协调

  去中心化系统没有中心节点来协调其中的所有成员,因此系统的协作需要其中的成员节点自己来完成。去中心化系统中的协作具有不小的难度,并且在协调过程中会产生额外的开销,并占用一定的计算资源。这些开销与计算资源不能被直接用在系统的计算任务上。

  b)节点间的冗余通信

  节点间的协作需要通过通信交流来完成,因此去中心化系统中的成员节点需要和其他的节点频繁进行通信。这就需要在完善且可靠的通信协议的基础上发送、接收并处理消息,这些过程会产生额外的开销,并占用一定的计算资源。这些开销与计算资源也不能被直接用在系统的计算任务上。

  c)对网络的过度依赖

  任何形式的通信都需要媒介,媒介为节点间的整个通信过程负责。去中心化系统中的成员节点需要不停地互相通信,这个通信过程依靠网络作为媒介。由于各类通信网络均存在各自的局限性,因此对网络的选择与依赖会影响整个去中心化系统。但是,如果没有网络就不会有通信,也就不会有协作,更不会有去中心化系统的存在。因此,一个去中心化系统对网络具有很强的依赖性。

  d)系统编程的较高复杂度

  我们通过编写程序或软件来解决各类问题。由于前面提到的 3 个劣势,任何一个运行在去中心化系统上的软件都需要解决额外的问题(节点间协调、通信,以及对网络产生依赖),这就带来了较高的编程复杂度。

  e)安全问题

  任何计算任务都需要直接在网络上进行通信协调与数据传递。不同的网络对安全有不同的标准。因此,通过任何网络传递数据与信息都存在可靠性的问题。而一个去中心化系统的特征决定了这个系统需要更加注重系统的安全性。系统对成员节点使用网络的权限限制越大,这个去中心化系统就越安全可靠。

  3、去中心化的点对点网络系统

  点对点网络是一种特殊的去中心化系统,该系统由很多台计算机组成,每一台计算机在没有任何中心节点的情况下向系统中的其他计算机直接提供相关的资源(包括计算能力、存储空间、数据服务和网络带宽)。网络中的每台计算机都作为一个节点,这些节点在系统中扮演相同的角色,拥有相同的权利。对于整个点对点网络而言,其中的任意一个节点既是系统资源的提供者,也是系统资源的使用者。

  点对点网络系统在诸如文件分享、内容分发、隐私保护等方面都有一些很有趣的应用,其中大多数利用了一个简单而强大的想法:将网络的使用者同时转变成网络的构建者。这个做法最终导致了使用这些软件的人越多,这个软件背后的系统就越庞大,资源也就越丰富。在接下来的其他几讲中,我们会进一步讨论这个想法本身、它带来的后果,以及它面临的挑战。

  4、具有中心化与去中心化优势的混合系统

  中心化与去中心化是系统架构设计中的南北极。在实际应用中,工程师经常受到互相对立的两个技术方案的启发,从而创造出继承两者优点的混合系统。

  工程师们设计出两种原型来结合中心化与去中心化系统的架构,我们需要理解这两种原型方案,因为在现实世界中的区块链应用会用到这两种混合架构设计方法。这两种架构分别是:拥有中心节点的去中心化系统和去中心化系统作为中心节点的中心化系统。

  

  混合去中心化架构与去中心化系统作为中心节点的中心化架构

  上图展示了以上两种系统的基本结构。左边展示的是一个拥有中心节点的去中心化系统的架构图,第一眼看上去这个系统像是一个去中心化系统,节点之间具有互相的直接关联。但是仔细看一下会发现,所有的小圆圈均与中间的大圆圈相连,因此这个系统表面上看起来是一个去中心化的系统,实际上是一个中心化系统。

  右边展示的是一个完全相反的系统架构,该系统第一眼看起来是一个中心化系统,每一个外围的圆圈都和中间的大圆圈相连。但是事实上,中间的大圆圈包含了一个去中心化的子系统,外围的所有圆圈可能都无法感知到中间的圆圈内实际上是一个去中心化的系统。

  这两种混合架构系统有一个共同点:难以定义它们的本质是中心化的还是去中心化的。看起来并不需要给它们特殊的名字加以分辨,但是我们有必要指出它们的双重特质。这之所以重要是因为这些系统内在的中心化或去中心化本质有时候是很难分辨的。稍后当我们讨论区块链的商业化时,会重新回到这个话题上。

  区块链的作用 

  混合架构的出现,使得我们有时候很难分辨系统是不是去中心化的。如果你对于一个系统属于中心化系统还是去中心化系统心存疑虑,那么我教你一招:在系统中尝试寻找是否有一个组成部分(数据库、用户等级、登入 / 登出模块或是紧急停止按钮)可以直接关闭这个系统。如果你找到了,那么说明这个系统不是去中心化的。

  注:如果存在一个这样的单独节点,比如其有一个单独的关闭按钮可以切断整 个系统,那么这个系统就不是去中心化的。

  当设计一个系统时,我们像选择汽车用哪一种发动机一样,可以决定选择采用哪种系统架构,同时架构的选择可以与功能特征和应用层无关。这就意味着从满足同一个应用层的需求来看,我们可以选择中心化系统,也可以选择去中心化的系统,两个选择在最后的实现阶段意味着两种实现方法。因此,对于一开始提到的支付系统而言,我们既可以用去中心化系统架构,也可以用中心化系统架构。

  两种系统架构的设计理念都有各自独特的满足需求的方式,也都有各自的优缺点。对系统架构的选择会直接影响你达成系统功能需求的具体实现方法。特别地,这两种系统在确保完备性上拥有完全不同的方式,而这就是区块链引起人们注意的关键点:区块链是去中心化系统中用来实现并确保系统完备性的工具(可以将其看作在系统的实现层上满足非功能性特征的工具)。

  注:区块链的用途是实现且保持去中心化系统的完备性。

   

  在一个去中心化系统中实现并确保完备性非常复杂,并且其原理了解起来可能会有些无聊。但是,如果我们关注到去中心化系统会做什么,以及它们会取代哪些中心化系统,那么很多人都会感到兴奋。

  那么,这种可以改变世界的点对点系统究竟是怎样的?为什么说实现和确保去中心化系统完备性的区块链技术已具备了改变世界的潜力?

  更多内容详见《区块链基础知识25讲》

  

  点击书籍封面查看详情

  《区块链基础知识25讲》

  作者:丹尼尔·德雷舍 

  

  扫码查看详情

  区块链大本营用户8折优惠哦

  编辑推荐:

  全书尽可能避免使用数学 公式、程序代码和计算机科学术语,读者无需计算机科学、数学、程序设计和密码学方面的知识也可轻松读懂全书。这本书弥合了关于区块链的纯技术类书籍和纯商业类书籍之间存在的空白,通过解释构成区块链的基础技术概念以及这一技术在相关业务领域中的应用来让读者真正了解区块链。 本书适合程序员、金融从业人员以及对区块链技术感兴趣的读者阅读。 

  

版权信息
作者:区块链大本营
来源:区块链大本营

关于我们

联系我们

作者进驻

手机版

Copyright © 2013 比特巴 www.btb8.com
始建于2013年,提供比特币 区块链及数字货币新闻、技术教程、测评、项目周报、人物等资讯
本页面提供的是新手入门教程资讯,提供入门级的比特币知识、区块链知识以及各类数字货币知识,是数字货币爱好者入门、精通的好导师。