當微服務撞上區(qū)塊鏈
導語:
每一種新技術的產(chǎn)生與發(fā)展,都會與既有的技術與實踐存在著聯(lián)系,例如微服務作為一種技術架構,實際上是在SOA架構和JavaEE等分布式架構的基礎上,進一步明晰了服務實現(xiàn)的方式與規(guī)則。區(qū)塊鏈技術脫胎于比特幣,作為一種多方信任的交易和技術模型,被包括國家、政府、監(jiān)管機構等諸多業(yè)務方所關注,反而是技術從業(yè)者有些茫然,這一技術到底是什么,解決什么問題,能夠用在哪里普元近年來持續(xù)對微服務和區(qū)塊鏈技術進行了研究,這里和大家分享一下研究的成果。我們的研究重點放在了如下幾個方面:
- 區(qū)塊鏈技術適用的應用場景有哪些,該技術帶來的價值是什么?
- 區(qū)塊鏈技術是由哪些技術組合而成,和現(xiàn)有技術的關系如何?
- 采用區(qū)塊鏈技術后,應用技術架構是什么,與微服務架構的關系,現(xiàn)有應用如何進行遷移?
區(qū)塊鏈的業(yè)務價值是通過數(shù)據(jù)共享降低信任成本
區(qū)塊鏈技術是從比特幣開始的,2008年由中本聰提出開始,造成了一個比特幣的熱潮。但是,比特幣的熱潮退去后,比特幣提出的問題和解決方式卻吸引著我們。2014年左右區(qū)塊鏈逐步從比特幣中脫離出來,做為一種獨立的技術發(fā)展,進入了 2.0 時代,以數(shù)字資產(chǎn)的方式解決商業(yè)的信任問題,同時用數(shù)字化手段提高業(yè)務的效率,在很多業(yè)務中已經(jīng)有了嘗試。
做為一種獨立的技術發(fā)展,區(qū)塊鏈分為公有鏈、聯(lián)盟鏈、私有鏈三個方向。而從業(yè)務角度看,區(qū)塊鏈的核心價值在于通過數(shù)據(jù)共享建立了多方的信任機制。
多參與方業(yè)務產(chǎn)生的信任問題是采用區(qū)塊鏈技術的源動力
信任問題,始終是一個大問題,為了解決信任問題,人類投入了大量的時間和金錢。尤其是多個參與方參加的業(yè)務,信任的成本更高,這里我舉一個復雜的例子:信用證業(yè)務(參見下圖),信用證是指開證銀行應申請人(買方)的要求并按其指示向受益人開立的載有一定金額的、在一定的期限內(nèi)憑符合規(guī)定的單據(jù)付款的書面保證文件。信用證是國際貿(mào)易中最主要、最常用的支付方式(摘自百度百科)。
之所以舉這個例子,是因為區(qū)塊鏈技術適用的場景往往是業(yè)務比較復雜的情況,簡單例子很容易被誤解,這里我通俗易懂的解釋一下,在國際貿(mào)易活動,買賣雙方往往互不信任,進口商(買方)擔心預付款后,出口商(賣方)不發(fā)貨;賣方擔心發(fā)貨后買方不付款(類似詐騙經(jīng)常發(fā)生,例如賣方把貨運到碼頭了,買方就是不付余款,于是只能在當?shù)刭v賣,這時買方再去抄底),典型的麻桿打狼兩頭怕。因此雙方各找了一家銀行作為擔保人,由兩家銀行之間開具憑證,代理進口商、出口商之間業(yè)務往來,達到條件后由銀行付款,減少進口商、出口商的風險,這就是信用證業(yè)務。即使這樣,信用證詐騙還是很多,銀行為規(guī)避風險,需要各種書面的證明,反復各種確認…業(yè)務處理周期會非常長。
上圖中信用證業(yè)務的參與方包括出口商、進口商、開證行、通知行、寄單行/附議行、運輸公司,是一個典型的多方參與業(yè)務,但通常這些參與方只是一部分,可能還會有海關、保險公司、評級機構等機構加入到交易鏈條中。
多參與方業(yè)務解決信任問題,現(xiàn)有方案成本高在哪里?
解決多參與方業(yè)務的信任問題,現(xiàn)在是通過建立第三方機構完成的,例如上述信用證業(yè)務,就是通過SWIFT組織(環(huán)球同業(yè)銀行金融電訊協(xié)會)的SWIFT系統(tǒng)開立信用證,銀行和其他金融機構通過它與同業(yè)交換電文來完成金融交易,由 SWIFT 進行銀行間轉發(fā)。
SWIFT僅僅解決了一部分的問題,還差很遠,例如:
業(yè)務上:那些沒有參加到 SWIFT 的組織無法通過 SWIFT 進行交易,例如一些進口商、出口商、保險公司等等,SWITF也不能做清算,因此銀行在辦理信用證業(yè)務的時候,只有反復通過各種其他方式確認,避免詐騙發(fā)生,導致業(yè)務非常復雜,流程很長;
技術上:多方參與的業(yè)務,一旦在處理業(yè)務時發(fā)生技術故障,處理起來就遠比普通業(yè)務復雜。為了保證少出問題,技術上的投入會很高,記得用過很多手段,例如曾經(jīng)給每個參與方做過應急系統(tǒng),采用過兩個不同廠商的SWIFT網(wǎng)關互為備份,安排專人排班管理異常情況,而且每個中心接入的標準和模式也不一致,接入中心機構帶來的開發(fā)/維護成本都很高。
必須說明的是,為了能把業(yè)務講清楚,我還是簡化了很多內(nèi)容,例如如何進行銀行間清算、如何進行付款等等。總之,建立一個第三方機構來解決信任問題,無論在業(yè)務上、技術上復雜度都很高。
區(qū)塊鏈技術是通過數(shù)據(jù)共享降低信任成本的
如果有一個分布式的記賬簿:(1)參與方在記賬之后有相當多的副本存在,不再是一家之言;(2)保證提交的交易一定被記錄下來;(3)保證記賬不可逆,無法篡改;(4)參與方的交易記錄是相對透明的,可以通過這些記錄驗證新的交易。
如果有機構建立了這樣一個記賬簿,每個參與方在交易中都通過這個記賬簿進行交互,保證每一筆發(fā)生的交易一定被可靠的記錄下來并不可篡改,不就不必再反復確認,不必擔心技術問題導致的業(yè)務流程變更,不必做應急系統(tǒng),這樣成本就低多了。
通過分布式的記賬簿進行數(shù)據(jù)共享,從而降低信任成本,這就是區(qū)塊鏈技術的價值。
聯(lián)盟鏈才是應用區(qū)塊鏈技術優(yōu)先選擇的方向
既然區(qū)塊鏈是一個分布式的記賬簿,那這個記賬簿由誰來建立呢?這是這一技術應用的核心問題。
目前建立記賬簿的方式有三種:
- 公有鏈,象互聯(lián)網(wǎng)一樣,做為一種開放的網(wǎng)絡基礎設施,向任何人公開,任何人自由加入,
- 私有鏈,一個組織內(nèi)部建立,可以幫助組織內(nèi)部完成審計等工作
- 聯(lián)盟鏈,為特定業(yè)務由相關核心企業(yè)建立,采用多中心(每個核心企業(yè)為一個中心)的方式,其他上下游企業(yè)加入
建立公有鏈難度高,業(yè)務場景不夠精準,分布式存儲帶來的性能低下問題阻礙了可用的應用場景,而私有鏈脫離了區(qū)塊鏈的商業(yè)價值,只是把區(qū)塊鏈做為一個技術組件使用。在目前的應用場景中,絕大多數(shù)都可以用聯(lián)盟鏈解決,商業(yè)上相對容易成立,性能遠遠高于公有鏈。
從上述描述就可以理解到,公有鏈太理想,私有鏈所處理的問題,傳統(tǒng)架構完全能解決,而針對特定業(yè)務由企業(yè)聯(lián)盟建立的聯(lián)盟鏈,應用方向更清晰,業(yè)務價值也更加明確,下圖是一個聯(lián)盟鏈的示例:
從應用的角度看,區(qū)塊鏈技術提供的是一個分布式數(shù)據(jù)庫
區(qū)塊鏈技術的數(shù)據(jù)共享方式要滿足(1)多副本、(2)可靠記錄、(3)不可篡改、(4)多方透明幾個特性,上述特性總結下來,采用區(qū)塊鏈技術后,應用技術架構如上圖所示,可以看出,區(qū)塊鏈技術對應用而言,就是一個分布式數(shù)據(jù)庫。
區(qū)塊鏈技術的本質是分布式數(shù)據(jù)庫
區(qū)塊鏈基于密碼學中的橢圓曲線數(shù)字簽名算法(ECDSA)來實現(xiàn)去中心化的P2P系統(tǒng)設計。當人們在談論或使用“區(qū)塊鏈”這個詞時,有時候是指數(shù)據(jù)結構,有時候是指數(shù)據(jù)庫,有時則是指數(shù)據(jù)庫技術。
和區(qū)塊鏈技術比,分布式數(shù)據(jù)庫的概念顯然更容易被理解,我就從分布式數(shù)據(jù)庫的一些基本概念出來,理解區(qū)塊鏈的技術實現(xiàn),這些概念包括數(shù)據(jù)存儲、點對點可靠傳輸、存儲過程與觸發(fā)器(智能合約)、數(shù)據(jù)安全:
分布式數(shù)據(jù)存儲:鏈式存儲與共識機制
區(qū)塊鏈技術的數(shù)據(jù)共享是一個分布式的記賬簿,交易記錄具備多個副本,因此首先要解決分布式數(shù)據(jù)存儲的問題。
1)區(qū)塊鏈存儲的基本單元是區(qū)塊,區(qū)塊采用鏈式結構,即新增的區(qū)塊(類似數(shù)據(jù)庫一行記錄)都知道自己前一個區(qū)塊(前一行記錄)是什么,可以一直追溯到根,區(qū)塊的標識是區(qū)塊的哈希值,同時鏈式結構保留了業(yè)務產(chǎn)生的軌跡,可以在新增交易的時候根據(jù)前面的記錄做校驗,保證了區(qū)塊的內(nèi)容不容易篡改。
這種模式,我們在傳統(tǒng)的數(shù)據(jù)庫設計也會采用,例如下圖拉鏈表的形式,每次對數(shù)據(jù)的更新都采用追加( Insert而不是Update)模式,有起始時間、失效時間和是否生效標識,保持全部交易歷史。
區(qū)塊鏈把這一點變成了一種底層固有模式,加入了哈希、時間戳等機制在技術上保證鏈條的正確性,因此非常有價值。
2)既然是分布式、多中心的存儲方式,就必須解決存儲時的分布式一致性問題。在區(qū)塊鏈的前身比特幣應用中,解決這一問題的方式是工作量證明(POW Proof-Of-Work)方式,即通過工作以獲得指定成果,用成果來證明曾經(jīng)付出的努力。
這也是接觸區(qū)塊鏈技術時第一個比較迷惑的地方,我為啥一定要用工作量來證明,是不是還有其他方式?區(qū)塊鏈技術從比特幣中獨立出來后,大家把這一問題歸結為共識問題,工作量證明是達成共識的一種方式,這樣就清晰多了。于是就產(chǎn)生了權益證明(POS Proof of Stake)方式,是一種通過業(yè)務規(guī)則達成共識的方式;實用拜占庭容錯(PBFT Practical Byzantine Fault Tolerance)方式,是一種通過技術規(guī)則達成共識的機制。在公有鏈上,工作量證明(POW)還是一種最主要的共識方式,不容易取代,但在聯(lián)盟鏈上,完全可以根據(jù)自己的情況,創(chuàng)造出新的共識方式出來。我們就根據(jù)這一想法,在特定業(yè)務中創(chuàng)造過共識算法,解決分布式數(shù)據(jù)存儲的一致性問題。
點對點可靠傳輸:可靠消息與P2P
區(qū)塊鏈技術是一組技術的組合,既然是一個分布式的記賬簿,就要解決數(shù)據(jù)可靠傳輸問題。包括記賬節(jié)點(信任節(jié)點)之間、非記賬節(jié)點(非信任節(jié)點)、客戶端與記賬節(jié)點(信任節(jié)點)之間的數(shù)據(jù)傳輸。在以前我們的方案中,往往通過可靠消息或者P2P方式解決數(shù)據(jù)傳輸問題,這些技術也被用于區(qū)塊鏈技術中。但必須說明的是,在真實業(yè)務場景下,不可能把所有的數(shù)據(jù)都記錄在記賬簿中,部分業(yè)務數(shù)據(jù)還是要保存在自己的系統(tǒng)中,這就還需要在技術框架上做到本地業(yè)務數(shù)據(jù)與區(qū)塊鏈的記賬簿保持一致,后文會具體闡述,總之,區(qū)塊鏈平臺只能保證自身數(shù)據(jù)之間的一致,業(yè)務不能完全依賴區(qū)塊鏈平臺保證數(shù)據(jù)一致性。
智能合約:觸發(fā)器與存儲過程
智能合約是指當一定條件滿足的情況下,可以被自動執(zhí)行的數(shù)字化合約。實現(xiàn)這一特性,在數(shù)據(jù)庫中就是由觸發(fā)器和存儲過程完成的。雖然在目前流行的應用架構中,都不建議把邏輯寫在存儲過程中,但觸發(fā)器和存儲過程還是常用的工具,尤其在數(shù)據(jù)遷移相關的運維活動中。區(qū)塊鏈技術中智能合約就是觸發(fā)器和存儲過程,他是一個在沙箱中運行的腳本,用于執(zhí)行區(qū)塊鏈業(yè)務中的業(yè)務邏輯,也可以用于各種檢查。舉個例子,A產(chǎn)生一筆支付時,可以通過智能合約在數(shù)據(jù)鏈上進行檢查,如果發(fā)現(xiàn)A的余額無法支付這筆交易,就可以中止這筆交易。和存儲過程相比,智能合約運行在沙箱之中,不能對外部 API 做調(diào)用。這也比較好理解,如果允許外部調(diào)用,就可能無法保證自身的數(shù)據(jù)一致性,后面我們會講到這種缺陷如何彌補。美中不足的是目前的智能合約并不支持 SQL 語法。
數(shù)據(jù)安全:用業(yè)務手段達成妥協(xié)
交易數(shù)據(jù)是透明的,但不是全部透明,而是相對透明,這是區(qū)塊鏈技術的一個難點,關鍵有二:(1)如何保護隱私,僅僅能看到自己可見的數(shù)據(jù);(2)密鑰分配問題,例如新加入鏈中的一個節(jié)點會被分配一個新的密鑰,如何用這個密鑰解讀以前鏈中存儲的信息。可見與不可見,這是一個矛盾,理論上沒有一個完美的方案,這里我不對區(qū)塊鏈技術如何加密、如何做密鑰管理、如何同態(tài)加密等方式做解讀,而是講講如何通過業(yè)務方法而不是技術手段規(guī)避這一問題。舉個例子,在一個小企業(yè)支付的聯(lián)盟鏈中,核心企業(yè)包括某銀行、企業(yè)A,為A的上下游企業(yè)提供信貸業(yè)務,對于所有交易的數(shù)據(jù),銀行和核心企業(yè)A都是可見的,他們擁有記賬節(jié)點,對于其他加盟企業(yè),只擁有非記賬節(jié)點,他們雖然也有全部的數(shù)據(jù),但是只能看到自己相關的數(shù)據(jù)。很明顯,加盟企業(yè)放棄了自己的部分隱私權,但也得到了生意的機會,這種方式加盟企業(yè)是可以接受的,就好比貸款企業(yè)要向銀行提供經(jīng)營數(shù)據(jù)一樣。數(shù)據(jù)安全問題,在技術上很難解決,但通過業(yè)務手段是可以規(guī)避的,這也是我們看好聯(lián)盟鏈的重要原因。
為分布式應用而生的微服務,與區(qū)塊鏈技術是天生的一對
最后說說區(qū)塊鏈技術與微服務架構的關系。大家知道,微服務架構是一個分布式的應用技術架構,目的是有效的對應用進行拆分,實現(xiàn)敏捷開發(fā)、快速演化、便捷容錯與彈性伸縮。
微服務的一個核心概念是API網(wǎng)關,由于服務的顆粒變細,網(wǎng)關承擔著安全與訪問認證等諸多職能。而在現(xiàn)有的大多數(shù)微服務架構中,大家都更多的在談接入網(wǎng)關的概念,實際上按照信息的流向,除接入網(wǎng)關外,微服務還應該有接出網(wǎng)關的概念。
前面說到,區(qū)塊鏈技術本質上就是分布式數(shù)據(jù)庫,微服務架構與區(qū)塊鏈技術的結合,并不能簡單的看成是微服務與數(shù)據(jù)庫的結合,而應該把區(qū)塊鏈平臺做為一個第三方應用進行交互,這也是微服務架構很好發(fā)揮作用的地方。上圖中紅圈所示的就是微服務與區(qū)塊鏈平臺進行交互的方式。而微服務的接出網(wǎng)關,就應該起到區(qū)塊鏈網(wǎng)關的作用。
雖然目前的區(qū)塊鏈平臺一般都有SDK和REST服務兩種方式,按照上述的原則,一般不要使用 SDK,而是遠程調(diào)用方式,采用微服務的設計原則,使用區(qū)塊鏈網(wǎng)關,把微服務與區(qū)塊鏈平臺集成的功能集中到網(wǎng)關中,見下圖:
微服務通過區(qū)塊鏈網(wǎng)關與區(qū)塊鏈平臺交互,區(qū)塊鏈網(wǎng)關主要功能包括通訊網(wǎng)關、事件監(jiān)聽,同時配合微服務應用框架,完成數(shù)據(jù)一致性、對賬功能。與區(qū)塊鏈網(wǎng)關集成的能力,是微服務架構天生具備的。所以我們說微服務與區(qū)塊鏈,天生是一對。
通訊網(wǎng)關:處理微服務發(fā)起的對區(qū)塊鏈平臺的調(diào)用
由于區(qū)塊鏈平臺的服務能力(每秒交易數(shù) TPS)有限,為保證區(qū)塊鏈平臺的可用性,區(qū)塊鏈網(wǎng)關采用了異步處理模式,實現(xiàn)限流、隔離、服務升降級等能力。
網(wǎng)關在微服務應用與區(qū)塊鏈平臺之間建立了隔離,避免平臺與微服務之間互相影響,這是一種 MiddleBox 的集成方式,用一個獨立的基礎設施做集成。微服務之間的集成往往采用 MiddlePipe 的模式,但是區(qū)塊鏈平臺做為一個第三方應用,采用 MiddleBox 方式比較好,統(tǒng)一管理與運維比較方便。
由于區(qū)塊鏈平臺提供的接口各有不同,區(qū)塊鏈網(wǎng)關在接受請求后記錄交易流水,把區(qū)塊鏈平臺提供的服務模擬為冪等服務,調(diào)用者可以多次調(diào)用區(qū)塊鏈網(wǎng)關,而區(qū)塊鏈網(wǎng)關僅僅調(diào)用區(qū)塊鏈平臺一次。為方便運維,我們可以為區(qū)塊鏈平臺提供的服務定義SLA,根據(jù)這些定義靈活的進行調(diào)用的控制。
區(qū)塊鏈網(wǎng)關的內(nèi)部實現(xiàn)是一個 SEDA 架構(分階段事件驅動架構),把接入、接出和處理分開(處理主要是記錄流水、報文打解包、安全效驗等功能),三階段之間用隊列連接,采用異步模擬同步的方式,這是一個用于集成的基礎架構。
接入、處理、接出三個階段可處理資源是可以調(diào)配的,資源主要包括處理線程和接入接出的連接,根據(jù)不同業(yè)務可以有不同的資源為之服務,這樣升降級、限流等特性就比較容易實現(xiàn)。
為了方便運維,需要對業(yè)務有分組的能力,可以根據(jù)分組進行批量的運維管理。
事件監(jiān)聽:Hook與輪詢模式
如果記賬簿發(fā)生了改變,如何通知微服務呢,這就是區(qū)塊鏈網(wǎng)關中事件監(jiān)聽發(fā)揮的作用。目前很多區(qū)塊鏈平臺并沒有提供事件接口,即使未來有也很難統(tǒng)一,前面也說過,智能合約運行在沙箱中,為保證數(shù)據(jù)一致性不可能支持對外部服務的調(diào)用,也不能做為事件監(jiān)聽的回調(diào),這樣就需要在區(qū)塊鏈網(wǎng)關中進行處理。
微服務可以注冊對某一類交易進行監(jiān)聽,區(qū)塊鏈網(wǎng)關定時通過區(qū)塊鏈平臺的查詢接口檢索,發(fā)現(xiàn)數(shù)據(jù)變更時通知微服務。這是一個效率不高的方法,但區(qū)塊鏈平臺本身性能也不高,時延主要由共識機制造成,輪詢的做法并不會有太大影響,這也是期待區(qū)塊鏈平臺本身提升的地方。
數(shù)據(jù)一致性:可靠事件模式是首選
不能把所有數(shù)據(jù)都存儲在區(qū)塊鏈平臺中,而是將交易數(shù)據(jù)存儲在區(qū)塊鏈平臺,這樣就有了本地數(shù)據(jù)庫的數(shù)據(jù)與區(qū)塊鏈交易數(shù)據(jù)的一致性問題。
一般來說,我們不能依賴區(qū)塊鏈平臺支持事務的回滾,因為這個分布式的記賬簿一旦記賬就是不可更改的,我們甚至不能指望區(qū)塊鏈平臺實時給應用反饋記賬是否成功,因為有可能返回超時錯誤,不清楚是否記賬成功。于是,區(qū)塊鏈網(wǎng)關需要和微服務配合保證數(shù)據(jù)的一致性。
一般情況下微服務中的業(yè)務處理采用異步模式,發(fā)出記賬申請后處于等待狀態(tài),區(qū)塊鏈網(wǎng)關將記賬申請轉發(fā)給區(qū)塊鏈平臺。如果區(qū)塊鏈平臺返回接受Accept或者拒絕Reject,將結果通知微服務;如果區(qū)塊鏈平臺返回超時或者不可確定錯誤,即開始定時輪詢,得到結果后通知微服務。同時,微服務本身需要具備事務補償?shù)哪J剑绻涃~失敗進行反交易處理。這種數(shù)據(jù)一致性處理的方式,是微服務多種處理方式中的一種,我們一般使用服務編排的方式降低這種模式的開發(fā)復雜度。
下面是一個示例:
這是一個可靠事件與區(qū)塊鏈交互的流程:
1)應用框架接到請求后首先記錄業(yè)務流水,然后執(zhí)行業(yè)務邏輯,記錄業(yè)務數(shù)據(jù),最后在事件表中留下對區(qū)塊鏈平臺調(diào)用的記錄,事務完成
2)事件處理輪詢事件記錄,有更新時通過區(qū)塊鏈網(wǎng)關調(diào)用區(qū)塊鏈平臺,如果調(diào)用成功,改變事件狀態(tài),如果失敗就要調(diào)用業(yè)務補償?shù)臋C制了
對賬
既然數(shù)據(jù)有本地存放,也有區(qū)塊鏈平臺存放,就有不一致的可能,就必須對賬。傳統(tǒng)對賬有以我為主、以他為主兩種模式。這里就只能以他為主,以區(qū)塊鏈平臺為主了。由于區(qū)塊鏈技術針對交易的特點對存儲結構進行了要求,利用已有的時間戳、交易先后次序,可以是對賬變得更加容易。
基本的對賬處理流程如下
1. 區(qū)塊鏈平臺和企業(yè)應用的記錄必須有關聯(lián)的id(可以是多要素的組合)
2. 區(qū)塊鏈平臺和企業(yè)應用都要保證生成的對賬文件明細記錄的連續(xù)性
3.對于“隔日賬”需重復核對
區(qū)塊鏈是一種新興的技術,他的本質是一種加入業(yè)務特性的分布式數(shù)據(jù)庫,通過對區(qū)塊鏈技術的研究,我們找到了業(yè)務與區(qū)塊鏈技術結合的方式,提出了微服務應用架構集成區(qū)塊鏈的技術模式。
1) 區(qū)塊鏈的業(yè)務價值是通過數(shù)據(jù)共享降低信任成本。
區(qū)塊鏈建立了一個記賬簿,每個參與方在交易中都通過這個記賬簿進行交互,保證每一筆發(fā)生的交易一定被可靠的記錄下來并不可篡改,不必再反復確認,不必擔心技術問題導致的業(yè)務流程變更,不必做應急系統(tǒng),從而降低了信任成本。
2)區(qū)塊鏈技術的本質是分布式數(shù)據(jù)庫。
區(qū)塊鏈技術的數(shù)據(jù)共享方式要滿足(1)多副本、(2)可靠記錄、(3)不可篡改、(4)多方透明幾個特性,總結下來,區(qū)塊鏈技術對應用而言,就是一個分布式數(shù)據(jù)庫,分別對應分布式數(shù)據(jù)庫的(1)分布式存儲、(2)點對點可靠傳輸、(3)存儲過程與(4)數(shù)據(jù)安全幾個方面。
3)為分布式應用而生的微服務,與區(qū)塊鏈技術是天生的一對。
微服務通過區(qū)塊鏈網(wǎng)關與區(qū)塊鏈平臺交互,區(qū)塊鏈網(wǎng)關主要功能包括通訊網(wǎng)關、事件監(jiān)聽,同時配合微服務應用框架,完成數(shù)據(jù)一致性、對賬功能。與區(qū)塊鏈網(wǎng)關集成的能力,是微服務架構天生具備的。
以上是對我們研究成果一個簡要介紹,后續(xù)我們還會對使用區(qū)塊鏈技術的細節(jié)進行分析,與大家共同探討。
附記:理解區(qū)塊鏈技術常見的幾個困惑
困惑1:比特幣是區(qū)塊鏈技術的一個應用,不能把比特幣應用的所有內(nèi)容都歸結為區(qū)塊鏈技術
上文提到,區(qū)塊鏈技術從比特幣中獨立出來是 2014 年左右的事情,此前每每舉出區(qū)塊鏈的案例都是比特幣,給區(qū)塊鏈技術的應用造成了很多誤解。我建議先了解區(qū)塊鏈技術,再了解比特幣,先理解聯(lián)盟鏈的業(yè)務場景,再了解公有鏈的業(yè)務場景,公有鏈看作是聯(lián)盟鏈的一種大規(guī)模延展,,可以少走一些彎路。
困惑2:公有鏈情況下數(shù)據(jù)存儲性能不高,但聯(lián)盟鏈的性能可以遠高于公有鏈,能滿足多數(shù)場景的要求
數(shù)據(jù)一致性問題是分布式存儲最大的問題,而并發(fā)越高,沖突的概率就越大。區(qū)塊鏈技術之所以能支持的每秒交易數(shù)(TPS)不高,主要是共識機制比較復雜,或者說共識機制就是刻意為了降低并發(fā)性,減少數(shù)據(jù)沖突的概率。在公有鏈上,這是一個無法逾越的問題,只能從事實時性要求不敏感的業(yè)務。但是,在聯(lián)盟鏈中,由于鏈中的參與方并不多,也不需要每個節(jié)點都記賬,就可以使用一些性能更高的共識機制,例如前面說的PBFT。我們曾經(jīng)嘗試過一種全對等的算法,可以支持更高的性能。
困惑3:應用區(qū)塊鏈技術不一定必須有礦工來挖礦
初次接觸區(qū)塊鏈技術,礦工/挖礦這個概念讓人非常費解:(1)為什么一定要挖礦?(2)為什么要給記賬成功的節(jié)點獎勵比特幣來鼓勵記賬?(3)非比特幣的業(yè)務中如何鼓勵記賬?這個困惑歸根結底還是把區(qū)塊鏈和比特幣混淆造成的。前面說過,挖礦是通過工作量證明(POW)達成共識的機制,挖礦能力愈強就取得了記錄權。更重要的是比特幣的貨幣屬性,發(fā)行貨幣要么靠國家信用(例如紙幣),要么靠奇缺資源(例如黃金),比特幣為了防止濫發(fā),就需要用算力做為一種奇缺資源。這樣說來,比特幣實際上把共識算法、貨幣屬性、鼓勵記賬這幾件事都用挖礦來解決了,思路確實精妙。但是,在業(yè)務規(guī)則不同的聯(lián)盟鏈中就不一樣了,除了有其他更高效的共識算法外,不需要奇缺資源,不需要專門對記賬做鼓勵,因為必須記賬已經(jīng)是核心企業(yè)之間的契約,可以通過技術手段保證數(shù)據(jù)的同步,支持審計等能力,自然就不需要挖礦了。
困惑4:目前應用區(qū)塊鏈技術不是去中心,而是多中心
去中心是一個理想,經(jīng)常有人問(1)為什么要去中心?去中心有什么好處?(2)真的能去中心嗎?后來,我深入研究聯(lián)盟鏈的場景時發(fā)現(xiàn),實際的業(yè)務場景大多是多中心(這又是比特幣惹的禍,他真的想去中心),例如上述的企業(yè)聯(lián)盟方式,幾個建立聯(lián)盟的核心企業(yè)就是多中心,他們共同成為一個新的中心。傳統(tǒng)方式建立新的中心,往往通過建立清算機構的方式,而區(qū)塊鏈技術讓建立中心的成本降低了。
困惑5:不是所有的區(qū)塊鏈節(jié)點都是記賬節(jié)點,很多節(jié)點僅僅用來進行數(shù)據(jù)同步而已
多中心就意味著不是每個節(jié)點都需要記賬,記賬的工作由幾個中心節(jié)點負責就可以了,其他節(jié)點與記賬節(jié)點間是數(shù)據(jù)同步的關系,也就是非記賬節(jié)點上也有全部數(shù)據(jù)。聯(lián)盟鏈中非記賬節(jié)點一般處在加盟企業(yè),由于數(shù)據(jù)可見性的要求,非記賬節(jié)點中的數(shù)據(jù)并不是都可見的,但是這一副本可以做為一種法律依據(jù),提高了篡改數(shù)據(jù)的成本。
從數(shù)據(jù)的角度來看,區(qū)塊鏈本質是一種分布式數(shù)據(jù)庫,這里的“分布式”是指區(qū)塊鏈技術利用鏈式存儲結構不僅解決了分布式數(shù)據(jù)存儲問題,也解決了存儲時的分布式一致性問題。區(qū)塊鏈技術利用分布式記賬簿保證數(shù)據(jù)可靠傳輸和訪問,利用可自動執(zhí)行的智能合約來編程和操作數(shù)據(jù)。所以,我認為,基于分布式數(shù)據(jù)庫來理解區(qū)塊鏈,認清區(qū)塊鏈技術常見的一些困惑和誤區(qū),可以讓大家對區(qū)塊鏈有個比較正確的理解方式。

責任編輯:售電衡衡
-
權威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產(chǎn)業(yè),設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務,新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設典型實踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進這個行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎設施,電力新基建 -
燃料電池汽車駛入尋常百姓家還要多久?
-
備戰(zhàn)全面電動化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產(chǎn)業(yè),設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務,新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市