天天看點

區塊鍊與微服務天生是一對

視訊内容

為分布式應用而生的微服務

與區塊鍊技術是天生的一對

這期說說區塊鍊技術與微服務架構的關系。大家知道,微服務架構是一個分布式的應用技術架構,目的是有效的對應用進行拆分,實作靈活開發、快速演化、便捷容錯與彈性伸縮。前面說到,區塊鍊技術本質上就是分布式資料庫,微服務架構與區塊鍊技術的結合,并不能簡單的看成是微服務與資料庫的結合,而應該把區塊鍊平台做為一個第三方應用進行互動,這也是微服務架構很好發揮作用的地方。

雖然目前的區塊鍊平台一般都有SDK和REST服務兩種方式,按照上述的原則,一般不要使用 SDK,而是遠端調用方式,采用微服務的設計原則,使用區塊鍊網關,把微服務與區塊鍊平台內建的功能集中到網關中,見下圖:

微服務通過區塊鍊網關與區塊鍊平台互動,區塊鍊網關主要功能包括通訊網關、事件監聽,同時配合微服務應用架構,完成資料一緻性、對賬功能。與區塊鍊網關內建的能力,是微服務架構天生具備的。

1、通訊網關

通訊網關,負責處理微服務發起的對區塊鍊平台的調用。

由于區塊鍊平台的服務能力(每秒交易數 TPS)有限,為保證區塊鍊平台的可用性,區塊鍊網關采用了異步處理模式,實作限流、隔離、服務升降級等能力。

由于區塊鍊平台提供的接口各有不同,區塊鍊網關在接受請求後記錄交易流水,把區塊鍊平台提供的服務模拟為幂等服務,調用者可以多次調用區塊鍊網關,而區塊鍊網關僅僅調用區塊鍊平台一次。為友善運維,我們可以為區塊鍊平台提供的服務定義SLA,根據這些定義靈活的進行調用的控制。

2、事件監聽

如果記賬簿發生了改變,如何通知微服務呢,這就是區塊鍊網關中事件監聽發揮的作用。目前很多區塊鍊平台并沒有提供事件接口,即使未來有也很難統一,前面也說過,智能合約運作在沙箱中,為保證資料一緻性不可能支援對外部服務的調用,也不能做為事件監聽的回調,這樣就需要在區塊鍊網關中進行處理。

微服務可以注冊對某一類交易進行監聽,區塊鍊網關定時通過區塊鍊平台的查詢接口檢索,發現資料變更時通知微服務。這是一個效率不高的方法,但區塊鍊平台本身性能也不高,時延主要由共識機制造成,輪訓的做法并不會有太大影響,這也是期待區塊鍊平台本身提升的地方。

3、資料一緻性

不能把所有資料都存儲在區塊鍊平台中,而是将交易資料存儲在區塊鍊平台,這樣就有了本地資料庫的資料與區塊鍊交易資料的一緻性問題。一般來說,我們不能依賴區塊鍊平台支援事務的復原,因為這個分布式的記賬簿一旦記賬就是不可更改的,我們甚至不能指望區塊鍊平台實時給應用回報記賬是否成功,因為有可能傳回逾時錯誤,不清楚是否記賬成功。

于是,區塊鍊網關需要和微服務配合保證資料的一緻性,一般情況下微服務中的業務處理采用異步模式,發出記賬申請後處于等待狀态,區塊鍊網關将記賬申請轉發給區塊鍊平台。如果區塊鍊平台傳回接受Accept或者拒絕Reject,将結果通知微服務;如果區塊鍊平台傳回逾時或者不可确定錯誤,即開始定時輪詢,得到結果後通知微服務。

同時,微服務本身需要具備事務補償的模式,如果記賬失敗進行反交易處理。這種資料一緻性處理的方式,是微服務多種處理方式中的一種,我們一般使用服務編排的方式降低這種模式的開發複雜度。

4、對賬

既然資料有本地存放,也有區塊鍊平台存放,就有不一緻的可能,就必須對賬。傳統對賬有以我為主、以他為主兩種模式。這裡就隻能以他為主,以區塊鍊平台為主了。由于區塊鍊技術針對交易的特點對存儲結構進行了要求,利用已有的時間戳、交易先後次序,可以是對賬變得更加容易。

總結

區塊鍊是一種新興的技術,他的本質是一種加入業務特性的分布式資料庫,通過對區塊鍊技術的研究,我們找到了業務與區塊鍊技術結合的方式,提出了微服務應用架構內建區塊鍊的技術模式,以上是對我們研究成果一個簡要介紹,後續我們還會對使用區塊鍊技術的細節進行分析,與大家共同探讨。

關于作者

焦烈焱

EAII-企業架構創新研究院 常務理事

2001年加入普元資訊,現任CTO,全面負責普元資訊技術與産品的營運工作,公司技術發展戰略的重要決策人。焦烈焱在企業技術架構研究方面有二十餘年的經驗,長期緻力于分布式環境的企業計算、 SOA與雲計算技術研究與實踐。加入普元資訊後組織完成一系列核心産品的研發工作,包括SOA應用平台、以BPM &/ESB為核心的業務內建平台、以複雜事件處理/資料治理/作業排程為核心的大資料平台,期間主持了中國工商銀行、中國建設銀行等多家大型企業技術平台的規劃與研發。著有《SOA中國路線圖—實施版》一書。

原文釋出時間為:2017-04-27

本文作者:yuanyi928

本文來源:

騰訊雲 雲+社群

,如需轉載請聯系原作者。

繼續閱讀