前言
微服務架構是近幾年網際網路行業比較火的概念,憑藉靈活可擴充套件、獨立部署…等優勢,逐步成為分散式架構中的主流。那麼微服務架構和區塊鏈又能擦出哪些神奇的火花?本期將從微服務架構概述、微服務架構在BaaS平臺的應用優勢等角度展開介紹。
什麼是微服務架構?
微服務架構(Microservice Architecture)是一種架構概念,可以簡單理解成一種將複雜系統拆分設計成多個微服務的架構,系統中的每個微服務專注於實現一個功能,內部是高內聚的,但外部是低耦合的,且支援獨立部署。由於每個服務執行在其獨立的程序中,因此服務與服務間採用輕量級的通訊機制互相溝通。
與微服務架構相對的是單體架構,即將系統中所有的功能、模組耦合在一個應用中的架構方式。單體架構的好處是專案易於管理、部署簡單,但缺點是可擴充套件性差、迭代困難、團隊協作難、跨語言程度差、管理測試成本高等。
典型微服務架構介紹
如上圖所示,微服務架構可大致分為:
服務閘道器:系統的統一入口,提供路由轉發、流量控制、鑑權驗證、安全控制、負載均衡等功能;
服務註冊中心:所有微服務都註冊到註冊中心,負責服務註冊、服務發現等;
配置中心:對各個微服務的部署檔案集中式儲存和動態的管理;
服務監控:對各個微服務實時監控(每秒的請求數,成功數等),提供服務熔斷、服務降級、鏈路追蹤等功能;
服務通訊:負責微服務之間的通訊,實現各個微服務之間的資料互動。
微服務架構在BaaS中的應用優勢
前文《什麼是區塊鏈BaaS平臺?》介紹了BaaS平臺的相關概念,筆者認為微服務架構為建設靈活可擴充套件的BaaS平臺提供了一種可行方案,兩者可謂天生一對。
▲首先,微服務的松耦合模式為BaaS平臺相容異構鏈奠定技術基礎。
是否相容不同的異構鏈及功能支援度是BaaS平臺的重要能力體現。在微服務架構下,由於微服務之間是松耦合的(業務領域間解耦、應用層和資料層解耦、前端和後端解耦、資料庫型別解耦、前端技術解耦等),因此微服務的核心價值就是積極擁抱並適應業務及技術選型等各種變化,因此基於微服務架構的BaaS平臺可實現對異構鏈的快速拔插相容,但在單體架構下幾乎很難實現。
下圖為趣鏈BaaS平臺的微服務架構示意圖,每個模組內的微服務元件支援獨立開發、獨立技術選型、獨立部署,其中核心模組中包含驅動和驅動管理。
驅動是趣鏈在眾多BaaS玩家中首創的一種模式,通俗而言使用者如需接入並支援新的區塊鏈底層,只需開發對應的鏈驅動即可。
▲其次,微服務的閘道器模式可充分滿足聯盟鏈多方參與下的複雜許可權體系及訪問控制。
在聯盟鏈場景中往往由多家機構共同管理區塊鏈業務,趣鏈BaaS的微服務閘道器主要功能包括路由轉發、流量控制、安全控制、負載均衡、請求轉化等基本功能並支援模組化新增功能的可拓展性。同時,賬戶體系(RBAC)根據使用者賬號、角色、許可權、組織4個維度進行設計,即基於角色的訪問控制。每個角色有不同的許可權,透過對使用者賦予不同角色來賦予其對應許可權。同時增加使用者機構概念,直接給使用者分配角色,並邀請使用者加入機構。這樣使用者除了擁有自身的許可權外,還擁有了所屬機構的資源操作許可權。
▲此外,微服務的服務監控元件等可有效適配聯盟鏈多節點組網的複雜架構。
聯盟鏈本質上可視為多個節點共同維護的分散式資料庫,而節點的本質是計算機程序。微服務通常是分散式服務架構,且生產環境下一個複雜的系統可能存在成百上千個微服務,因此選擇微服務通常意味著需要解決分散式架構中的各種難題。目前業界已有多套針對微服務的日誌監控管理、鏈路追蹤和故障排查方案,可快速引入或透過改良充分適配聯盟鏈多節點組網的複雜架構。
總結
BaaS平臺是企業部署區塊鏈並管理鏈上業務的視覺化平臺,其功能的廣度和使用友好度直接影響區塊鏈管理效率。而在區塊鏈高速發展的當下,新技術的迭代日新月異,透過將微服務架構引入到BaaS平臺的設計理念中,可幫助提升BaaS平臺功能可擴充套件性、系統安全性、可運維性。