姜海東 張棟棟 董藝
摘要:區(qū)塊鏈?zhǔn)悄壳白罹哳嵏残缘膭?chuàng)新技術(shù),降低了信任成本,同時(shí)擴(kuò)大了信任范圍,推進(jìn)跨界融合以及在更大范圍內(nèi)的一體化協(xié)作。微服務(wù)是一種用于構(gòu)建應(yīng)用的架構(gòu)方案,微服務(wù)架構(gòu)可將應(yīng)用拆分成多個(gè)核心功能,通過服務(wù)化編排、自動(dòng)修復(fù)、擴(kuò)展、監(jiān)控等實(shí)現(xiàn)微服務(wù)的智能托管。通過分析區(qū)塊鏈云平臺(tái)總體設(shè)計(jì)架構(gòu),提出了建立統(tǒng)一的服務(wù)調(diào)用機(jī)制,通過對(duì)支撐業(yè)務(wù)、業(yè)務(wù)模型、研發(fā)團(tuán)隊(duì)和技術(shù)等因素的分析,實(shí)現(xiàn)區(qū)塊鏈云平臺(tái)的服務(wù)化,將區(qū)塊鏈服務(wù)容器化,由容器負(fù)責(zé)管理區(qū)塊鏈微服務(wù)的各個(gè)節(jié)點(diǎn),并以此為依據(jù)提出了基于微服務(wù)的區(qū)塊鏈云平臺(tái)的整體設(shè)計(jì)。微服務(wù)化有效地解決了區(qū)塊鏈技術(shù)不統(tǒng)一、業(yè)務(wù)復(fù)雜等問題,為區(qū)塊鏈云平臺(tái)上的業(yè)務(wù)應(yīng)用構(gòu)建提供了支撐。
關(guān)鍵詞:微服務(wù);區(qū)塊鏈;云平臺(tái);容器化
中圖分類號(hào): TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)35-0050-04
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Design and Practice of Blockchain Cloud Platform Based on Micro-services
JIANG Hai-dong1,ZHANG Dong-dong1,2 , DONG Yi1,2
(1.Beijing China-Power Information Technology Co., Ltd., Beijing 100192, China; 2.State Grid Information & Telecommunication Group, Beijing 100031, China)
Abstract: Blockchain is the most subversive innovative technology at present, which reduces the cost of trust, expands the scope of trust, promotes cross-border integration, and opens up the possibility of integrated cooperation in a wider range. Microservice is an architecture scheme for building applications. The microservice architecture can divide the application into multiple core functions, and realize the intelligent hosting of microservices through the service-oriented arrangement, automatic repair, expansion, monitoring, etc. Through the analysis of the overall design architecture of the blockchain cloud platform, this paper proposes the establishment of a unified service invocation mechanism. Through the analysis of the supporting business, business model, R & D team, and technology, the service of the blockchain cloud platform is realized, and the blockchain service is containerized, and the container is responsible for managing each node of the blockchain microservice The overall design of blockchain cloud platform. Microservice effectively solves the problems such as disunity of blockchain technology and complex business and provides support for business application construction on the blockchain cloud platform.
Key words: micro-service; blockchain; cloud platform; containerization
《“十三五”國家信息化規(guī)劃》明確提出“需加強(qiáng)區(qū)塊鏈等新技術(shù)的創(chuàng)新、試驗(yàn)和應(yīng)用”。2018 年提出以區(qū)塊鏈為代表的新一代信息技術(shù)加速突破應(yīng)用,這一重要論斷標(biāo)志著區(qū)塊鏈技術(shù)和應(yīng)用發(fā)展進(jìn)入新階段[1]。工信部的《2018中國區(qū)塊鏈產(chǎn)業(yè)白皮書》指出區(qū)塊鏈行業(yè)應(yīng)用加速推進(jìn),深入分析國內(nèi)的區(qū)塊鏈技術(shù)在金融行業(yè)的應(yīng)用情況。國網(wǎng)公司兩會(huì)提出全方位建設(shè)“三型兩網(wǎng)”,加快打造世界一流能源互聯(lián)網(wǎng)企業(yè)的戰(zhàn)略部署,提出“開展區(qū)塊鏈等新技術(shù)應(yīng)用研究,有效支撐和促進(jìn)‘兩網(wǎng)融合發(fā)展”,推動(dòng)了區(qū)塊鏈技術(shù)在電力行業(yè)的進(jìn)一步研究和深化應(yīng)用。在此目標(biāo)下構(gòu)建適合企業(yè)應(yīng)用的基于云環(huán)境的企業(yè)級(jí)區(qū)塊鏈服務(wù)組件,將區(qū)塊鏈技術(shù)應(yīng)用在云環(huán)境下,實(shí)現(xiàn)區(qū)塊鏈組件的云化和服務(wù)化,打造一個(gè)高可靠性、高彈性、可快速調(diào)整、低成本的國網(wǎng)企業(yè)級(jí)區(qū)塊鏈云平臺(tái)。
面向服務(wù)架構(gòu)(SOA)是有效解決了區(qū)塊鏈平臺(tái)在業(yè)務(wù)支撐方面的復(fù)雜性,按照公有鏈、聯(lián)盟鏈、私有鏈的區(qū)塊鏈類型或按照加密算法、共識(shí)算法等可復(fù)用性的粒度劃分,將相關(guān)功能通過統(tǒng)一的服務(wù)提供給上層業(yè)務(wù)應(yīng)用。SOA重點(diǎn)在于設(shè)計(jì)松耦合的、粗粒度的、可被發(fā)現(xiàn)的服務(wù),并提供服務(wù)的高可復(fù)用性、擴(kuò)展性和可用性?;谖⒎?wù)的區(qū)塊鏈云平臺(tái)采用“一個(gè)平臺(tái)、多種應(yīng)用、眾多微服務(wù)”的軟件架構(gòu)模式,實(shí)現(xiàn)了區(qū)塊鏈云平臺(tái)對(duì)復(fù)雜業(yè)務(wù)應(yīng)用如供應(yīng)鏈、財(cái)務(wù)、人資管理等提供基于區(qū)塊鏈的數(shù)據(jù)安全、數(shù)據(jù)共享、身份認(rèn)證等服務(wù)。該模式通過將大系統(tǒng)拆解為眾多微服務(wù),分布式部署在多節(jié)點(diǎn)的集群,實(shí)現(xiàn)了區(qū)塊鏈云平臺(tái)對(duì)復(fù)雜業(yè)務(wù)系統(tǒng)的有效支撐和靈活調(diào)用[2]。
1 區(qū)塊鏈云平臺(tái)架構(gòu)
1.1 企業(yè)級(jí)區(qū)塊鏈簡介
區(qū)塊鏈技術(shù)通過塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)驗(yàn)證與存儲(chǔ),利用分布式節(jié)點(diǎn)共識(shí)算法進(jìn)行數(shù)據(jù)的生成與更新,利用密碼學(xué)原理進(jìn)行數(shù)據(jù)訪問和數(shù)據(jù)傳輸安全,利用智能合約實(shí)現(xiàn)編程和數(shù)據(jù)操作的分布式架構(gòu),具有不可篡改、可編程、可追溯的分布式賬本[3]。
1.2 區(qū)塊鏈云平臺(tái)技術(shù)特性
區(qū)塊鏈?zhǔn)腔诿艽a學(xué)技術(shù)的一種分布式共享數(shù)據(jù)庫,即基于共識(shí)機(jī)制建立起來的集體維護(hù)的公開大賬簿[4],具有去中心化、共識(shí)信任機(jī)制、信息不可篡改、開放性、跨平臺(tái)性、匿名性共六大特點(diǎn)。
2 區(qū)塊鏈云平臺(tái)的關(guān)鍵技術(shù)
2.1 改進(jìn)PBFT共識(shí)算法技術(shù)
分布式共識(shí)是區(qū)塊鏈的核心技術(shù),參與共識(shí)的節(jié)點(diǎn)以分布式的方式進(jìn)行部署,在有限時(shí)間內(nèi)就某個(gè)提案達(dá)成一致,共同維護(hù)一致性賬本的技術(shù)[5]。以分布式模式部署的區(qū)塊鏈系統(tǒng)中,節(jié)點(diǎn)之間存在失效、故障或宕機(jī)的可能,通信網(wǎng)絡(luò)也存在干擾甚至阻斷的情況,因此采用異步的通信方式組成網(wǎng)絡(luò)集群,保證共識(shí)過程的正常進(jìn)行。目前受限于信息反復(fù)交互和網(wǎng)絡(luò)傳輸速度,共識(shí)效率低下成為制約區(qū)塊鏈技術(shù)發(fā)展的瓶頸之一。為此,本項(xiàng)目使用改進(jìn)的實(shí)用拜占庭算法,當(dāng)存在網(wǎng)絡(luò)延時(shí)或者節(jié)點(diǎn)故障的時(shí)候,可以保證共識(shí)結(jié)果的有效性和數(shù)據(jù)存儲(chǔ)的強(qiáng)一致性。區(qū)塊鏈云平臺(tái)使用改進(jìn)PBFT算法,通過由主節(jié)點(diǎn)確認(rèn)區(qū)塊合法性的方法,減少了大量合法性確認(rèn)的通信交互,使節(jié)點(diǎn)共識(shí)的一致性提升了50%,提高了系統(tǒng)的分布式共識(shí)性能。
2.2 共識(shí)節(jié)點(diǎn)通信技術(shù)
在 GRPC 里客戶端應(yīng)用類似調(diào)用本地對(duì)象,直接調(diào)用另一臺(tái)機(jī)器上的服務(wù)端應(yīng)用,能夠更容易地創(chuàng)建分布式應(yīng)用和服務(wù)[6],它的流程如下:需要使用protobuf定義接口;使用編譯工具生成特定語言的執(zhí)行代碼;啟動(dòng)一個(gè)Server服務(wù)端,服務(wù)端你通過偵聽指定的端口,來等待Client鏈接請(qǐng)求,通常使用Netty來構(gòu)建,GRPC內(nèi)置了Netty的支持;啟動(dòng)多個(gè)Client客戶端,客戶端通過與Server建立TCP長鏈接,并發(fā)送請(qǐng)求。
2.3 微服務(wù)技術(shù)
Spring Cloud是一個(gè)云應(yīng)用開發(fā)工具,Spring Cloud 就是微服務(wù)系統(tǒng)架構(gòu)的一站式解決方案,云應(yīng)用構(gòu)建微服務(wù)的過程中需要做如 服務(wù)發(fā)現(xiàn)注冊 、配置中心 、消息總線 、負(fù)載均衡 、斷路器 、數(shù)據(jù)監(jiān)控 等操作,它提供了一套簡易的編程模型,使我們能在 Spring Boot 的基礎(chǔ)上實(shí)現(xiàn)微服務(wù)項(xiàng)目的構(gòu)建[7]。
3 區(qū)塊鏈云平臺(tái)應(yīng)用
按照國網(wǎng)公司“一平臺(tái)、一系統(tǒng)、多場景、微應(yīng)用”的“十三五”信息化總體規(guī)劃,以業(yè)務(wù)為引領(lǐng),適度利用新技術(shù),設(shè)計(jì)“穩(wěn)定安全、統(tǒng)一開放、簡潔友好、高效領(lǐng)先”的企業(yè)級(jí)區(qū)塊鏈云平臺(tái)[10]。利用分布式架構(gòu)設(shè)計(jì),構(gòu)建區(qū)塊鏈云平臺(tái)的可信存儲(chǔ)服務(wù)、智能合約服務(wù)、數(shù)據(jù)溯源服務(wù)等核心業(yè)務(wù)相對(duì)獨(dú)立化,易于業(yè)務(wù)擴(kuò)展,同時(shí)降低業(yè)務(wù)調(diào)整對(duì)不同應(yīng)用的相互影響。
區(qū)塊鏈云平臺(tái)的微服務(wù)的拆分遵循業(yè)務(wù)獨(dú)立性和松耦合原則,首先根據(jù)區(qū)塊鏈云平臺(tái)不同的業(yè)務(wù)能力實(shí)現(xiàn)拆分,業(yè)務(wù)能力對(duì)應(yīng)區(qū)塊鏈云平臺(tái)核心服務(wù)能力。其次,遵循領(lǐng)域驅(qū)動(dòng)原則,領(lǐng)域由一個(gè)或多個(gè)域構(gòu)成,每個(gè)子域?qū)?yīng)不同的業(yè)務(wù)功能部分,可以分為平臺(tái)類、通用支持類和專用支持類。服務(wù)拆分時(shí)考慮可擴(kuò)展性和可維護(hù)性等非功能性的因素,一個(gè)微服務(wù)應(yīng)該是強(qiáng)關(guān)聯(lián)的業(yè)務(wù)能力的聚集,服務(wù)的內(nèi)部變化不影響外部調(diào)用的其他服務(wù)。區(qū)塊鏈的微服務(wù)拆分在保證具備區(qū)塊鏈原有核心能力的基礎(chǔ)上,使用業(yè)務(wù)領(lǐng)域知識(shí)作為微服務(wù)邊界,從而使拆分后的服務(wù)有效支撐了云平臺(tái)的上層應(yīng)用。
3.1 業(yè)務(wù)架構(gòu)
區(qū)塊鏈云平臺(tái)的業(yè)務(wù)目標(biāo)是構(gòu)建區(qū)塊鏈公共服務(wù)能力,促成電力生產(chǎn)者、電力消費(fèi)者、電網(wǎng)上下游企業(yè)等共同建設(shè)并維護(hù)公平、公正、共享、共贏的可信數(shù)據(jù)共享平臺(tái)。對(duì)于存證類應(yīng)用,以數(shù)據(jù)形式實(shí)現(xiàn)各類證書、合同的長期存儲(chǔ),便于數(shù)據(jù)查詢與保管,提高管理效率,增強(qiáng)數(shù)據(jù)的安全性與可靠性;對(duì)交易類應(yīng)用,實(shí)現(xiàn)分布式電力交易的分權(quán)化、可追溯,保證交易透明性,利用區(qū)塊鏈不可篡改、點(diǎn)對(duì)點(diǎn)交易的特性,實(shí)現(xiàn)精細(xì)化交易管理,為新能源交易部署提供有力數(shù)據(jù)支撐;對(duì)數(shù)據(jù)共享類應(yīng)用,通過分布式的數(shù)據(jù)存儲(chǔ)、本地化或就近區(qū)塊節(jié)點(diǎn)獲取數(shù)據(jù)的方法,減少集中式存儲(chǔ)所需的空間資源與服務(wù)資源,降低服務(wù)器性能壓力,增強(qiáng)系統(tǒng)穩(wěn)定性。同時(shí)本系統(tǒng)還將為公司電子票據(jù)業(yè)務(wù)、可信存證服務(wù)、電力交易綠證核發(fā)溯源、中長期雙邊自主協(xié)商交易、多邊能源一體化交易應(yīng)用、車聯(lián)網(wǎng)綠電交易業(yè)務(wù)、新能源共享儲(chǔ)能、光伏工業(yè)互聯(lián)網(wǎng)、虛擬電廠運(yùn)行與調(diào)度、供應(yīng)鏈金融、分布式綜合能源可信計(jì)量及交易服務(wù)、信息系統(tǒng)應(yīng)用安全防護(hù)、身份可信接入等業(yè)務(wù)場景建設(shè)提供技術(shù)支撐。
3.2 技術(shù)架構(gòu)
3.2.1 技術(shù)架構(gòu)
本系統(tǒng)在基于分布式技術(shù)架構(gòu)和云中間件的基礎(chǔ)上,實(shí)現(xiàn)對(duì)綜合能源、供應(yīng)鏈管理、智慧城市等SaaS層應(yīng)用的支撐。整體采用微服務(wù)為基本單位的分布式部署,實(shí)現(xiàn)“一應(yīng)用一接口多服務(wù)”架構(gòu)模式,其中多服務(wù)主要包括專用微服務(wù)群和通用支持微服務(wù)群,一接口是REST的Web API+JSON和RPC組成的服務(wù)調(diào)用接口,一應(yīng)用主要包括移動(dòng)APP和Web應(yīng)用。前后端通過調(diào)用REST的API為不同的應(yīng)用程序提供標(biāo)準(zhǔn)化的數(shù)據(jù),完成區(qū)塊鏈平臺(tái)對(duì)上層應(yīng)用的支撐。根據(jù)拆分原則,區(qū)塊鏈云平臺(tái)系統(tǒng)包含多個(gè)微服務(wù)??傮w技術(shù)架構(gòu)如圖2所示。
3.2.2 開發(fā)視圖
區(qū)塊鏈云平臺(tái)的系統(tǒng)技術(shù)架構(gòu)橫向可分為前端、服務(wù)層和后端,其中前端的主體架構(gòu)采用MVVM架構(gòu),實(shí)現(xiàn)了三種不同的技術(shù)路線[11]。在系統(tǒng)技術(shù)架構(gòu)的三層中,服務(wù)層是核心,服務(wù)層采用分布式部署的微服務(wù)架構(gòu),提供接口的API供其他服務(wù)或微應(yīng)用,提升可復(fù)用性。前端包括Web和移動(dòng)應(yīng)用,Web端采用VUE框架,移動(dòng)應(yīng)用采用html5框架,實(shí)現(xiàn)不同移動(dòng)設(shè)備的自適應(yīng)。服務(wù)端采用JAVA語言,基于Spring Boot、GRPC等框架,集成了分布式事物、分布式應(yīng)用服務(wù)、實(shí)時(shí)監(jiān)控、云安全服務(wù)等云組件。后端基于云的PaaS中間件和IaaS層基礎(chǔ)設(shè)施[12]。開發(fā)視圖如圖3所示。
3.2.3 微服務(wù)視圖
微服務(wù)架構(gòu)采用去中心化的分布式服務(wù)部署,提供了本地化的服務(wù)注冊和服務(wù)發(fā)現(xiàn)機(jī)制,有效地提高了系統(tǒng)的容錯(cuò)能力和靈活性,并減少了網(wǎng)絡(luò)資源的消耗[13]。在分布式服務(wù)架構(gòu)中,將注冊中心分散到集群的各個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)會(huì)啟動(dòng)一個(gè)注冊中心,注冊中心之間相互獨(dú)立,注冊中心的微服務(wù)數(shù)量縮減,分解了注冊中心的壓力。微服務(wù)架構(gòu)視圖如圖4所示。
3.3 跨鏈服務(wù)架構(gòu)
本系統(tǒng)注冊鏈負(fù)責(zé)所有跨鏈數(shù)據(jù)調(diào)用,首先將區(qū)塊鏈1、區(qū)塊鏈2開放的服務(wù)注冊到注冊鏈上;然后業(yè)務(wù)系統(tǒng)查詢注冊的服務(wù)后,通過注冊鏈的“跨鏈服務(wù)調(diào)用”模塊發(fā)起跨鏈數(shù)據(jù)查詢操作,由注冊鏈調(diào)用區(qū)塊鏈1、區(qū)塊鏈2發(fā)布的服務(wù),執(zhí)行區(qū)塊鏈發(fā)布的API服務(wù);最后區(qū)塊鏈1、區(qū)塊鏈2的API查詢業(yè)務(wù)數(shù)據(jù)并將查詢的結(jié)果返回給業(yè)務(wù)系統(tǒng)本系統(tǒng)跨鏈調(diào)用過程如圖5所示。
4 結(jié)束語
本文通過結(jié)合區(qū)塊鏈云平臺(tái)的微服務(wù)開發(fā)架構(gòu),闡述了區(qū)塊鏈云平臺(tái)架構(gòu)的設(shè)計(jì)理念和優(yōu)勢?;谖⒎?wù)的區(qū)塊鏈云平臺(tái)框架,業(yè)務(wù)代碼更加輕量級(jí),只需關(guān)注本服務(wù)的邏輯和微服務(wù)的配置,加快業(yè)務(wù)響應(yīng)速度,能夠有效地支撐區(qū)塊鏈云平臺(tái)上層業(yè)務(wù)應(yīng)用的開發(fā)。微服務(wù)框架強(qiáng)化了區(qū)塊鏈云平臺(tái)的服務(wù)化結(jié)構(gòu), 所有的業(yè)務(wù)都是一個(gè)可以獨(dú)立部署和運(yùn)行的容器單元,每個(gè)服務(wù)都定義了清晰的界限,同時(shí)平臺(tái)為微服務(wù)封裝了服務(wù)注冊器、服務(wù)發(fā)現(xiàn)器和服務(wù)管理中心,同時(shí)運(yùn)維層面集成了監(jiān)控告警工具,達(dá)到區(qū)塊鏈云平臺(tái)為上層應(yīng)用提供靈活服務(wù)的目標(biāo),降低了區(qū)塊鏈云平臺(tái)升級(jí)和維護(hù)的成本和復(fù)雜度。
參考文獻(xiàn):
[1] 鄭志明,邱望潔.我國區(qū)塊鏈發(fā)展趨勢與思考[J].中國科學(xué)基金,2020,34(1):2-6.
[2] 寇思琦.基于區(qū)塊鏈技術(shù)的可信光網(wǎng)絡(luò)資源共識(shí)研究[D].北京:北京郵電大學(xué),2019.
[3] 石欣,玄佳興,李旭.區(qū)塊鏈技術(shù)在綠證交易市場中的應(yīng)用[C]//大連:中國電機(jī)工程學(xué)會(huì)電力通信專業(yè)委員會(huì)第十二屆學(xué)術(shù)會(huì)議論文集,2019:175-178.
[4] 蔡釗.區(qū)塊鏈技術(shù)及其在金融行業(yè)的應(yīng)用初探[J].中國金融電腦,2016(2):30-34.
[5] 穆錚.共享單車風(fēng)險(xiǎn)管理的新出路[J].遼寧經(jīng)濟(jì),2017(9):46-47.
[6] 趙錦波.面向區(qū)塊鏈數(shù)據(jù)隱私保護(hù)的可搜索加密研究[D].西安:西安電子科技大學(xué),2019.
[7] 王海隆.區(qū)塊鏈技術(shù)在中醫(yī)藥領(lǐng)域中的應(yīng)用展望[J].貴陽中醫(yī)學(xué)院學(xué)報(bào),2017,39(3):1-4.
[8] 郭棟,王偉,曾國蓀.一種基于微服務(wù)架構(gòu)的新型云件PaaS平臺(tái)[J].信息網(wǎng)絡(luò)安全,2015(11):15-20.
[9] Vianden M,Lichter H,Steffens A.Experience on a microservice-based reference architecture for measurement systems[C]//2014 21st Asia-Pacific Software Engineering Conference.December 1-4,2014,Jeju,South Korea.IEEE,2014:183-190.
[10] 付朋輝,呂鋒,王艷.基于微服務(wù)架構(gòu)的平臺(tái)設(shè)計(jì)與應(yīng)用[J].金融電子化,2017(6):72-73.
[11] 張鵬,王偉,熊力,等.支撐國網(wǎng)業(yè)務(wù)系統(tǒng)的SoGrid云平臺(tái)研究與應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(3):129-132.
[12] 張宸,王惠森.基于微服務(wù)架構(gòu)的圖書館機(jī)構(gòu)知識(shí)庫設(shè)計(jì)研究[J].圖書館學(xué)研究,2017(8):59-63,97.
[13] 李蘇璇. 基于微服務(wù)架構(gòu)的SaaS應(yīng)用構(gòu)建方法研究[D].廣州:華南理工大學(xué), 2016
【通聯(lián)編輯:唐一東】