徐 健
(中國移動通信集團福建有限公司,福州 350003)
隨著微服務架構技術的發展,為了避免重復開發,提升開發效率,各大企業在開發功能模塊時,通過搭建微服務平臺將企業的各功能模塊微服務化,每個服務都具有自己獨立的生命周期和服務邊界,可以獨立部署、獨立維護、獨立擴展,服務與服務之間通過統一的API進行相互通信,實現功能模塊的快速部署和調用.然而,在微服務完成部署應用一段時間后,隨著對業務需求的不斷變更,該微服務對業務的支撐價值逐漸變小,為了促使開發人員對低應用價值的微服務進行優化和升級,定期對微服務進行公開、公正的評價.當前,針對這些微服務管理是根據微服務的調用頻率及最后一次調用時間,判斷該微服務的應用價值,缺乏一定的公正性,且數據容易被篡改.為了對每個微服務進行公開透明的評價,本文基于區塊鏈的技術定期對微服務發起評價,并授權多個節點對微服務進行多維度打分評價,保障微服務各維度的評分結果不可篡改、可追溯;然后,基于微服務各維度不可篡改的評價分數,結合層次分析法和熵權法構建微服務的評價模型,計算微服務的綜合得分,最終實現微服務的智能化管理.
區塊鏈的去中心化、可追溯、防篡改等特性已受到了各行各業的關注,其核心技術主要由加密算法、共識算法、智能合約、P2P 網絡等組成.其中,共識機制算法主要有以下幾種:工作量證明(Proof of work,PoW)[1,2],權益證明(Proof of Stake,PoS)[3]和拜占庭容錯(PBFT)[4-6]等.區塊鏈是由整個網絡節點進行記賬,而并非某一個中心機構,確保了多個參與方之間在數據層面不可篡改,且能夠追溯歷史數據[7],基于區塊鏈技術可構建多方參與去信任化的交易系統[8].“中本聰”于2008年首次發表了關于比特幣的文章[9],首個區塊鏈貨幣加密系統——比特幣(Bitcoin)也在次年發布,實現了網絡上互不信任的個體可以在無中介的情況下使用比特幣進行貨幣交易.2014年,以太坊(Ethereum)[10]在比特幣的基礎上首次將智能合約應用到區塊鏈.在對區塊鏈技術的不斷完善過程中,其適用的范圍也在擴大,為了適用于商業應用場景,出現了去中心化程度較低的聯盟鏈和私有鏈.2017年,Linux 基金會發起了開源的區塊鏈項目超級賬本(Hyperledger)[11],其主要有5 個子項目:Fabric、Sawtooth、Indy、Burrow和Iroha.其中,最受關注的是Fabric[12]聯盟鏈,不同與比特幣和以太坊,Hyperledger Fabric是專門針對于企業級的區塊鏈應用而設計的聯盟鏈平臺,成員節點必須經過授權才可以加入[13].區塊鏈作為數字貨幣的底層技術支持,保障了數字貨幣的隱私和匿名性[14].當今,各企業對區塊鏈研究現狀呈現指數型的增長,在共識機制、數據管理、信息安全等方面的應用都有較多的研究[15-18],但在評價系統中的應用研究較少.
本文利用Hyperledger Fabric 區塊鏈技術,授權參與微服務評分用戶節點對指定的微服務的維度進行打分,系統利用Hyperledger Fabric的智能合約對用戶節點的打分進行記賬,這樣保障了微服務的評價數據不可篡改,且后期可進行追溯,在得到微服務各維度的評分后,利用綜合評價的方法計算微服務的綜合得分.綜合評價常用的方法有層次分析法(AHP)、熵值法[19]、和逼近理想解排序(TOPSIS)[20]等.然而,層次分析法需要先對采用1-9 標度法和判斷矩陣中每一層次各個因素之間的相對重要性數值,具有一定的主觀性;與層次分析法相比,熵權法具有較高客觀性,其主要依據評價數據計算權重,但其對每一次跟新的評價數據重新計算權值,造成每次計算得到的權數會發生變化[21].本文提出一種基于AHP 與熵值法結合的評價方法構建微服務綜合評價模型,大大提高了評價結果的合理性,最后,通過微服務的評價數據,驗證了本文中評價方法的有效性.為微服務的智能優化管理提供了有效的數據支撐.
2015年12月,Linux 基金會和30 家初期公司成立了Hyperledger 項目,以推廣跨行業區塊鏈技術,并為透明、開放的企業級分布式賬本技術提供了開源代碼實現.Hyperledger Fabric 結構采用模塊化的架構設計,并引入了權限管理,因而具有高度的可擴展性和靈活性.從應用的角度看,Hyperledger Fabric 結構可分為身份管理、賬本管理、交易管理和智能合約4 個部分;從自下而上的角度看,Hyperledger Fabric 結構分為成員管理、共識服務、鏈碼服務3 個部分.安全性問題是企業級區塊鏈關心的問題,需要底層加密技術的支持,Fabric 專門定義了一個BCCSP (BlockChain Cryptographic Service Provider),使其實現密鑰生成、哈希運算、加密解密等基礎功能.Hyperledger Fabric的邏輯架構如圖1所示.

圖1 Hyperledger Fabric 邏輯架構圖
Hyperledger Fabric 作為一種聯盟鏈,其主要由對等節點(Peer node)、鏈碼(Chaincode,即智能合約)、成員服務提供者(Membership Service Provider,MSP)、通道(Channel)、排序服務(Ordering Service)、客戶端(Client)等組成.
Peer node 主要分為兩類:背書節點(Endorser)和確認節點(Committer).其中,Endorser 主要對客戶端發出的請求按照已制定的策略進行模擬交易和簽名背書,然后返回給客戶端.Committer 主要對交易的請求進行核查,并向區塊寫入交易,更新賬本.一般只有部分Peer node 具有確認功能.
Chaincode:Hyperledger Fabric 提供了用于系統維護的系統鏈碼和通過執行可編程的代碼邏輯與賬本交互的用戶鏈碼兩種.
MSP:其作為Hyperledger Fabric 網絡的一個重要組件,定義了相關的頒發和校驗數字證書的標準化規范,對區塊鏈網絡中各組織和成員的權限進行管控,負責成員的身份管理和認證.在初始化MSP的一個實例,需要在每一個peer node、Ordering Service 指定其配置,包含被授權組織的MSP 相關信息,并在Channel上啟用Peer node、Ordering Service 身份驗證和數字簽名驗證.
Channel:其主要功能是對區塊鏈網絡上的交易進行隔離,即使對于同一個Peer node,在提交到不同通道的交易中的訪問策略、組織身份及排序服務也是相互獨立的,這樣,不同通道內的交易可并行進行,提升了平臺的性能和擴展性,同時,通道的外部成員是無法訪問和篡改通道內部的數據,保障了通道內數據的安全性.
Ordering Service:它是由1 個或多個排序節點組成,主要負責在某段時間內,收集到由不同客戶端提交的多個合法交易請求,按提交交易請求的時間順序進行排序,然后組成區塊數據廣播至通道內的區塊鏈網絡.
Client:其主要對區塊鏈網絡底層接口進行封裝,一般通過 SDK 進行調用,保障應用層各功能模塊和區塊鏈網絡中各個組件之間的交互.客戶端能夠實現在網絡中發起交易、監聽消息、更新配置、啟動和停止節點等功能.
Hyperledger Fabric是由多個不同組織的成員、Peer node、Channel、Ordering Service、Client 組成.每個成員都有一個由MSP 提供的唯一標識,同一通道內的成員可看到所以組織的身份,并可以對其進行驗證.
為了滿足對微服務進行公正、透明及可驗證的評價需求,本文利用區塊鏈技術的去中心化、數據不可篡改、公開透明等特性,將用戶地址、微服務評價選項的地址、用戶評價分數等信息寫入區塊鏈里,基礎數據(如用戶基礎信息、微服務基礎信息等)存入本地數據庫Oracle 中.同時,本文基于用戶對微服務各維度的評分和微服務維度間的重要程度,將層次分析法(AHP)和熵值法相結合計算維度的權值構建微服務綜合評價模型,計算得到微服務的綜合得分,將其作為微服務下線的重要參考依據,為微服務的智能化管理提供數據支撐.微服務評價系統主要由應用層和數據層組成,用戶可通過編寫SQL 語句查詢基礎數據,也可通過調用接口查詢區塊鏈數據.本文基于區塊鏈的微服務評價系統架構設計如圖2.

圖2 基于區塊鏈的微服務評價系統架構圖
本文基于區塊鏈的微服務評價系統中的應用層采用的是B/S 架構,其中,Web 應用主要呈現微服務評價系統的功能,該系統分為普通用戶和系統用戶兩個模塊,系統用戶有用戶評價授權管理、評價管理、新建微服務評價等模塊;其主要負責微服務的評價事務,創建新的微服務投票項并進行維護,同時對普通用戶進行授權管理.普通用戶有參與評價、查看評價結果、驗證評價結果等模塊功能.客戶端負責了與Web 服務器的交互,通過調用接口實現Web 服務器與區塊鏈之間的數據流轉,將用戶評價數據打包寫入區塊鏈上,同時響應對評價結果數據的查詢請求.基于區塊鏈的微服務評價的主要過程如下:
(1)系統用戶發起某個微服務的評價,系統生成該微服務評價的區塊,在發起評價后,系統用戶授權普通用戶對該微服務進行評價.
(2)普通用戶在通過系統授權后,可對該微服務的各個維度進行打分,評價完成后,系統利用加密算法對用戶的評價結果數據進行加密并生成密鑰,用戶可根據密鑰查看并驗證評價結果,驗證完成后,系統將驗證記錄等執行結果進行打包寫入區塊鏈中.
(3)綜合評價模型通過調用區塊鏈數據查詢接口,查詢用戶對微服務各維度的評價分數,并計算微服務綜合得分.用戶可在客戶端進行信息查詢和驗證.
為了快速查詢基礎信息,本文的數據層將區塊鏈數據和基礎數據分開存儲.其中,本地Oracle 數據庫主要存儲用戶和微服務的基礎信息;區塊鏈層則由網絡層和存儲層構成,主要通過搭建P2P 網絡層構建分布式數據庫,在微服務評價數據打包發送至區塊鏈網絡中時,實現數據在區塊鏈中分布式存儲,保障數據去中心化存儲,同時,該區塊層利用數字簽名等加密算法以實現數據的不可篡改,通過共識算法保證區塊鏈中數據的一致性,同時,根據時間戳將區塊以首尾相連的鏈式結構進行保存.
與其他采用訂單執行交易模型的區塊鏈網絡不同,Fabric 將交易處理流程解耦至不同類型的節點進行,這在一定程度上降低了單個節點的負載,提升了交易的效率.圖3描述了基于Fabric 區塊鏈技術,某評價用戶對單個微服務進行評價的具體流程,其主要包括3 個階段:(1)背書階段:在選擇的對等節點上模擬微服務各維度的評價結果并采集修改的狀態;(2)排序階段:通過協商一致協議執行微服務各維度的評價;(3)驗證階段:驗證后提交到分類賬本.具體的微服務評價流程如下:
(1)評價用戶注冊/登錄:評價用戶通過客戶端利用SDK 調用證書服務(CA)進行注冊,獲取身份證書,在注冊成功之后就擁有了合法身份,并憑借該身份加入聯盟通道.
(2)發送微服務評價提案:客戶端在MSP 獲取身份證書加入通道后,對微服務各維度進行打分,在完成打分后提交評價結果,系統將發送本次評價提案(Proposal),把帶有本次評價要調用的合約標識、合約方法、參數信息、客戶端簽名等信息發送給背書(Endorser)節點.
(3)背書和模擬用戶評價:背書節點收到用戶評價提案后,驗證簽名并確定提交者是否具有執行操作的權限,同時根據背書策略模擬執行智能合約,并將結果及其CA 證書簽名返回給客戶端.
(4)發送微服務評價結果:客戶端收到背書節點返回的信息后,判斷提案結果是否一致,并核查背書的合法性,核查一致后,把數據進行打包到組成一個交易并簽名,發送給排序服務(Orderers),否則中止處理.
(5)微服務評價排序:排序節點根據共識算法對接收到的微服務評價結果進行排序,并按照接受到的評價結果時間將一批微服務的評價數據打包進對應通道的區塊,然后廣播至通道內的確認節點;
(6)微服務評價結果驗證和寫入:確認節點收到廣播后,會對區塊中的每次評價結果進行校驗,檢查微服務評價依賴的輸入輸出是否符合當前區塊鏈的狀態,核查完成后將區塊追加到本地的區塊鏈,并修改世界狀態.
(7)微服務評價賬本更新公告:告知客戶端該微服務評價結果是否成功更新.

圖3 基于 Fabric的微服務評價流程示意圖
層次分析法 (Analytic Hierarchy Process,AHP)是一種將定性和定量相結合的主觀賦權方法,其主要根據主觀對各評價維度之間的重要度進行量化,構造一個判斷矩陣,然后利用數學相關計算方法解決了求解多目標和多準則特性的決策問題.AHP 主要適用于對結果無法通過主觀判斷直接計算的場景,因此,在主觀綜合評價的場景一般選擇AHP 評價方法.然而,基于AHP 計算的評價結果,其主觀性較強,有較為明顯的缺陷,在使用AHP 構建綜合評價單模型時,評價者根據個人主觀對各維度重要度的判斷給出標度值,這樣構造的判斷矩陣受個人影響較大,并且最后計算各維度的權值也是固定不變.在所有的評價者對利用AHP 方法計算的一個評價維度進行評價的分值都很接近時,會造成該維度的權值較高,但區分度較低的情況,這樣最終的評價結果可信度不高.熵值法作為一種與AHP不同的客觀賦權法,首先計算評價維度的信息熵,評價維度計算得到的熵值就越小,顯示該評價維度的離散程度越大,反應的信息量也就越多,最終計算的權值就會越大,反之則評價維度最終計算的就越小.本文結合熵值法和AHP 計算各評價維度的權值,可將評價維度評價分值區別度不高的重要維度權值適當降低,將評價值相差較大的維度的權重適當提高,實現固定的主觀賦權與動態的客觀賦權相結合,提升各評價維度權值的可信度.
為了對微服務進行合理的價值評估,本文結合AHP和熵值法根據微服務的評價結果構建綜合評價模型,計算微服務評價的綜合得分,首先通過專家評判構建微服務6 個評價維度的判斷矩陣.微服務評價維度主要包括:功能可用性(A1)、服務穩定性(A2)、服務易用性(A3)、服務擴展性(A4)、執行效率(A5)、文檔完整度(A6).經專家全面分析每個微服務的地位和作用,再填寫咨詢表并進行統計,通過1~9 標度法構造判斷矩陣,如表1所示.

表1 微服務評價6 個維度的判斷矩陣
根據上表微服務各維度的判斷矩陣,利用AHP 計算各維度的權值,結果如下:

然后,根據微服務各維度的評價結果,利用熵值法的計算各維度的信息效用值,具體計算過程如下:
(1)對微服務的評價結果數據進行標準化處理:
(2)計算第j個評價維度下第i個評價用戶的評價維度值的比重
(3)計算第j個評價維度的熵值其中k=
(4)計算第j個評價維度的信息效用值dj=1-ej;
最后,結合AHP和熵值法分別計算的第j個評價維度的權重值wAj和信息效用值dEj,計算得到一個新的權重,公式為:w′j=wAj*dEj.再將w′j進行歸一化處理,得到最終的第j個評價維度組合賦權為:

本文基于Fabric 區塊鏈的微服務評價系統,利用5臺服務器共搭建了20 臺虛擬主機,每臺的配置為CPU 2核4 GHz,主頻2.0 GHz,硬盤250 GB.其中2 臺用于搭建Oracle 數據庫存儲基礎信息,2 臺用于構建數據中心網絡共享系統,1 臺用于搭建綜合評價模型,15 臺用于構造P2P 網絡,虛擬15 個組織,利用Docker 分別構建2 個認可的對等點,則總共30 個對等節點,有一個Orderer節點和一個Kafka Zookeeper 集群支持它,所有節點和Kafka Zookeeper 都運行在數據中心網絡虛擬機上.
為了測試基于Fabric 區塊鏈的微服務評價系統在多用戶操作時的運行效率,本文分別以5 個、10 個、20個并發請求對系統進行測試,統計從發起請求到區塊寫入的時長,以驗證系統的響應速度,結果如表2所示.

表2 基于Fabric 區塊鏈的微服務評價系統相應速度檢測
由表2可知,基于Hyperledger Fabric的微服務評價系統可支持多用戶在同一時間進行操作發送請求,其隨著并發數的增加,相應時長也在增加,但依然在用戶的可接受范圍.Hyperledger Fabric 區塊鏈與以太坊等公有鏈不同,其挖礦的過程排序節點完成的,因此交易效率較高,能夠滿足較多用戶同時對微服務各維度進行打分評價的需求.
本文收集10 個區塊鏈評價用戶對某個微服務各維度進行打分,由于當指標評分標準超過5 級以后,所增加的標度帶來的效用很小[22],因此本文采用5 分制,每個維度的評價等級 α=(5,4,3,2,1).該微服務6 個維度的評價結果如表3.

表3 微服務評價6 個維度的判斷矩陣
利用10 個用戶對微服務的6 個維度的打分表,計算6 個維度指標值的信息效用值,計算結果如下:

根據公式w′j=wAj*dEj和式(1),得到結合層次分析法和熵值法得到各維度最終權重為:

分別利用AHP、熵值法及其相結合的方法計算的微服務各維度權值結果如表4.

表4 不同計算方法的微服務各維度權值對比
上述結果顯示,對于維度A1(功能可用性),在僅使用AHP 確定的權重較大,經由熵值法結合調整后,權重值被調小.這樣既可以保證重要指標不被剔除,又可以避免因指標值過于相近導致該指標失去應有的價值.對于維度A4(服務擴展性),是一個重要的指標,但這一指標被評價專家所忽視,不同評價用戶在這一指標上的表現差別很大,該指標初始AHP 權重較小,但由于其成為將微服務區分出優劣的高效度指標而被賦以更大的權重.這些說明在微服務保障功能可用后,其擴展性是評價用戶關注的重點,在開發微服務功能時需要考慮其通用性,提升微服務的應用價值.
本文將Hyperledger Fabric 區塊鏈的技術與評價系統相結合,將用戶對微服務各維度打分數據進行記賬,保障了微服務評價數據的透明、不可篡改、可追溯,評價數據安全可信.Hyperledger Fabric的區塊鏈類型為聯盟鏈,其吞吐量相比比特幣和以太坊要高,本系統可同時支持較多評價用戶的并發量.同時,利用AHP和熵值法相結合的微服務維度權值計算方法,構建微服務綜合評價模型,保證重要指標的權值過大,又避免了因維度的評價值過于相近導致該指標失去應有的價值.更加合理的反應了微服務的真實價值,為微服務的智能化管理提供有效的數據支撐.下一步將對系統的共識算法進行優化,提升達成共識的速度和吞吐量,并將改評價系統應用到其他需要評價的業務中.