當微服務撞上區塊鏈
導語:
每一種新技術的產生與發展,都會與既有的技術與實踐存在著聯系,例如微服務作為一種技術架構,實際上是在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

責任編輯:售電衡衡
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網
-
新基建助推 數據中心建設將迎爆發期
2020-06-16數據中心,能源互聯網,電力新基建 -
泛在電力物聯網建設下看電網企業數據變現之路
2019-11-12泛在電力物聯網 -
泛在電力物聯網建設典型實踐案例
2019-10-15泛在電力物聯網案例
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業發展
-
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網 -
5G新基建助力智能電網發展
2020-06-125G,智能電網,配電網 -
從智能電網到智能城市