取消
加载中...
手把手教你秒懂区块链&数字货币(之六)|“分布式”到底是个啥?
Lucia 2018-02-13 18:13

写在前面:

最近区块链真心是“大火”了!小编身边朋友,不谈区块链的,简直就是和潮流脱节。今天呢,贴心的小编又要来继续为大家科普区块链专业知识了!不得不说,区块链实在是个太高深的概念,小编从今天开始,就把区块链“掰开了、揉碎了”来讲讲。

一看到区块链这个名字,很多人的第一反应是冲到百度百科去搜索“区块链”的解释,好吧,百度解释是这样说的:区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。在上面的解释当中,提到了“区块链是分布式数据存储”,一提起“分布式”,第一感觉就是好高大上啊,深不可测,经常看到各类大牛在文章或者谈话中经常提到分布式,然后一脸懵逼。到底什么是“分布式”呢?嗯,小编表示,今天的文章,我就是要来解决这个问题的!今天就和你聊聊什么是分布式。

So,各位看官,以下,Enjoy:

什么是分布式

分布式——一个高大上的名词,是计算机软件设计中人民群众喜闻乐见的“逼格满满”、“不明觉厉”的几个名词之一。但是它看似高深分布式,其实很好理解。分布式系统有多个含义:1)表示计算机科学的一个研究领域,研究方向。这个层面的分布式系统比较学术,不是本文讨论的对象。

2)工程领域的实际使用的分布式系统。分布式系统是互联网应用的基石,是底层的支撑平台。本文讲的分布式系统指这个层面。分布式,完全可以给它换一个词——“分工合作”。

分工合作能理解吗?有这么一件事情,你一个人做得10小时,但是10个人做,就算不是缩短到1小时,但也会缩短很多对吧。

你可以把你的程序写得很开放,但又很复杂。然后你把你的程序在10台电脑,甚至100台,1000台电脑上面都装上,不过你唯一需要保证的是——这1000台电脑之间能够互相通信,能够互相传递你的程序运行参数和状态,你的程序可以换句话说是由这1000台电脑共同运行的。

分布式程序其实概念上很简单,只是实践起来很辛苦,因为要组织很多东西在一起工作是很困难的。哪怕是人,别说1000个人,就是10个人,你组织他们协同工作都很困难了!

程序上也是如此,协同1000太电脑工作需要有十分复杂的协议和数学理论做支撑。

三个步骤完成华丽转身——任意软件变为“分布式”

你只要遵循下述步骤即可将任何一个软件拆分为“分布式”的:

第一步,将你的整个软件视为一个系统(不管它有多复杂)。

第二步,将整个系统分割为一系列的 Process(进程), 每个 Process 完成一定的功能。

第三步,将这些 Process 分散到不同的机器上。分散后,选择若干种(没错一种可能不够)通信协议把他们连接起来。

跳出误区,分布式不等于并行计算

人们常常把分布式系统自然而然的和并行计算联系起来。然而这并不正确。实际上,分布式系统并不一定是并行的,举个简单的例子就能理解——

某软件,功能如下:

提示用户输入两个数 A 和 B

在内部,对 A 和 B 执行某数学运算,获得 C

输出 C

很简单吧?这三个步骤是无法并行的。它们需要被依次执行。但是这个软件依然可以被改为分布式的,方法就是用前面提到的方法,把步骤 2 的计算过程独立为一个 Process 移动到另外一台计算机上完成。

如果我们从整个系统流程的观点来看,并没有什么并行。整个过程都是顺序执行的。只不过执行时出现了“跨设备”的现象而已。可见,分布式本身就只如其字面意思所指,指的仅仅是从结构角度的分散而已。

当然啊,现实世界中,我们更多的时候钟情于分布式,还是因为它与并行之间可以相互配合。例如实现既是分布同时也是并行的系统。

为什么要分布式

互联网应用的特点是:高并发,海量数据。互联网应用的用户数是没有上限的(取决于其开放特性),这也是和传统应用的本质区别。

高并发指系统单位时间内收到的请求数量(取决于使用的用户数),没有上限。

海量数据包括:海量数据的存储和海量数据的处理。这两个工程难题都可以使用分布式系统来解决。

简单理解,分布式系统就是把一些计算机通过网络连接起来,然后协同工作。协同工作需要解决两个问题:

1)任务分解

把一个问题拆解成若干个独立任务,每个任务在一台节点上运行,实现多任务的并发执行。

2)节点通信

节点之间互相通信,需要设计特定的通信协议来实现。协议可以采用RPC或Message Queue等方式。

简单总结,我们采用分布式,主要是因为以下两点:第一,为了性能扩展。系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力第二,为了增强可靠性。软件不是完美的,网络不是完美的,甚至机器本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度。

区块链的技术基础:分布式账本

通过以上了解了分布式的设计原理,我们就可以很容易地理解区块链技术的实现,它的基础就是分布式账本。

那么什么是分布式账本呢?分布式账本是一种在网络成员之间共享、复制和同步的数据库。分布式账本记录网络参与者之间的交易,比如资产或数据的交换。

网络中的参与者根据共识原则来制约和协商对账本中的记录的更新。没有中间的第三方仲裁机构(比如金融机构或票据交换所)的参与。分布式账本中的每条记录都有一个时间戳和唯一的密码签名,这使得账本成为网络中所有交易的可审计历史记录。

区块链是就是分布式账本的一种实现,一种防篡改的、共享的数字化账本,用于记录公有或私有对等网络中的交易。账本分发给网络中的所有成员节点,在通过哈希密码算法链接的区块的顺序链中,永久记录网络中的对等节点之间发生的资产交易的历史记录。

所有经过确认和证明的交易都从链的开头一直链接到最新的区块。区块链可以充当单一事实来源,而且区块链网络中的成员只能查看与他们相关的交易。

分布式账本赋予的优势

在传统业务网络中,所有参与者都维护着自己的账本,这些账本之间的重复和差异会导致争议、更长的结算时间,而且因为需要中介,还会导致相关的间接管理成本。但是,通过使用基于区块链的共享账本,交易在通过共识性验证并写入账本后,就不能再更改,这样企业就能节省时间和成本,同时减少风险

因为没有参与成员拥有共享账本中所含信息的来源,所以区块链技术会提高参与成员之间的交易信息流中的可信度和完整性。

区块链技术的不变性机制降低了审计和合规性成本,增加了透明性。而且在使用区块链技术的业务网络上,合约得以智能、自动化执行并最终确认,所以企业会获得更高的执行速度、更低的成本和更少的风险,所有这些使企业能构建新收入流来与客户交互

(完)

 

三言财经

三言两语白话区块链和数字货币,从入门到精通,看我就够了!

   

Lucia
文章总数
455