姜頑強(qiáng) 郭志軍
[摘 ? ?要] 針對(duì)基于Visual Studio開發(fā)的業(yè)務(wù)系統(tǒng)微服務(wù)化改造問題,從Service Fabric微服務(wù)開發(fā)集成平臺(tái)、運(yùn)行部署平臺(tái)、微服務(wù)治理、API Gateway等四個(gè)方面開展研究,搭建了企業(yè)Service Fabric微服務(wù)應(yīng)用平臺(tái),并以某業(yè)務(wù)系統(tǒng)中工作流為例進(jìn)行了Service Fabric微服務(wù)化改造,驗(yàn)證了企業(yè)Service Fabric微服務(wù)應(yīng)用平臺(tái)的可行。
[關(guān)鍵詞] 微服務(wù);Service Fabric;TFS;Ocelot;API Gateway
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2020. 19. 074
[中圖分類號(hào)] TP315 ? ?[文獻(xiàn)標(biāo)識(shí)碼] ?A ? ? ?[文章編號(hào)] ?1673 - 0194(2020)19- 0182- 02
0 ? ? ?前 ? ?言
隨著信息技術(shù)的發(fā)展,微服務(wù)已逐步成為復(fù)雜業(yè)務(wù)系統(tǒng)首選技術(shù)架構(gòu),同時(shí)許多企業(yè)正在考慮怎樣將傳統(tǒng)業(yè)務(wù)系統(tǒng)進(jìn)行微服務(wù)化改造,實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)中部分功能組件按需升級(jí)維護(hù)。微軟公司Service Fabric的開源,無疑給早期使用Visual Studio開發(fā)的傳統(tǒng)SOA架構(gòu)業(yè)務(wù)系統(tǒng)提供了一種可行的微服務(wù)化改造方案。因此,研究與搭建企業(yè)Service Fabric微服務(wù)應(yīng)用平臺(tái)是Service Fabric微服務(wù)化改造的首要工作。
1 ? ? ?Service Fabric微服務(wù)應(yīng)用平臺(tái)總體架構(gòu)設(shè)計(jì)
微服務(wù)應(yīng)用平臺(tái)的總體架構(gòu),主要是從開發(fā)集成、微服務(wù)運(yùn)行容器與平臺(tái)、運(yùn)行時(shí)監(jiān)控治理和外部渠道接入等維度來劃分的[1]。企業(yè)Service Fabric微服務(wù)應(yīng)用平臺(tái)主要從Service Fabric微服務(wù)的開發(fā)平臺(tái)、TFS自動(dòng)發(fā)布平臺(tái)、運(yùn)行部署獨(dú)立集群、服務(wù)治理中心、API Gateway等方面進(jìn)行規(guī)劃設(shè)計(jì),其物理架構(gòu)圖如圖1所示。
2 ? ? ? Service Fabric微服務(wù)應(yīng)用平臺(tái)搭建
2.1 ? 開發(fā)集成平臺(tái)搭建
Service Fabric工具是Visual Studio 2017和2019中Azure開發(fā)工作負(fù)荷的一部分,“Azure Service Fabric應(yīng)用程序”和“Azure Service Fabric 部署”已分別是Team Foundation Server 2018生成與發(fā)布模板中的一部分,這為Service Fabric應(yīng)用程序開發(fā)、生成與發(fā)布提供解決方案。
企業(yè)Service Fabric微服務(wù)開發(fā)集成平臺(tái)采用Visual Studio Enterprise 2017 (version 15.9)+ Team Foundation Server 2018 Update 3.2,實(shí)現(xiàn)Service Fabric微服務(wù)開發(fā)、源代碼管理及持續(xù)集成。
2.2 ? 運(yùn)行部署平臺(tái)搭建
Service Fabric群集是通過網(wǎng)絡(luò)連接在一起的一組虛擬機(jī)或物理機(jī),可在其中部署和管理微服務(wù)。使用Service Fabric可在運(yùn)行Windows Server或Linux 的任何VM或計(jì)算機(jī)上創(chuàng)建Service Fabric群集[2]。
使用Service Fabric安裝包和Service Fabric運(yùn)行包,修改ClusterConfig.Windows.MultiMachine.json群集配置文件,搭建10節(jié)點(diǎn)Service Fabric獨(dú)立群集,用于Service Fabric應(yīng)用程序運(yùn)行部署平臺(tái),如圖2所示。
2.3 ? 微服務(wù)治理中心
服務(wù)治理可以說是微服務(wù)架構(gòu)中最為核心和基礎(chǔ)的模塊, 它主要用來實(shí)現(xiàn)各個(gè)微服務(wù)實(shí)例的自動(dòng)化注冊(cè)與發(fā)現(xiàn)[3]。Consul是用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置,內(nèi)置了服務(wù)注冊(cè)與發(fā)現(xiàn)框架、分布一致性協(xié)議實(shí)現(xiàn)、健康檢查、Key/Value存儲(chǔ)、多數(shù)據(jù)中心方案,Consul來做服務(wù)發(fā)現(xiàn)能與Ocelot完美結(jié)合。
企業(yè)微服務(wù)治理中心采用3節(jié)點(diǎn)Server端和2節(jié)點(diǎn)Client端搭建Consul集群,根據(jù)項(xiàng)目進(jìn)行Key/Value設(shè)置,實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)、權(quán)限統(tǒng)一認(rèn)證和健康檢查等功能。
2.4 ? API Gateway
API Gateway是微服務(wù)架構(gòu)中的核心組件,是客戶端請(qǐng)求的門戶,是調(diào)用具體服務(wù)端的橋梁。Ocelot是一個(gè)用.NET Core實(shí)現(xiàn)并且開源的API網(wǎng)關(guān),Service Fabric微服務(wù)應(yīng)用平臺(tái)采用Ocelot與Consul相結(jié)合,實(shí)現(xiàn)路由、請(qǐng)求聚合、服務(wù)發(fā)現(xiàn)、權(quán)限認(rèn)證等功能。
3 ? ? ?某業(yè)務(wù)系統(tǒng)中工作流微服務(wù)化改造實(shí)例
選擇某業(yè)務(wù)系統(tǒng)中的工作流(該工作流是以.NET Core為目標(biāo)框架)進(jìn)行Service Fabric微服務(wù)化改造,創(chuàng)建的SF.WorkflowAPI解決方案中包括1個(gè)Service Fabric應(yīng)用程序和2個(gè).NET Core應(yīng)用程序,通過TFS實(shí)現(xiàn)Service Fabric應(yīng)用程序集成,在consul集群中實(shí)現(xiàn)服務(wù)注冊(cè),通過API Gateway實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和權(quán)限認(rèn)證。具體效果如圖3、圖4、圖5所示。
4 ? ? ?結(jié) ? ?語
通過對(duì)Service Fabric微服務(wù)開發(fā)集成平臺(tái)、運(yùn)行部署平臺(tái)、微服務(wù)治理、API網(wǎng)關(guān)等方面的研究,初步完成Service Fabric微服務(wù)應(yīng)用平臺(tái)的搭建,經(jīng)過某業(yè)務(wù)系統(tǒng)中工作流微服務(wù)化改造實(shí)踐,驗(yàn)證了Service Fabric微服務(wù)應(yīng)用平臺(tái)的可行,為早期使用Visual Studio開發(fā)的傳統(tǒng)SOA架構(gòu)業(yè)務(wù)系統(tǒng)提供了微服務(wù)化改造方案。
參照《分布式應(yīng)用架構(gòu)技術(shù)能力要求:微服務(wù)平臺(tái)》和持續(xù)集成系統(tǒng)(CI/CD),企業(yè)Service Fabric微服務(wù)應(yīng)用平臺(tái)還需進(jìn)一步補(bǔ)充完善微服務(wù)框架、管理平臺(tái)和持續(xù)集成等功能,形成一個(gè)完整先進(jìn)的微服務(wù)應(yīng)用平臺(tái)方案。
主要參考文獻(xiàn)
[1]微服務(wù)的4個(gè)設(shè)計(jì)原則和19個(gè)解決方案[EB/OL].https://www.cnblogs.com/HigginCui/p/10460807.html.
[2]Service Fabric文檔[EB/OL].https://docs.azure.cn/zh-cn/service-fabric/service-fabric-get-started.
[3]Eureka服務(wù)治理體系[EB/OL].https://blog.csdn.net/weixin_38207722/article/details/103381262.