鄭文靖 王婷
摘? 要:隨著單體式應(yīng)用架構(gòu)維護困難等弊端日益凸顯,微服務(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)勢及特點,以及基于Spring Cloud的微服務(wù)架構(gòu)的運行流程。
關(guān)鍵詞:微服務(wù)架構(gòu);單體式結(jié)構(gòu);Spring Cloud
中圖分類號:TP311? ? ? ?文獻標(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時代的到來使得互聯(lián)網(wǎng)行業(yè)進入流量高速增長時代,隨之而來的是對互聯(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]。基于此,本文比較詳細地研究了微服務(wù)架構(gòu)的概念及工作原理,并分析了微服務(wù)架構(gòu)的實現(xiàn)過程。文中首先主要介紹微服務(wù)架構(gòu)概念及工作原理,其次主要對微服務(wù)架構(gòu)與單體式架構(gòu)進行對比,分析其優(yōu)缺點,然后主要介紹微服務(wù)基礎(chǔ)框架及實現(xiàn)過程,最后則對全文進行總結(jié)。
1? 微服務(wù)架構(gòu)概述及工作原理
微服務(wù)架構(gòu)是一種將單一應(yīng)用拆分為多個子服務(wù)的系統(tǒng)服務(wù)架構(gòu),采用輕量通信機制,進行服務(wù)之間的相互通信、協(xié)調(diào)與配合,每個服務(wù)運行在自己的進程中,圍繞具體業(yè)務(wù)構(gòu)建,并且能夠被獨立地部署到生產(chǎn)測試環(huán)境中[2]。由于各個服務(wù)既相互獨立又相互協(xié)調(diào)配合,因此微服務(wù)之間高內(nèi)聚低耦合的特點使得每個服務(wù)僅需專注于完成當(dāng)前任務(wù)。在所有情況下,每個服務(wù)只代表著一個小的業(yè)務(wù)能力,可通過全自動部署機制獨立部署[3]。
微服務(wù)架構(gòu)工作原理采用分散治理,將整個系統(tǒng)根據(jù)業(yè)務(wù)劃分成多個子系統(tǒng)服務(wù);將多個應(yīng)用通過負載均衡部署于子系統(tǒng);將子系統(tǒng)服務(wù)注冊到Eureka,通過一定的策略實現(xiàn)負載均衡[4];客戶端都通過API網(wǎng)關(guān)(Zuul)訪問后臺服務(wù),通過路由配置來實現(xiàn)轉(zhuǎn)發(fā)請求;服務(wù)與服務(wù)之間可以相互訪問及數(shù)據(jù)共享;Hystrix負責(zé)處理調(diào)用服務(wù)超時熔斷問題,為服務(wù)提供容錯保護,當(dāng)服務(wù)調(diào)用超時或出現(xiàn)錯誤時,可以及時處理,避免整個系統(tǒng)癱瘓[5]。
2? 微服務(wù)架構(gòu)與單體式架構(gòu)區(qū)別
由圖1可以看出,單體式架構(gòu)被應(yīng)用、開發(fā)、部署于一個項目中,將所有的功能打包成war包,部署在一個JavaEE容器里,隨著系統(tǒng)需求不斷變更等問題,會逐漸形成技術(shù)債務(wù),隨著時間的推移,技術(shù)債務(wù)將越積越多[6,7];隨著代碼的增多,構(gòu)建和部署的時間也會增加,且每次功能的變更都需要重新部署整個應(yīng)用;系統(tǒng)功能模塊的增加及邊界模糊等問題會使得系統(tǒng)復(fù)雜性更高,使得系統(tǒng)難以維護;且單體式應(yīng)用可擴展性受限,其作為一個整體,無法按照具體業(yè)務(wù)模塊的需要進行伸縮[8,9]。
與單體式架構(gòu)不同的是,微服務(wù)架構(gòu)僅關(guān)注特定的業(yè)務(wù),業(yè)務(wù)功能清晰。如圖2所示,將整個應(yīng)用拆分為若干個微服務(wù),對各個服務(wù)進行獨立部署,有利于項目整體的開發(fā)和維護[10];微服務(wù)架構(gòu)相對單體式架構(gòu)更容易部署,需要對某個微服務(wù)進行修改時,只需要重新部署這個服務(wù)即可,不需要重啟整個應(yīng)用,方便開發(fā)人員測試部署;且微服務(wù)架構(gòu)可根據(jù)業(yè)務(wù)模塊需要實現(xiàn)伸縮,可擴展性強于單體式應(yīng)用[11-13]。
3? 微服務(wù)架構(gòu)基礎(chǔ)框架與實現(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容錯保護,開發(fā)部署簡單,通過加依賴和注解,就能運行[14-16]。
Spring Cloud從Spring發(fā)展而來,與Dubbo相比,Spring Cloud對微服務(wù)環(huán)境的支持最為完整,適用于各種開發(fā)環(huán)境,且整合了大量輕量級組件,組件豐富,功能齊全,經(jīng)過大量兼容性測試證明其擁有更好的穩(wěn)定性[17]。
Spring Cloud包含幾個核心組件。Eureka作為Spring Cloud體系中最核心的組件之一,是微服務(wù)治理的核心,通過服務(wù)注冊與發(fā)現(xiàn)實現(xiàn)服務(wù)治理,Eureka提供了完整的Service Registry和Service Discovery實現(xiàn);Spring Cloud Config作為Spring Cloud體系中配置管理中心,為微服務(wù)提供分布式配置管理方案,將Config配置信息存于Server,Client通過接口獲取數(shù)據(jù),并初始化應(yīng)用;Spring Security OAuth2作為Spring Cloud體系中的授權(quán)認證中心,使客戶端只能登錄授權(quán)層,以此將用戶和客戶端分離,由于所有的外部請求都統(tǒng)一經(jīng)過Zuul網(wǎng)關(guān),因此OAuth2認證添加在Zuul這一層上,而每個微服務(wù)之間的調(diào)用則被認為是項目內(nèi)部模塊之間的調(diào)用,不需要進行OAuth2授權(quán)認證;Zuul網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,客戶端的請求需先經(jīng)過網(wǎng)關(guān),通過路由配置實現(xiàn)請求轉(zhuǎn)發(fā),網(wǎng)關(guān)是系統(tǒng)對外部請求的唯一入口,處理客戶端請求服務(wù)端的轉(zhuǎn)發(fā)等請求,通過一定的策略實現(xiàn)負載均衡[18、19]。Spring Cloud架構(gòu)搭建的環(huán)境運行流程如圖3所示,首先啟動Eureka注冊中心,將各服務(wù)全部注冊到Eureka;啟動Config配置中心,將配置信息從Git中下載下來,獲取到配置信息;啟動OAuth2授權(quán)服務(wù),對外部請求進行統(tǒng)一授權(quán)[20];啟動網(wǎng)關(guān),各服務(wù)經(jīng)由Ribbon進行負載均衡后,分發(fā)到具體業(yè)務(wù)服務(wù);啟動各業(yè)務(wù)具體服務(wù),進行各業(yè)務(wù)邏輯的實現(xiàn)[21]。
4? 結(jié)? 論
通過對微服務(wù)架構(gòu)的工作原理及運行流程進行分析研究可以發(fā)現(xiàn),微服務(wù)不只是一種新的技術(shù),更是一種整體架構(gòu)思想,微服務(wù)架構(gòu)一般適合用于在未來具有擴展性并且有著較大用戶增量的業(yè)務(wù)開發(fā)上,能夠有效地解決快速迭代、高并發(fā)等實質(zhì)性問題[22]。在單體式應(yīng)用到分布式應(yīng)用的轉(zhuǎn)變過程中,微服務(wù)架構(gòu)的出現(xiàn)解決了獨立快速部署、可維護等系統(tǒng)性能問題,但微服務(wù)架構(gòu)運行慢、對系統(tǒng)消耗大仍然是微服務(wù)發(fā)展中存在的問題,隨著技術(shù)的進步,微服務(wù)架構(gòu)的使用會更加成熟。因此,微服務(wù)架構(gòu)值得人們期待。
參考文獻:
[1] 田浩.基于SOA的高并發(fā)與高可用網(wǎng)站開發(fā)框架設(shè)計與實現(xiàn) [D].呼和浩特:內(nèi)蒙古大學(xué),2017.
[2] 董昭.電信運營商單體架構(gòu)到微服務(wù)架構(gòu)轉(zhuǎn)型設(shè)計思路 [J].通信世界,2017(25):56-57.
[3] 王紀(jì)軍,張斌,顧永生,等.云環(huán)境中Web應(yīng)用的微服務(wù)架構(gòu)評估 [J].計算機系統(tǒng)應(yīng)用,2017,26(5):9-15.
[4] 王方旭.基于Spring Cloud實現(xiàn)業(yè)務(wù)系統(tǒng)微服務(wù)化的設(shè)計與實現(xiàn) [J].電子技術(shù)與軟件工程,2018(8):60-61.
[5] 李建偉.移動信息環(huán)境中參考咨詢服務(wù)應(yīng)用開發(fā)實踐 [J].現(xiàn)代情報,2014,34(2):90-93.
[6] 張云潔,張璇,丁浩,等.需求變更技術(shù)債務(wù)研究 [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é)報,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è)計與開發(fā) [J].中國科技信息,2019(10):91-92.
[12] 方圓,鄭衛(wèi)勝.一種.Net框架下微服務(wù)框架設(shè)計研究 [J].通信電源技術(shù),2019,36(4):87-88.
[13] 楊強,張鈞鳴.基于微服務(wù)架構(gòu)的大數(shù)據(jù)應(yīng)用開發(fā)創(chuàng)新實踐 [J].電力大數(shù)據(jù),2019,22(3):71-76.
[14] 邱生姬.淺談JAVA微服務(wù)SpringCloud開發(fā) [J].電腦迷,2017(17):50.
[15] 周永圣,侯峰裕,孫雯,等.基于SpringCloud微服務(wù)架構(gòu)的進銷存管理系統(tǒng)的設(shè)計與實現(xiàn) [J].工業(yè)控制計算機,2018,31(11):129-130+133.
[16] 隋永鑫.微服務(wù)架構(gòu)在電動汽車智能充電服務(wù)與運營平臺系統(tǒng)中的應(yīng)用 [J].微型機與應(yīng)用,2017,36(24):102-104+108.
[17] 馬雄.基于微服務(wù)架構(gòu)的系統(tǒng)設(shè)計與開發(fā) [D].南京:南京郵電大學(xué),2017.
[18] 毛煜蘇.基于Spring Cloud微服務(wù)架構(gòu)的評論系統(tǒng)的設(shè)計與實現(xiàn) [D].武漢:華中科技大學(xué),2018.
[19] 郭致遠,魏銀珍.基于Spring Cloud服務(wù)調(diào)用的設(shè)計與應(yīng)用 [J].信息技術(shù)與網(wǎng)絡(luò)安全,2019,38(2):87-91.
[20] 房立鎮(zhèn),王信堂.微服務(wù)架構(gòu)下高校數(shù)據(jù)共享服務(wù)平臺的設(shè)計 [J].電子技術(shù)與軟件工程,2019(6):158.
[21] 王書玲,王小軍.基于微服務(wù)的移動學(xué)習(xí)平臺構(gòu)建研究 [J].中國成人教育,2017(23):18-22.
[22] 何桐.微服務(wù)架構(gòu)應(yīng)用前景研究 [J].計算機產(chǎn)品與流通,2019(7):46.
作者簡介:鄭文靖(1994-),女,漢族,內(nèi)蒙古呼和浩特人,計算機碩士,研究方向:智能信息處理與并行計算;王婷(1994-),女,漢族,陜西渭南人,計算機碩士,研究方向:智能信息處理與并行計算。