当微服务撞上区块链

2018-03-12 14:43:39 csdn  点击量: 评论 (0)
导语:每一种新技术的产生与发展,都会与既有的技术与实践存在着联系,例如微服务作为一种技术架构,实际上是在SOA架构和JavaEE等分布式架

导语:

每一种新技术的产生与发展,都会与既有的技术与实践存在着联系,例如微服务作为一种技术架构,实际上是在SOA架构和JavaEE等分布式架构的基础上,进一步明晰了服务实现的方式与规则。区块链技术脱胎于比特币,作为一种多方信任的交易和技术模型,被包括国家、政府、监管机构等诸多业务方所关注,反而是技术从业者有些茫然,这一技术到底是什么,解决什么问题,能够用在哪里普元近年来持续对微服务和区块链技术进行了研究,这里和大家分享一下研究的成果。我们的研究重点放在了如下几个方面:

 

  • 区块链技术适用的应用场景有哪些,该技术带来的价值是什么?
  • 区块链技术是由哪些技术组合而成,和现有技术的关系如何?
  • 采用区块链技术后,应用技术架构是什么,与微服务架构的关系,现有应用如何进行迁移?

 

区块链的业务价值是通过数据共享降低信任成本

区块链技术是从比特币开始的,2008年由中本聪提出开始,造成了一个比特币的热潮。但是,比特币的热潮退去后,比特币提出的问题和解决方式却吸引着我们。2014年左右区块链逐步从比特币中脱离出来,做为一种独立的技术发展,进入了 2.0 时代,以数字资产的方式解决商业的信任问题,同时用数字化手段提高业务的效率,在很多业务中已经有了尝试。

 

做为一种独立的技术发展,区块链分为公有链、联盟链、私有链三个方向。而从业务角度看,区块链的核心价值在于通过数据共享建立了多方的信任机制。

 

多参与方业务产生的信任问题是采用区块链技术的源动力

信任问题,始终是一个大问题,为了解决信任问题,人类投入了大量的时间和金钱。尤其是多个参与方参加的业务,信任的成本更高,这里我举一个复杂的例子:信用证业务(参见下图),信用证是指开证银行应申请人(买方)的要求并按其指示向受益人开立的载有一定金额的、在一定的期限内凭符合规定的单据付款的书面保证文件。信用证是国际贸易中最主要、最常用的支付方式(摘自百度百科)。

 

之所以举这个例子,是因为区块链技术适用的场景往往是业务比较复杂的情况,简单例子很容易被误解,这里我通俗易懂的解释一下,在国际贸易活动,买卖双方往往互不信任,进口商(买方)担心预付款后,出口商(卖方)不发货;卖方担心发货后买方不付款(类似诈骗经常发生,例如卖方把货运到码头了,买方就是不付余款,于是只能在当地贱卖,这时买方再去抄底),典型的麻杆打狼两头怕。因此双方各找了一家银行作为担保人,由两家银行之间开具凭证,代理进口商、出口商之间业务往来,达到条件后由银行付款,减少进口商、出口商的风险,这就是信用证业务。即使这样,信用证诈骗还是很多,银行为规避风险,需要各种书面的证明,反复各种确认…业务处理周期会非常长。

上图中信用证业务的参与方包括出口商、进口商、开证行、通知行、寄单行/附议行、运输公司,是一个典型的多方参与业务,但通常这些参与方只是一部分,可能还会有海关、保险公司、评级机构等机构加入到交易链条中。

 

多参与方业务解决信任问题,现有方案成本高在哪里?

 

解决多参与方业务的信任问题,现在是通过建立第三方机构完成的,例如上述信用证业务,就是通过SWIFT组织(环球同业银行金融电讯协会)的SWIFT系统开立信用证,银行和其他金融机构通过它与同业交换电文来完成金融交易,由 SWIFT 进行银行间转发。

 

SWIFT仅仅解决了一部分的问题,还差很远,例如:
业务上:那些没有参加到 SWIFT 的组织无法通过 SWIFT 进行交易,例如一些进口商、出口商、保险公司等等,SWITF也不能做清算,因此银行在办理信用证业务的时候,只有反复通过各种其他方式确认,避免诈骗发生,导致业务非常复杂,流程很长;


技术上:多方参与的业务,一旦在处理业务时发生技术故障,处理起来就远比普通业务复杂。为了保证少出问题,技术上的投入会很高,记得用过很多手段,例如曾经给每个参与方做过应急系统,采用过两个不同厂商的SWIFT网关互为备份,安排专人排班管理异常情况,而且每个中心接入的标准和模式也不一致,接入中心机构带来的开发/维护成本都很高。


必须说明的是,为了能把业务讲清楚,我还是简化了很多内容,例如如何进行银行间清算、如何进行付款等等。总之,建立一个第三方机构来解决信任问题,无论在业务上、技术上复杂度都很高。

区块链技术是通过数据共享降低信任成本的

 

如果有一个分布式的记账簿:(1)参与方在记账之后有相当多的副本存在,不再是一家之言;(2)保证提交的交易一定被记录下来;(3)保证记账不可逆,无法篡改;(4)参与方的交易记录是相对透明的,可以通过这些记录验证新的交易。


如果有机构建立了这样一个记账簿,每个参与方在交易中都通过这个记账簿进行交互,保证每一笔发生的交易一定被可靠的记录下来并不可篡改,不就不必再反复确认,不必担心技术问题导致的业务流程变更,不必做应急系统,这样成本就低多了。

 

通过分布式的记账簿进行数据共享,从而降低信任成本,这就是区块链技术的价值。

 

联盟链才是应用区块链技术优先选择的方向

 

既然区块链是一个分布式的记账簿,那这个记账簿由谁来建立呢?这是这一技术应用的核心问题。
目前建立记账簿的方式有三种:

  • 公有链,象互联网一样,做为一种开放的网络基础设施,向任何人公开,任何人自由加入,
  • 私有链,一个组织内部建立,可以帮助组织内部完成审计等工作
  • 联盟链,为特定业务由相关核心企业建立,采用多中心(每个核心企业为一个中心)的方式,其他上下游企业加入

建立公有链难度高,业务场景不够精准,分布式存储带来的性能低下问题阻碍了可用的应用场景,而私有链脱离了区块链的商业价值,只是把区块链做为一个技术组件使用。在目前的应用场景中,绝大多数都可以用联盟链解决,商业上相对容易成立,性能远远高于公有链。

 


从上述描述就可以理解到,公有链太理想,私有链所处理的问题,传统架构完全能解决,而针对特定业务由企业联盟建立的联盟链,应用方向更清晰,业务价值也更加明确,下图是一个联盟链的示例:

从应用的角度看,区块链技术提供的是一个分布式数据库

区块链技术的数据共享方式要满足(1)多副本、(2)可靠记录、(3)不可篡改、(4)多方透明几个特性,上述特性总结下来,采用区块链技术后,应用技术架构如上图所示,可以看出,区块链技术对应用而言,就是一个分布式数据库。

 

区块链技术的本质是分布式数据库

区块链基于密码学中的椭圆曲线数字签名算法(ECDSA)来实现去中心化的P2P系统设计。当人们在谈论或使用“区块链”这个词时,有时候是指数据结构,有时候是指数据库,有时则是指数据库技术。


和区块链技术比,分布式数据库的概念显然更容易被理解,我就从分布式数据库的一些基本概念出来,理解区块链的技术实现,这些概念包括数据存储、点对点可靠传输、存储过程与触发器(智能合约)、数据安全:

 

分布式数据存储:链式存储与共识机制

区块链技术的数据共享是一个分布式的记账簿,交易记录具备多个副本,因此首先要解决分布式数据存储的问题。

 

1)区块链存储的基本单元是区块,区块采用链式结构,即新增的区块(类似数据库一行记录)都知道自己前一个区块(前一行记录)是什么,可以一直追溯到根,区块的标识是区块的哈希值,同时链式结构保留了业务产生的轨迹,可以在新增交易的时候根据前面的记录做校验,保证了区块的内容不容易篡改。

 

这种模式,我们在传统的数据库设计也会采用,例如下图拉链表的形式,每次对数据的更新都采用追加( Insert而不是Update)模式,有起始时间、失效时间和是否生效标识,保持全部交易历史。

 

区块链把这一点变成了一种底层固有模式,加入了哈希、时间戳等机制在技术上保证链条的正确性,因此非常有价值。

 

2)既然是分布式、多中心的存储方式,就必须解决存储时的分布式一致性问题。在区块链的前身比特币应用中,解决这一问题的方式是工作量证明(POW  Proof-Of-Work)方式,即通过工作以获得指定成果,用成果来证明曾经付出的努力。


这也是接触区块链技术时第一个比较迷惑的地方,我为啥一定要用工作量来证明,是不是还有其他方式?区块链技术从比特币中独立出来后,大家把这一问题归结为共识问题,工作量证明是达成共识的一种方式,这样就清晰多了。于是就产生了权益证明(P

大云网官方微信售电那点事儿

责任编辑:售电衡衡

免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞