鄭文靖 王婷
摘? 要:隨著單體式應(yīng)用架構(gòu)維護(hù)困難等弊端日益凸顯,微服務(wù)架構(gòu)被越來越多的開發(fā)者所使用,并且為了解決單體式架構(gòu)在開發(fā)使用過程中面臨的挑戰(zhàn),提出了基于微服務(wù)架構(gòu)的分散治理服務(wù)架構(gòu)思想。微服務(wù)架構(gòu)是一種架構(gòu)思想和開發(fā)模式的蛻變,相比于傳統(tǒng)的單體式服務(wù)架構(gòu),微服務(wù)有著更快的上線周期。本文主要闡述微服務(wù)架構(gòu)的概念與工作原理,論述與單體式架構(gòu)相比微服務(wù)架構(gòu)的優(yōu)勢及特點(diǎn),以及基于Spring Cloud的微服務(wù)架構(gòu)的運(yùn)行流程。
關(guān)鍵詞:微服務(wù)架構(gòu);單體式結(jié)構(gòu);Spring Cloud
中圖分類號:TP311? ? ? ?文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2019)15-0072-03
Micro-service Architecture Research Method
ZHENG Wenjing,WANG Ting
(Xi’an Polytechnic University,Xi’an? 710048,China)
Abstract:As the drawbacks of monolithic architecture are becoming more and more difficult to maintain,micro-service architectures are being used by more and more developers. In order to solve the challenges faced by the monolithic architecture in the process of development and use,the idea of decentralized governance service architecture based on micro-service architecture is proposed. The micro-service architecture is a transformation of architectural thinking and development models. micro-service have a faster on-line cycle than traditional monolithic service architectures. This paper mainly elaborates the concept and working principle of the micro-service architecture,discusses the advantages and characteristics of the micro-service architecture compared with the monolithic architecture,and the operation process of the micro-service architecture based on Spring Cloud.
Keywords:micro-service architecture;monolithic architecture;Spring Cloud
0? 引? 言
隨著互聯(lián)網(wǎng)行業(yè)的飛速發(fā)展,5G時(shí)代的到來使得互聯(lián)網(wǎng)行業(yè)進(jìn)入流量高速增長時(shí)代,隨之而來的是對互聯(lián)網(wǎng)并發(fā)訪問的要求越來越高,“能用就行”的開發(fā)思想已經(jīng)不符合當(dāng)代互聯(lián)網(wǎng)行業(yè)的發(fā)展,隨著高并發(fā)、大流量等性能要求的不斷提高,由單體式結(jié)構(gòu)轉(zhuǎn)向分布式結(jié)構(gòu)是復(fù)雜系統(tǒng)解決問題的唯一出路[1]?;诖耍疚谋容^詳細(xì)地研究了微服務(wù)架構(gòu)的概念及工作原理,并分析了微服務(wù)架構(gòu)的實(shí)現(xiàn)過程。文中首先主要介紹微服務(wù)架構(gòu)概念及工作原理,其次主要對微服務(wù)架構(gòu)與單體式架構(gòu)進(jìn)行對比,分析其優(yōu)缺點(diǎn),然后主要介紹微服務(wù)基礎(chǔ)框架及實(shí)現(xiàn)過程,最后則對全文進(jìn)行總結(jié)。
1? 微服務(wù)架構(gòu)概述及工作原理
微服務(wù)架構(gòu)是一種將單一應(yīng)用拆分為多個(gè)子服務(wù)的系統(tǒng)服務(wù)架構(gòu),采用輕量通信機(jī)制,進(jìn)行服務(wù)之間的相互通信、協(xié)調(diào)與配合,每個(gè)服務(wù)運(yùn)行在自己的進(jìn)程中,圍繞具體業(yè)務(wù)構(gòu)建,并且能夠被獨(dú)立地部署到生產(chǎn)測試環(huán)境中[2]。由于各個(gè)服務(wù)既相互獨(dú)立又相互協(xié)調(diào)配合,因此微服務(wù)之間高內(nèi)聚低耦合的特點(diǎn)使得每個(gè)服務(wù)僅需專注于完成當(dāng)前任務(wù)。在所有情況下,每個(gè)服務(wù)只代表著一個(gè)小的業(yè)務(wù)能力,可通過全自動(dòng)部署機(jī)制獨(dú)立部署[3]。
微服務(wù)架構(gòu)工作原理采用分散治理,將整個(gè)系統(tǒng)根據(jù)業(yè)務(wù)劃分成多個(gè)子系統(tǒng)服務(wù);將多個(gè)應(yīng)用通過負(fù)載均衡部署于子系統(tǒng);將子系統(tǒng)服務(wù)注冊到Eureka,通過一定的策略實(shí)現(xiàn)負(fù)載均衡[4];客戶端都通過API網(wǎng)關(guān)(Zuul)訪問后臺服務(wù),通過路由配置來實(shí)現(xiàn)轉(zhuǎn)發(fā)請求;服務(wù)與服務(wù)之間可以相互訪問及數(shù)據(jù)共享;Hystrix負(fù)責(zé)處理調(diào)用服務(wù)超時(shí)熔斷問題,為服務(wù)提供容錯(cuò)保護(hù),當(dāng)服務(wù)調(diào)用超時(shí)或出現(xiàn)錯(cuò)誤時(shí),可以及時(shí)處理,避免整個(gè)系統(tǒng)癱瘓[5]。
2? 微服務(wù)架構(gòu)與單體式架構(gòu)區(qū)別
由圖1可以看出,單體式架構(gòu)被應(yīng)用、開發(fā)、部署于一個(gè)項(xiàng)目中,將所有的功能打包成war包,部署在一個(gè)JavaEE容器里,隨著系統(tǒng)需求不斷變更等問題,會逐漸形成技術(shù)債務(wù),隨著時(shí)間的推移,技術(shù)債務(wù)將越積越多[6,7];隨著代碼的增多,構(gòu)建和部署的時(shí)間也會增加,且每次功能的變更都需要重新部署整個(gè)應(yīng)用;系統(tǒng)功能模塊的增加及邊界模糊等問題會使得系統(tǒng)復(fù)雜性更高,使得系統(tǒng)難以維護(hù);且單體式應(yīng)用可擴(kuò)展性受限,其作為一個(gè)整體,無法按照具體業(yè)務(wù)模塊的需要進(jìn)行伸縮[8,9]。
與單體式架構(gòu)不同的是,微服務(wù)架構(gòu)僅關(guān)注特定的業(yè)務(wù),業(yè)務(wù)功能清晰。如圖2所示,將整個(gè)應(yīng)用拆分為若干個(gè)微服務(wù),對各個(gè)服務(wù)進(jìn)行獨(dú)立部署,有利于項(xiàng)目整體的開發(fā)和維護(hù)[10];微服務(wù)架構(gòu)相對單體式架構(gòu)更容易部署,需要對某個(gè)微服務(wù)進(jìn)行修改時(shí),只需要重新部署這個(gè)服務(wù)即可,不需要重啟整個(gè)應(yīng)用,方便開發(fā)人員測試部署;且微服務(wù)架構(gòu)可根據(jù)業(yè)務(wù)模塊需要實(shí)現(xiàn)伸縮,可擴(kuò)展性強(qiáng)于單體式應(yīng)用[11-13]。
3? 微服務(wù)架構(gòu)基礎(chǔ)框架與實(shí)現(xiàn)流程
微服務(wù)架構(gòu)常用的基礎(chǔ)框架為Spring Cloud,Spring Cloud為微服務(wù)架構(gòu)的環(huán)境搭建提供了有力的組件化支持,例如服務(wù)注冊與發(fā)現(xiàn)、配置管理、授權(quán)中心、服務(wù)網(wǎng)關(guān)等,從網(wǎng)關(guān)Zuul,到注冊發(fā)現(xiàn)Eureka,再到Hystrix容錯(cuò)保護(hù),開發(fā)部署簡單,通過加依賴和注解,就能運(yùn)行[14-16]。
Spring Cloud從Spring發(fā)展而來,與Dubbo相比,Spring Cloud對微服務(wù)環(huán)境的支持最為完整,適用于各種開發(fā)環(huán)境,且整合了大量輕量級組件,組件豐富,功能齊全,經(jīng)過大量兼容性測試證明其擁有更好的穩(wěn)定性[17]。
Spring Cloud包含幾個(gè)核心組件。Eureka作為Spring Cloud體系中最核心的組件之一,是微服務(wù)治理的核心,通過服務(wù)注冊與發(fā)現(xiàn)實(shí)現(xiàn)服務(wù)治理,Eureka提供了完整的Service Registry和Service Discovery實(shí)現(xiàn);Spring Cloud Config作為Spring Cloud體系中配置管理中心,為微服務(wù)提供分布式配置管理方案,將Config配置信息存于Server,Client通過接口獲取數(shù)據(jù),并初始化應(yīng)用;Spring Security OAuth2作為Spring Cloud體系中的授權(quán)認(rèn)證中心,使客戶端只能登錄授權(quán)層,以此將用戶和客戶端分離,由于所有的外部請求都統(tǒng)一經(jīng)過Zuul網(wǎng)關(guān),因此OAuth2認(rèn)證添加在Zuul這一層上,而每個(gè)微服務(wù)之間的調(diào)用則被認(rèn)為是項(xiàng)目內(nèi)部模塊之間的調(diào)用,不需要進(jìn)行OAuth2授權(quán)認(rèn)證;Zuul網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,客戶端的請求需先經(jīng)過網(wǎng)關(guān),通過路由配置實(shí)現(xiàn)請求轉(zhuǎn)發(fā),網(wǎng)關(guān)是系統(tǒng)對外部請求的唯一入口,處理客戶端請求服務(wù)端的轉(zhuǎn)發(fā)等請求,通過一定的策略實(shí)現(xiàn)負(fù)載均衡[18、19]。Spring Cloud架構(gòu)搭建的環(huán)境運(yùn)行流程如圖3所示,首先啟動(dòng)Eureka注冊中心,將各服務(wù)全部注冊到Eureka;啟動(dòng)Config配置中心,將配置信息從Git中下載下來,獲取到配置信息;啟動(dòng)OAuth2授權(quán)服務(wù),對外部請求進(jìn)行統(tǒng)一授權(quán)[20];啟動(dòng)網(wǎng)關(guān),各服務(wù)經(jīng)由Ribbon進(jìn)行負(fù)載均衡后,分發(fā)到具體業(yè)務(wù)服務(wù);啟動(dòng)各業(yè)務(wù)具體服務(wù),進(jìn)行各業(yè)務(wù)邏輯的實(shí)現(xiàn)[21]。
4? 結(jié)? 論
通過對微服務(wù)架構(gòu)的工作原理及運(yùn)行流程進(jìn)行分析研究可以發(fā)現(xiàn),微服務(wù)不只是一種新的技術(shù),更是一種整體架構(gòu)思想,微服務(wù)架構(gòu)一般適合用于在未來具有擴(kuò)展性并且有著較大用戶增量的業(yè)務(wù)開發(fā)上,能夠有效地解決快速迭代、高并發(fā)等實(shí)質(zhì)性問題[22]。在單體式應(yīng)用到分布式應(yīng)用的轉(zhuǎn)變過程中,微服務(wù)架構(gòu)的出現(xiàn)解決了獨(dú)立快速部署、可維護(hù)等系統(tǒng)性能問題,但微服務(wù)架構(gòu)運(yùn)行慢、對系統(tǒng)消耗大仍然是微服務(wù)發(fā)展中存在的問題,隨著技術(shù)的進(jìn)步,微服務(wù)架構(gòu)的使用會更加成熟。因此,微服務(wù)架構(gòu)值得人們期待。
參考文獻(xiàn):
[1] 田浩.基于SOA的高并發(fā)與高可用網(wǎng)站開發(fā)框架設(shè)計(jì)與實(shí)現(xiàn) [D].呼和浩特:內(nèi)蒙古大學(xué),2017.
[2] 董昭.電信運(yùn)營商單體架構(gòu)到微服務(wù)架構(gòu)轉(zhuǎn)型設(shè)計(jì)思路 [J].通信世界,2017(25):56-57.
[3] 王紀(jì)軍,張斌,顧永生,等.云環(huán)境中Web應(yīng)用的微服務(wù)架構(gòu)評估 [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(5):9-15.
[4] 王方旭.基于Spring Cloud實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)微服務(wù)化的設(shè)計(jì)與實(shí)現(xiàn) [J].電子技術(shù)與軟件工程,2018(8):60-61.
[5] 李建偉.移動(dòng)信息環(huán)境中參考咨詢服務(wù)應(yīng)用開發(fā)實(shí)踐 [J].現(xiàn)代情報(bào),2014,34(2):90-93.
[6] 張?jiān)茲?,張璇,丁浩,?需求變更技術(shù)債務(wù)研究 [J].計(jì)算機(jī)科學(xué),2018,45(9):89-93.
[7] Nicolli R,De M N M G,Spínola Rodrigo Oliveira. A Tertiary Study on Technical Debt:Types,Management Strategies,Research Trends,and Base Information for Practitioners [J].Information and Software Technology,2018,102(10):117-145.
[8] 趙然,朱小勇.微服務(wù)架構(gòu)評述 [J].網(wǎng)絡(luò)新媒體技術(shù),2019,8(1):58-61+65.
[9] 侯海平,李龍.基于Dubbo服務(wù)治理模式的單體架構(gòu)改造 [J].通化師范學(xué)院學(xué)報(bào),2018,39(8):64-68.
[10] 李春霞.微服務(wù)架構(gòu)研究概述 [J/OL].軟件導(dǎo)刊:1-4,http://kns.cnki.net/kcms/detail/42.1671.TP.20190527.1545. 058.html,2019-06-11.
[11] 裴宏祥,于曉虹.基于微服務(wù)架構(gòu)的系統(tǒng)設(shè)計(jì)與開發(fā) [J].中國科技信息,2019(10):91-92.
[12] 方圓,鄭衛(wèi)勝.一種.Net框架下微服務(wù)框架設(shè)計(jì)研究 [J].通信電源技術(shù),2019,36(4):87-88.
[13] 楊強(qiáng),張鈞鳴.基于微服務(wù)架構(gòu)的大數(shù)據(jù)應(yīng)用開發(fā)創(chuàng)新實(shí)踐 [J].電力大數(shù)據(jù),2019,22(3):71-76.
[14] 邱生姬.淺談JAVA微服務(wù)SpringCloud開發(fā) [J].電腦迷,2017(17):50.
[15] 周永圣,侯峰裕,孫雯,等.基于SpringCloud微服務(wù)架構(gòu)的進(jìn)銷存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].工業(yè)控制計(jì)算機(jī),2018,31(11):129-130+133.
[16] 隋永鑫.微服務(wù)架構(gòu)在電動(dòng)汽車智能充電服務(wù)與運(yùn)營平臺系統(tǒng)中的應(yīng)用 [J].微型機(jī)與應(yīng)用,2017,36(24):102-104+108.
[17] 馬雄.基于微服務(wù)架構(gòu)的系統(tǒng)設(shè)計(jì)與開發(fā) [D].南京:南京郵電大學(xué),2017.
[18] 毛煜蘇.基于Spring Cloud微服務(wù)架構(gòu)的評論系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].武漢:華中科技大學(xué),2018.
[19] 郭致遠(yuǎn),魏銀珍.基于Spring Cloud服務(wù)調(diào)用的設(shè)計(jì)與應(yīng)用 [J].信息技術(shù)與網(wǎng)絡(luò)安全,2019,38(2):87-91.
[20] 房立鎮(zhèn),王信堂.微服務(wù)架構(gòu)下高校數(shù)據(jù)共享服務(wù)平臺的設(shè)計(jì) [J].電子技術(shù)與軟件工程,2019(6):158.
[21] 王書玲,王小軍.基于微服務(wù)的移動(dòng)學(xué)習(xí)平臺構(gòu)建研究 [J].中國成人教育,2017(23):18-22.
[22] 何桐.微服務(wù)架構(gòu)應(yīng)用前景研究 [J].計(jì)算機(jī)產(chǎn)品與流通,2019(7):46.
作者簡介:鄭文靖(1994-),女,漢族,內(nèi)蒙古呼和浩特人,計(jì)算機(jī)碩士,研究方向:智能信息處理與并行計(jì)算;王婷(1994-),女,漢族,陜西渭南人,計(jì)算機(jī)碩士,研究方向:智能信息處理與并行計(jì)算。