区块链世界(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-30 16:08:31

点击下载

作者:井底望天等

出版社:中信出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

区块链世界

区块链世界试读:

上篇

第一章缘起技术人的挑战

2011年9月17日,在美国纽约曼哈顿,上千名示威者聚集起来试图占领华尔街。有些人甚至带了帐篷,扬言要长期坚持下去。这些人通过互联网组织起来,意图把华尔街变成埃及的开罗解放广场。示威组织者称,他们的意图是反对美国政治的权钱交易、两党政争以及社会不公正。在年轻人中间盛行的这股力量,后来成了在2016年美国总统初选中支持民主党议员桑德斯的主要力量。

2011年10月8日,“占领华尔街”抗议活动呈现升级趋势,千余名示威者在首都华盛顿游行,逐渐发展成为席卷全美的群众性社会运动。11月15日凌晨,纽约警方发起行动,对“占领华尔街”抗议者在祖科蒂公园搭建的营地实施强制清场。奥克兰警方于10月25日向示威人群使用警棍清场,事件演变为流血冲突。“占领华尔街”运动只是人们向以华尔街为代表的金融系统多年来所作所为发泄愤怒的一个写照。进入21世纪以后,华尔街金融衍生品泛滥以及美国房地产的泡沫,引发了美国次贷危机,从而导致了2008年金融危机的暴发。美联储于是紧急向金融系统注入流动性以稳住市场信心。华尔街将垃圾级别的贷款打包、斩件再出售,不仅赚取了可观的收益,在危机发生后各大商业银行更由于“大而不能倒”,还获得了美国政府的巨额财政救助。在危机时,金融系统从业人员照样拿着高薪以及高额的奖金,其贪婪与作恶已经引起了整个美国的愤怒。同时,华尔街金融人士和美国普罗大众之间的贫富差距也越来越大。人们也在深深地反思,金融系统的复杂性、封闭性和垄断性正是造成这种现象的一个重要原因。金融系统迫切需要改革,以恢复金融服务实体经济的本质。图1.1 占领华尔街资料来源:http://finance.sina.com.cn/zl/stock/20141110/075620774136.shtml?qq-pf-to=pcqq.c2c

当2008年华尔街金融精英们导致的全球金融危机席卷民众生活的时候,一些全球技术精英,尤其是美国硅谷的高科技精英,常常有种以天下为己任的自傲心态。当他们和整个社会的实体经济(Main-Street)被华尔街金融精英的虚拟经济(Wall-Street)所激怒的时候,想出了一个技术上的解决方法,来实现人类社会不需要金融机构的参与,彻底解决华尔街腐败绑架全社会的终极方案。

2009年1月3日,《泰晤士报》(The Times)头条以“Chancellor on brink of second bailout for banks”作为标题,说英国财政大臣正处于实施第二轮银行救助的边缘,英国央行将对国内的银行进行财政救助,也就是政府要印钞票来借钱给银行。

此时一个自称中本聪(Satoshi Nakamoto)的人,构建了数字密码货币——比特币系统的第一个创世区块,并把这则新闻写了进去(如图1.2圆圈内所示)。“Chancellor on brink of second bailout for banks”——这句话是一个讽刺,也是一个证据,证明了此区块的生成时间在“2009年1月3日”这个报纸的标题出现之后。有观点认为,中本聪发明比特币就是要抗议政府滥发钞票所造成的通胀。图1.2 比特币创世区块资料来源:https://en.bitcoin.it/wiki/Genesis_block

中本聪曾经说过,“传统货币的根本问题,正是来源于维持它运转所需要的东西——信任。人们必须要相信中央银行不会有意劣化货币,可是法币的历史却充满了对这种信任的背叛。我们被动地相信银行,银行持有并电子化地转移了我们的钱,可是银行却在部分保证金制度之下,通过一浪接一浪的信用泡沫将货币抛撒出去。我们被动地、无隐私地信任银行,相信它们不会让窃贼盗用我们的账户。同时银行庞大的支出使小额交易难以通过银行完成”。这段话已经非常清晰地表达了中本聪对银行体系和信用货币的失望,随后比特币的问世也就顺理成章了。

中本聪于纽约时间2008年10月31日在一个隐秘的密码学讨论组上贴出了比特币系统的白皮书(一种点对点的电子现金系统),中本聪在白皮书里完整地阐述了比特币的原理以及他对虚拟货币的看法。

概括来讲,比特币是一套准货币发行系统,也是一套货币流通、结算网络,不但可以解决现有信用货币的超发问题,也实现了低成本、准实时的货币结算。

比特币总量固定,发行有规律,不会产生超发,不会引起通货膨胀,还会有适度的通货紧缩。比特币的发行完全是公开、透明以及可验证的,同时能解决数字货币的“双花”问题(Double Spending Problem)。比特币的运行需要矿工进行类黄金挖矿(特殊的工作量证明机制),矿工们参与比特币系统的发行以及手续费的收取,在每一个发行的比特币中都凝聚了矿工的算力。虽然挖矿被认为是不环保、浪费能源的,但是挖矿模式是迄今为止维持时间最长、运行状态良好的验证方式。

比特币流通网络上没有过多的中间商,只有矿工的手续费,摒除了依附在现有货币流通网络上面的多个中间环节,而且比特币的货币流通、结算系统是准实时的,比现有货币结算系统通常的T+1快了很多,解决了货币结算的复杂性问题。

比特币系统从2009年的第一个创世区块开始已经走过了七年的时间,截至2016年9月已经挖了四十几万个区块。2013年后比特币被剧烈炒作,价格大幅波动,引起了投机炒作资金的关注,同时也引起了各个国家监管部门的高度重视。图1.3 近年比特币币值暴起暴跌的走势图资料来源:取自比特币中国交易软件,https://spot.btcc.com

正是比特币系统对央行的法币持有哈耶克式的浪漫情怀,也导致了各国的金融监管部门和中央银行对比特币系统的暧昧态度。一方面,政府机构不能接受比特币系统对法币系统的权威提出挑战;另一方面,比特币这种新生事物的技术内涵又引起了政府的关注。

比特币的出现是希望解决金融系统的问题。在IRC(Internet Relay Chat,互联网中继聊天)中,中本聪留下这样的话:“Yes,(we will not find a solution to political problems in cryptography)but we can win a major battle in the arms race and gain a new territory of freedom for several years.Governments are good at cutting off the heads of a centrally controlled networks like Napster,but pure P2P networks like Gnutella and Tor seem to be holding their own.”

“(Bitcoin is)very attractive to the libertarian viewpoint if we can explain it properly.I’m better with code than with words though.”

译文是:“是的,我们无法找到通过密码学解决政治问题的途径,但是我们可以在军备竞赛中获取重大战役的胜利,同时夺取自由的新疆域。政府擅长打败Napster那样的中央控制的网络,但是对Gnutella和Tor这样纯粹的P2P(点对点)网络可能束手无策。”“如果我们能恰当地表示比特币系统的概念,对自由主义者来说是非常有吸引力的。不过我更擅长的是编程而不是言辞。”

但是要对金融系统进行改革,显然通过一个数字密码币是解决不了问题的。但是,比特币的去中心化、公开、透明以及安全等特征正是当前金融系统所缺少的,这些特性的支撑技术就是区块链。于是,区块链便开始正式进入人们的关注视线。

由于中本聪始终处于匿名状态,所以,猜测他的想法也是非常有趣的。比如,他在P2P Foundation.ning.com注册时提供的出生日期是1975年4月5日,对研究货币的人来说,4月5日在历史上也是具有重要意义的一天。在1933年4月5日,美国总统富兰克林·罗斯福签署了6102条国家紧急安全法(Executive Order 6102),法令规定所有美国公民持有黄金是非法的。罗斯福没收充公美国人的黄金,并以美元交换,然后让美元贬值了40%,强制将黄金价格从20美元推高到35美元。他这样做的目的是让美国的债务贬值,从而对抗大萧条。然而一些人说他盗窃了美国人40%的钱,有许多人认为这是美国政府所作所为中最违反宪法的行为之一。直到1975年,美国人才可以再次合法地拥有黄金。所以有人认为,把4月5日和1975年结合在一起,中本聪成功地挖苦了美国政府的这种行为。早期密码货币

说起数字密码货币,比特币其实并不是第一个吃螃蟹的。

比特币的许多核心概念都是在一个叫密码朋克(Cypherpunks)的网络社区里发展起来的,这是一帮密码天才的松散联盟。密码朋克本身就是数字货币最早的传播者,在其电子邮件组中,常见关于数字货币的讨论,并有一些想法付诸实践。在比特币之前,就有很多数字密码货币的失败尝试。

亚当·贝克(Adam Back)是英国的一位密码学家,1997年,他发明了哈希现金(Hashcash),其中用到了POW。这个机制的原型是用于解决互联网垃圾信息问题的,后来成为比特币的核心要素之一。

哈伯和斯托尼塔(Haber and Stornetta)在1997年提出了一个用时间戳的方法保证数字文件安全的协议,这个协议成为比特币区块链协议的原型。

戴伟(Wei Dai)是一位兴趣广泛的密码学专家,他在1998年发明了B-money,B-money强调点对点的交易和不可更改的交易记录。不过在B-money中,每台计算机各自单独书写交易记录,这很容易造成系统账本的不一致。戴伟为此设计了复杂的奖惩机制以防止作弊,但未从根本上解决问题。中本聪发明比特币的时候,借鉴了戴伟的很多设计,并和戴伟有很多邮件交流。

哈尔·芬尼(Hal Finney)是一位顶级开发人员,也是密码朋克运动早期的重要成员。2004年,芬尼推出了自己版本的电子货币,在其中采用了可重复使用的工作量证明机制(RPOW)。哈尔·芬尼是第一笔比特币转账的接收者,在比特币发展的早期与中本聪有大量互动与交流。由于身患绝症,哈尔·芬尼已于2014年离世。

中本聪在发给一个安全研究人员的信中,诠释了比特币将如何避免重蹈这些前辈的覆辙:“你们知道,我想很多人对20世纪90年代的事情很感兴趣,但是经过10多年基于第三方可信任系统的失败(DigiCash等),他们认为这是一次注定失败的努力。我希望他们可以做出不同的判断,因为这是我第一次知道我们在尝试一个不基于第三方信任的系统。”区块链的起点

2009年1月,中本聪挖出了比特币的创世区块,获得了50枚比特币,同时也宣告了比特币的正式诞生——这件在今天看来举足轻重的事情,在当时却并没有被世人重视。在诞生之后相当长一段时间内,比特币仅仅是数字密码货币圈内人的“玩具”。

但是酒香不怕巷子深,渐渐地,比特币的名气越来越大,数字货币的“前辈”们也纷纷为它点赞。戴伟称比特币“具有划时代的意义”;尼克·萨博(Nick Szabo)——BitGold发明者,称赞比特币是“对世界的伟大贡献”;哈尔·芬尼认为比特币“拥有改变世界的潜力”。

2010年5月22日发生了数字密码货币史上极具历史意义的一个故事,但在当时是那么地平常。美国佛罗里达州的程序员拉斯勒·豪涅茨(Laszlo Hanyecz)在论坛上发帖称,想出售10000比特币,要价50美元——但是没有人买。还好有人表示,愿意用价值25美元的比萨饼优惠券换这10000比特币,拉斯勒答应了。这是比特币的第一笔交易,这一天也被比特币界确定为比萨日。

不过看看当时比特币多便宜啊,1美分能买4个比特币。2011年比特币的币值开始快速上升,当年买比萨的10000比特币已经升值到27万美元,拉斯勒自己调侃道:“I don’t feel bad about it.The pizza was really good.”(意思是:我没觉得有什么不爽,那个比萨确实很好吃。)当然这10000比特币的价值后来一度超过了1000万美元。其实,如果没有这开天辟地的第一桩买卖,后面比特币能不能真的用起来还不知道呢。如果用不起来的话,自然也没人炒作,比特币也许就没有之后的高价了。如果说1000万美元买个青史留名,还送一个比萨,那他心里应该平衡多了。

自此,比特币开始逐渐被人们所接受,越来越多的人愿意接受比特币的支付,也有越来越多的人开始加入比特币的“挖矿”事业,比特币的生态开始形成。为了方便人们支付,从事电子钱包的公司开始诞生;为了方便比特币流通,虚拟币交易所开始诞生;为了方便人们购物,接受比特币支付的购物网站也开始诞生。一切都是那么生机勃勃,比特币相对传统货币的各种优势,使人们开始憧憬比特币未来的美好前景。随着应用范围的逐步扩大,以及人们预期的爆棚,比特币的币值开始水涨船高。比特币的技术突破

比特币解决了一个长期存在于加密数字货币行业的问题——“双花”问题。在区块链加密技术出现之前,加密数字货币和其他数字资产一样,具有无限可复制性(就像我们始终有能力将一个邮件附件保存无数次)。如果没有一个中心化的管理机构,我们则没有办法确认一笔数字货币是否已经被花掉。所以很明显,在交易中一个可以信赖的第三方是必要的(不管是银行,还是像支付宝这样的大企业),这些第三方将会保留交易总账,从而保证每一笔数字现金都只会被花掉一次。

比特币通过点对点文件分享技术和非对称加密技术相结合,创造出了一种新式的数字货币,从而解决了“双花”问题。货币的拥有权是由公共总账来记录,并由加密协议和挖矿社区来确认的。区块链是“无须信任”的,因为用户并不需要信任交易中的另一方或任何中心化的媒介机构,但是需要信任这个系统,即区块链协议下的软件系统。区块链中的各个“区块”就是一组一组的交易,它们被陆续发布到总账上——也就是说,这些区块被加到“链”上去了。区块链的总账可以通过区块链浏览器被公开查看,在那里你可以输入一个区块链地址查看一串交易流。

而困扰去中心化密码货币的拜占庭将军问题,随着比特币和随后一系列密码货币的努力,也逐步得到了解决。“双花”问题和拜占庭将军问题的解决,奠定了区块链发展的基础,而比特币也成为区块链发展中的第一个里程碑。比特币的产生与交易

比特币的点对点交易是在比特币客户端软件上完成的,每次交易从一个节点与另一个节点的身份确认开始,然后在整个网络上进行广播。累积一定时间的广播消息记录会在进行“挖矿”的节点上与一个随机数合并,进行“散列计算”,这个随机数叫nonce。网络自动根据全网的算力来调整可接受散列值的要求(前置0的个数,也即散列值的大小),使得运算出结果的期望时间在10分钟左右,这个要求叫“难度”。散列值的长度是固定的,如果要找到足够小的散列,就要尝试更多次的nonce,每当找到一个符合难度要求的nonce,网络就奖励该节点一定数量的新比特币(最初是50个,现在是25个,每4年减半)。

在早期,使用普通电脑的CPU就能非常容易地制造新的区块从而挖到比特币,当越来越多的人开始挖矿时,计算难度不断加大,很快用CPU挖矿已经无利可图。之后矿工们开始使用高端显卡参与挖矿。

CPU主要被设计用于处理和判断,擅长进行逻辑运算。而GPU主要用于图形处理,具有高吞吐量和高并行处理功能,这两点对比特币挖矿都非常有利。比特币挖矿存在大量的并行处理,因为矿工需要同时用不同的临时随机数计算多个哈希值。加上显卡很容易购买,并集成多个GPU到同一主板上,因此第二代矿工开始用显卡挖矿。

不过,GPU挖矿也有缺点,GPU内包含的图形处理硬件对比特币挖矿没有任何用处,同时GPU的发热和耗电问题严重。

2011年前后,运算能力比高性能显卡高得多的FPGA(Field-Programmable Gate Array)矿机开始出现,即现场可编程门阵列,一种半定制电路芯片的矿机。其工作原理是在追求定制硬件最佳性能的同时,可以调试或者修改硬件参数。但FPGA只是昙花一现,因为算力功耗方面的原因很快又被ASIC(Application Specific Integrated Circuit,专用集成电路)矿机超越。

ASIC比特币矿机专为比特币挖矿算法设计,只能用于挖矿,其他什么都干不了,ASIC的运算能力比FPGA矿机高很多,ASIC的出现使得显卡挖矿最终成为历史。

随着硅片加工精度的提升,专用集成电路可以得到性能更好、功耗更低、产量更大的芯片,但与此同时开发的一次性投入也相应急剧增加。130纳米、65纳米、28纳米、14纳米,然后就到现有半导体技术的极限了。

而随着挖矿难度的不断加大,将异地或本地的大量定制矿机,用嵌入式的专用计算机通过网络通信集合在一起,加入矿池集体挖矿就成为必然的趋势,单台矿机现在已经很难再挖到比特币了。第二章演进

区块链概念起源于比特币系统。比特币之前的数字密码货币之所以失败,就是因为无法摆脱对第三方信任的依赖。

直到2015年初,区块链这个概念才开始被社会大众所关注,行业教育也从那时才开始进行。随着社会关注越来越多,围绕区块链的技术和商业应用,也在越来越迅猛地发展。

区块链最初的学术定义为由包含交易信息的区块从后向前有序连接起来的数据结构。图2.1 比特币区块链示意图

因为区块链是比特币系统的主要支撑技术,在比特币系统中区块链就是记录所有比特币交易的公开账本。每个新增加的区块里面存储了矿工们最近的交易记录,然后按时间顺序依次被添加到区块链上。区块链存储在由多个节点组成的分布式网络系统上。每个完整的节点都存储有整个区块链的副本,而每一个计算机节点之间通过网络进行比特币交易信息的共享。

同时区块链也是一个交易数据库,其中存储的是在系统中由所有节点共享的信息,称为分布式加密总账本。通过这个总账本,区块链实现了其不需要一个中央权力机构或受信任的第三方来协调互动、验证交易或监管行为的特征。一个区块链上的完整副本包含了每一个曾经执行的交易,使得历史上的任何信息都可以被任何一个参加的节点所访问。

简单来讲,区块链包括三个要素:

● 共享状态;

● 通过区块来更新共享状态的规则;

● 一个用于标记时间的信任模型。

这三个要素解决了分布式加密总账本的三个主要问题:

● 共享过去所有交易历史的状态,建立了保存功能;

● 更新状态的规则,解决了数据安全性的问题;

● 使用信任模型来标记成员的交易,可以完成验证功能。

区块链是一种可以使数据通过协议在多个独立计算机组成的网络间共享的软件技术。区块链具有三个明显的特性:公开性、安全性和唯一性。

➢ 公开性

公开性是指区块链中存储的信息对所有的参与者完全公开。这一点是由区块链的点对点网络存储方式决定的。在区块链网络中,每一个节点都可以存储区块链的副本,而区块链的唯一性保证了这一副本在不同节点之间完全相同。

➢ 安全性

安全性是指区块链上的信息是通过数字加密技术保存的,只有持有相应解密信息(私钥)的成员才能够解读信息。其他成员虽然可以看到并验证信息的完整性和唯一性,但无法获得私钥本身。

➢ 唯一性

唯一性是指区块链上存储的信息不可更改。这既包括在空间上的唯一性,即所有节点都只有一个相同的信息;也包括在时间上的唯一性,即历史数据不可更改。

同时,区块链的唯一性还指区块链在运行过程中保持唯一的一个链条的特性。因为如果出现不同的链条,区块链就形成了分叉,分叉的出现会使得区块链在两个不同的空间维度中出现副本,而这正是要通过共识的规则来避免的。区块链去中心化“论天下大势,分久必合,合久必分”,这是历史的规律。“合”的意思就是集中管理,也可谓中心化;“分”的意思就是分散管理,也可谓去中心化。

中心化的好处是认证、管理机制明确统一,可以集中力量办大事,效率高;而弊端是管理、仲裁工作庞杂,机制上的任何缺陷都会造成整体的受损,同时缺少权力的制约,从而出现不堪重负或者集中力量办坏事的情况。所以就有了去中心化来弥补中心化的不足。

从社会发展上来讲,在以前由于技术的限制和制度的约束,不管是人人自由还是人人平等,理想都很丰满,但现实有点骨感。而区块链的出现在技术上实现了真正去中心化的可能,而这也必将促进社会的变革和进步。

那么区块链是如何在技术上实现去中心化的呢?核心主要是以下三种技术。加密技术

加密技术体系有多种分类。基本来讲,可以将加密技术体系分为对称加密体系和非对称加密体系,两个体系各自有不同的使用场景和技术路线。图2.2 对称加密

对称加密算法在加密和解密时使用的是同一个密钥,这就决定了对称加密算法的两方需要事先进行密钥协商,或者通信的双方需要预先知道双方使用的密钥,保证一方的加密可以被另一方解密。

非对称加密算法需要两个密钥来进行加密和解密,其中一个是公开密钥(public key,公钥),另一个是私有密钥(private key,私钥)。公钥是可以公开的,也需要通过公共的渠道公开给相应的通信方;而私钥是非对称加密算法中的关键,需要安全地保护好。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果使用私钥进行数据的签名,只有公钥可以来验签。图2.3 非对称加密

因为加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。由非对称加密算法形成的非对称加密体系解决了信息公开传送和密钥管理问题,是一种新的密钥交换协议,允许在不安全的媒体上的通信双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。

➢ 非对称加密算法

● 非对称加密与对称加密相比,其安全性更好。

● 非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。比特币采用椭圆曲线加密算法来产生公钥和私钥,钱包地址即公钥,私钥由用户保存。

➢ Hash算法

区块链系统中除了使用非对称加密算法之外,另一个重要的密码技术是Hash算法或者叫散列技术。

所谓Hash,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间长度通常远小于输入的空间长度,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一确定输入值。或者简单地说,就是一种将任意长度的数据信息压缩成某一固定长度的数据信息摘要的函数。图2.4 Hash算法

散列函数有一个基本特性即免碰撞性:一方面,如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的——这个特性使得散列函数具有确定性的结果;另一方面,散列函数的输入和输出不是一一对应的,如果两个散列值相同,则两个输入值很可能是相同的,但并不能肯定二者一定是相等的。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。

区块链系统一般采用Hash算法来快速验证用户的身份。如果用户宣称对某个钱包具有所有权并且要改变钱包对应的信息(在比特币中,就是使用钱包中的余额),他必须提交一个请求,这个请求包括三个部分:钱包地址、明文请求、明文请求由钱包对应的私钥Hash过的签名。这个请求将被发送到区块链网络中。每个节点可以用钱包的公钥来验证这个请求是否对应于这个签名,也就是通过这个办法来验证用户对钱包的所有权(拥有合适的私钥,但是不需要公开这个私钥)。图2.5 区块链的公钥和私钥

相比非对称加密,Hash算法一般快几个数量级以上,从而使得验证的过程可以非常快速。常用的Hash算法有:MD5、SHA1、SHA256、SHA512、HMAC等。点对点通信技术

点对点通信技术,是一种对等连接的互联网技术,依赖网络中参与者共同的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。这类网络可以用于多种用途,各种档案分享软件已经得到了广泛的应用。P2P技术也被应用在类似VoIP等实时媒体业务的数据通信中。

纯点对点网络没有客户端或服务器的概念,只有平等的同级节点,同时对网络上的其他节点充当客户端和服务器。这种网络设计模型不同于传统的“客户端—服务器”模型,在“客户端—服务器”模型中通信通常来往于一个中央服务器,而中央服务器就是系统中的单点故障源头。点对点技术形成的网络,由于设计和实施方案的不同,出现了不同的网络模型。图2.6 点对点网络

➢ 纯P2P网络模型

在此模型中,网络节点同时作为客户端和服务器,没有中心的服务器,没有中心的路由器。这样形成的网络完全根据系统中节点的活跃程度来保持,网络通信也主要是节点之间路由信息的广播,系统中的通信冗余比较大。

➢ 分层式P2P网络模型

在此模式中,网络节点的角色更加丰富,网络中有一个中心服务器保存节点的信息并对请求这些信息的要求做出响应。同时节点负责发布这些信息(因为中心服务器并不保存文件),使得中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。路由终端使用地址,通过被一组索引引用来取得绝对地址。

主要特征为:

其一,所有节点参与提供资源,包括带宽、存储空间和计算能力;

其二,网络的分布式,增加了系统的防故障的健壮性,消除了单点故障。

主要应用为:

文件共享:Napster、Gnutella、BitTorrent、eMule、Maze;

即时通信:Skype、GTalk、QQ;

流媒体:PPLive、PPStream、AnySee;

共享存储:CFS、Total Recall、Ocean Store、Granary;

对等计算:SETI@home、Groove。分布式共识技术

由于点对点通信,分布式系统或者点对点网络中,每个节点是按自己的规则运行的。为保持整个系统数据的一致性,需要借助分布式共识技术。传统的分布式技术中,由于本身的技术特点并不需要数据的一致性,更多的是需要数据的准确性,包括主从、Sharding技术等,但是在点对点网络中每个节点之间并没有依赖关系,所以就更需要数据一致性的机制。

分布式系统的一致性算法是从20世纪70年代就开始研究的经典问题。理解分布式共识算法,需要理解两个名词,分别是“异步”和“共识”。

异步:此处的异步不同于通常技术术语中的“异步调用”的异步,而是指在一个分布式系统中,对消息的处理速度或者消息送达时间不做任何假设。这就是著名的FLP不可能性定理。

共识:当多个主机通过异步通信方式组成网络集群时,这个网络默认是不可靠的,那么在这些不可靠主机之间复制状态需要采取一种机制,以保证每个主机的状态最终达成相同一致性状态,即取得共识。

➢ CAP理论

CAP理论又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。图2.7 CAP理论资料来源:http://baike.baidu.com/link?url=EW1nkdPTyZOpicODQMnGqgZr7i9OgnpG4vU2MtoWY1CIoovQJwG_vVe_9MM3USwKKmN7cH7yFqIti74QTay4-q

这是由分布式系统本身的特性决定的,包括网络的异步性质和通信的不可靠性质等,所以在分布式系统设计中,需要对这三者进行选择,根据系统的设计需求进行考虑。

➢ 节点通信方式

在分布式系统中,节点通信技术分为共享内存(Shared Memory)和消息传递(Messages Passing)两种方式。

共享内存是指通信的多方在某个区域有公共的数据操作区域,解决了多方的数据交互问题,共享内存方式是多方通信比较直接和有效的方式,但缺点也是比较明显的,就是公共区域需要进行互斥操作,避免由于一方的操作影响另一方,所以在多方协同方面需要专门的设计。

消息传递是指多方在通信方面直接借助消息包进行交互,这种消息包的传递可以是系统内的,也可以是系统外的;可以是文件型的,也可以是网络型的。消息的多方之间互相不影响,但是消息传递增加了分布式系统的设计难度。

➢ Paxos

Paxos是最初、最简单的分布式共识算法,是Leslie Lamport(莱斯利·兰伯特,也是LaTeX的实现者)于1990年提出的一种基于消息传递的一致性算法,是通过节点之间来回两次实现状态复制。

Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么它们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。

Paxos算法难以理解,更难以实现。

基于Paxos算法也产生了一些改进算法,例如Egalitarian Paxos、Fast Paxos与Multi-Paxos等。

➢ Raft

Raft正是基于Paxos算法不容易理解和实现而提出的,Raft通过在系统中引入强势领导者来解决相互系统之间的协调问题,Raft是Paxos的简化版本。Paxos和Raft的区别在于选举的具体过程不同。

在Raft中,任何时候一个服务器都可以扮演下面的角色之一:

Leader:处理所有客户端交互、日志复制等,一般一次只有一个Leader;

Follower:类似选民,完全被动;

Candidate:候选人:类似Proposer律师,可以被选为一个新的领导人。

Raft分为两个阶段:首先是选举过程,然后在选举出来的领导人的带领下进行正常操作,比如日志复制等。

➢ PBFT

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载