邊濤 呂哲楠 張成喆 趙錕 張程 張弛 王玉楠
摘要:隨著信息化時(shí)代的發(fā)展,業(yè)務(wù)系統(tǒng)越發(fā)龐大復(fù)雜,系統(tǒng)開(kāi)發(fā)及維護(hù)面臨著巨大的挑戰(zhàn)。針對(duì)這一問(wèn)題,基于微服務(wù)架構(gòu)的統(tǒng)一應(yīng)用應(yīng)運(yùn)而生。微服務(wù)架構(gòu)有很多優(yōu)點(diǎn),但是也會(huì)帶來(lái)很多復(fù)雜性問(wèn)題,需要額外的代價(jià)來(lái)解決。從應(yīng)用架構(gòu)、支撐框架方面總結(jié)了一套關(guān)于微服務(wù)的具體實(shí)現(xiàn),并對(duì)如何通過(guò)架構(gòu)分解實(shí)現(xiàn)新型架構(gòu)進(jìn)行了說(shuō)明,最后通過(guò)對(duì)跨境電商的企業(yè)服務(wù)平臺(tái)的微服務(wù)架構(gòu)進(jìn)行實(shí)現(xiàn),達(dá)到了預(yù)期效果。
關(guān)鍵詞:微應(yīng)用;微服務(wù);跨境電商
中圖分類(lèi)號(hào):TP311 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)35-0142-03
Design and Implementation of Cross-border E-commerce Enterprise Public Service System Based on Micro-service Architecture
BIAN Tao1, LV Zhe-nan1, ZHANG Cheng-zhe1, ZHAO Kun1, ZHANG Cheng1, ZHANG Chi1, WANG Yu-nan2
(1.China electronic port data center Tianjin Branch, Tianjin 300012, China; 2. Tianjin Electronic Time Tech Center, Tianjin 300012, China)
Abstract: With the development of information age, business systems are becoming more and more complex, and the development and maintenance of the systems are facing great challenges. In order to solve this problem, the application based on micro-service architecture has emerged. Microservice architecture has many advantages, but it also brings many complexity problems, which need to be solved at extra cost. This paper summarizes a specific implementation of micro-service from the aspects of application architecture and supporting framework, and explains how to realize the new architecture through architecture decomposition. Finally, it achieves the expected effect by implementing the micro-service architecture of the enterprise service platform of cross-border e-commerce.
Key words: micro-application; micro-service; cross-border e-commerce platform
微服務(wù)這一概念是由美國(guó)作者M(jìn)artin Fowler于2014年最早提出,微服務(wù)架構(gòu)(Micro Service Architecture)是指一種由多服務(wù)協(xié)同組成的應(yīng)用模式,所有服務(wù)都獨(dú)立部署在不同進(jìn)程內(nèi),各個(gè)服務(wù)都有自己清晰的界限,服務(wù)之間通過(guò)如HTTP、REST協(xié)議進(jìn)行通信[1],可以靈活使用多種不同編程技術(shù)和數(shù)據(jù)存儲(chǔ)技術(shù)構(gòu)建多項(xiàng)服務(wù)。
微服務(wù)架構(gòu)具有健壯、容錯(cuò)性好、耦合度低、獨(dú)立部署與靈活擴(kuò)展等優(yōu)點(diǎn),但是微服務(wù)架構(gòu)也會(huì)帶來(lái)諸多復(fù)雜性問(wèn)題。首先就是微服務(wù)架構(gòu)的設(shè)計(jì),按照具體的業(yè)務(wù)邏輯和應(yīng)用場(chǎng)景來(lái)組建微服務(wù)架構(gòu)的應(yīng)用組成部分,以及各組成部分之間要建立相互通信機(jī)制。其次就是要考慮采用新的技術(shù)和框架來(lái)支撐和保障新的服務(wù)架構(gòu),實(shí)施靈活的部署方式和自動(dòng)路由規(guī)劃。最后業(yè)務(wù)應(yīng)用被拆分為若干個(gè)服務(wù)后,也需要一個(gè)對(duì)業(yè)務(wù)和服務(wù)進(jìn)行整體性能監(jiān)控的工具,保障架構(gòu)的穩(wěn)定性和高可用性。本文在對(duì)跨境電商的企業(yè)服務(wù)平臺(tái)的具體實(shí)現(xiàn)中,從應(yīng)用架構(gòu)、關(guān)鍵技術(shù)以及業(yè)務(wù)領(lǐng)域方面對(duì)平臺(tái)的微服務(wù)架構(gòu)如何實(shí)現(xiàn)進(jìn)行了說(shuō)明和實(shí)踐,以便有需要使用微服務(wù)架構(gòu)的技術(shù)人員參考。
1 單體應(yīng)用
在以前的系統(tǒng)開(kāi)發(fā)中,大多采用所謂單體應(yīng)用,就是我們傳統(tǒng)意義的、單個(gè)應(yīng)用程序的應(yīng)用。傳統(tǒng)意義的單體應(yīng)用一般由若干個(gè)功能模塊組成,每個(gè)功能模塊基本都分為用戶(hù)訪(fǎng)問(wèn)界面(UI)、業(yè)務(wù)邏輯和數(shù)據(jù)交互三個(gè)部分,所有的功能模塊作為一個(gè)獨(dú)立的單元安裝在中間件上運(yùn)行[1],所有應(yīng)用都對(duì)同一個(gè)數(shù)據(jù)庫(kù)進(jìn)行訪(fǎng)問(wèn)。單體應(yīng)用的結(jié)構(gòu)見(jiàn)圖 1。單體應(yīng)用一開(kāi)始技術(shù)難度小、成本低,可以快速支撐發(fā)展,隨著應(yīng)用規(guī)模不斷擴(kuò)大,帶來(lái)的成本也日益提高,相應(yīng)的單體應(yīng)用也越來(lái)越復(fù)雜,出現(xiàn)占用資源多、不易擴(kuò)展等一系列問(wèn)題。為了解決這些問(wèn)題,微服務(wù)架構(gòu)應(yīng)運(yùn)而生,它兼具靈活、快捷、耦合度低、獨(dú)立部署、容易擴(kuò)展等優(yōu)點(diǎn),正成為更多程序開(kāi)發(fā)者的選擇,其應(yīng)用范圍越來(lái)越廣泛,是解決復(fù)雜業(yè)務(wù)環(huán)境的有力工具。
2 微服務(wù)架構(gòu)介紹
微服務(wù)描述了一種將軟件應(yīng)用程序設(shè)計(jì)為可獨(dú)立部署的服務(wù)套件的特殊方法,微服務(wù)架構(gòu)實(shí)質(zhì)上是一種屬于分布式的系統(tǒng)解決方案,需要包括服務(wù)注冊(cè)與發(fā)現(xiàn)、服務(wù)間通信、服務(wù)部署、負(fù)載均衡、API 網(wǎng)關(guān)、服務(wù)容錯(cuò)機(jī)制和性能監(jiān)控等技術(shù)來(lái)實(shí)現(xiàn)。如圖 2 所示。
微服務(wù)架構(gòu)有很多重要的優(yōu)點(diǎn)。首先,它將單體應(yīng)用按照業(yè)務(wù)邊界拆分為多個(gè)獨(dú)立的服務(wù),解決了業(yè)務(wù)復(fù)雜性問(wèn)題,實(shí)現(xiàn)了業(yè)務(wù)解耦。每個(gè)服務(wù)邊界清晰,同時(shí)單個(gè)服務(wù)的代碼量更少、更加易維護(hù)。其次實(shí)現(xiàn)了技術(shù)異構(gòu),可以針對(duì)不同的業(yè)務(wù)采用不同的技術(shù)框架,有針對(duì)性地解決性能瓶頸。再者,可以實(shí)現(xiàn)獨(dú)立維護(hù),獨(dú)立部署,獨(dú)立擴(kuò)展,有效提高系統(tǒng)開(kāi)發(fā)、運(yùn)維效率。最后可以達(dá)到有效隔離故障的目的,當(dāng)部分服務(wù)出現(xiàn)故障之后,可以將故障有效隔離,而不影響其他服務(wù)的穩(wěn)定性,以此來(lái)保障系統(tǒng)整體穩(wěn)定性[2]。
3 微服務(wù)架構(gòu)關(guān)鍵技術(shù)
3.1 服務(wù)發(fā)現(xiàn)與注冊(cè)
微服務(wù)框架中的服務(wù)是一種動(dòng)態(tài),可隨時(shí)復(fù)制、銷(xiāo)毀、重定位的模式,所以有必要提供一種注冊(cè)和發(fā)現(xiàn)的動(dòng)態(tài)機(jī)制來(lái)實(shí)現(xiàn)微服務(wù)架構(gòu)理念。服務(wù)注冊(cè)中心負(fù)責(zé)管理服務(wù)的訪(fǎng)問(wèn)地址及路由信息等,同時(shí)實(shí)現(xiàn)服務(wù)注冊(cè)、發(fā)布、狀態(tài)檢查和排除故障等功能。目前較為典型的注冊(cè)中心有Zookeeper、Netflix Eureka、Consul。
3.2 負(fù)載均衡
微服務(wù)架構(gòu)中的服務(wù)數(shù)量在具體運(yùn)行中是動(dòng)態(tài)變化的,與之對(duì)應(yīng)的系統(tǒng)服務(wù)實(shí)例數(shù)量也隨之增減,為了不斷滿(mǎn)足系統(tǒng)新的性能需求,開(kāi)發(fā)者們?cè)O(shè)計(jì)了多種負(fù)載均衡算法,將服務(wù)請(qǐng)求按需分配至多個(gè)服務(wù)實(shí)例進(jìn)行快速響應(yīng)。例如以循環(huán)隊(duì)列方式輪流響應(yīng)服務(wù)的輪詢(xún)法,按照不同服務(wù)請(qǐng)求進(jìn)行隨機(jī)分配的隨機(jī)算法,以及按照鍵-值(key-value)進(jìn)行計(jì)算而分派的哈希算法等,較典型的負(fù)載均衡器有Nginx、LVS、HAProxy等[3]。
3.3 服務(wù)網(wǎng)關(guān)
服務(wù)網(wǎng)關(guān)是外部服務(wù)請(qǐng)求的統(tǒng)一入口,負(fù)責(zé)提供身份認(rèn)證管理、路由管理、服務(wù)組合、流量控制、負(fù)載均衡等功能。當(dāng)有用戶(hù)提出請(qǐng)求服務(wù)時(shí),服務(wù)網(wǎng)關(guān)先對(duì)請(qǐng)求進(jìn)行身份權(quán)限驗(yàn)證、API監(jiān)控以及流量控制等系列操作,然后對(duì)用戶(hù)請(qǐng)求進(jìn)行分派、具體轉(zhuǎn)發(fā)和調(diào)用等操作,也可提供服務(wù)發(fā)現(xiàn)和負(fù)載均衡等功能。Netflix Zuul是目前使用較典型的服務(wù)網(wǎng)關(guān)組件[4]。
3.4 服務(wù)通信
微服務(wù)架構(gòu)里由于因業(yè)務(wù)拆分出多個(gè)服務(wù),因此如何保障多個(gè)服務(wù)之間的準(zhǔn)確高效通信顯得尤為重要,目前有三種部署方式:一是多個(gè)服務(wù)部署在單個(gè)物理機(jī)或虛擬機(jī)中,這種方式有效利用資源,但可能互相影響;二是單個(gè)服務(wù)部署在單獨(dú)虛機(jī)中,獨(dú)立性好但浪費(fèi)資源;三是單個(gè)服務(wù)運(yùn)行在單獨(dú)容器Docker中,既部署靈活也不相互影響。
服務(wù)間的通信基本都是通過(guò)網(wǎng)絡(luò)傳輸來(lái)實(shí)現(xiàn)的,具體模式可以分為同步和異步兩種,同步通信就是申請(qǐng)端發(fā)出通信請(qǐng)求并等待響應(yīng),采用REST協(xié)議較多,實(shí)現(xiàn)簡(jiǎn)單,通用性好;異步通信是指發(fā)出請(qǐng)求后不需要等待響應(yīng),一般采用消息隊(duì)列方式實(shí)現(xiàn),更適合應(yīng)用場(chǎng)景較復(fù)雜的情況,但也增加了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。
4 應(yīng)用案例
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,電子商務(wù)應(yīng)運(yùn)而生,跨境電子商務(wù)的出現(xiàn)與發(fā)展,顛覆了傳統(tǒng)的貿(mào)易方式。目前跨境電子商務(wù)模式已經(jīng)逐步建立,但是企業(yè)申報(bào)效率不高,企業(yè)通關(guān)流程比較繁瑣,使得電商企業(yè)的成本增加,嚴(yán)重制約了跨境電子商務(wù)的發(fā)展。
本文設(shè)計(jì)的跨境電商企業(yè)公共服務(wù)平臺(tái)的主要功能是跨境電商相關(guān)企業(yè)通過(guò)互聯(lián)網(wǎng)訪(fǎng)問(wèn)該平臺(tái),完成跨境數(shù)據(jù)傳輸通道申請(qǐng)、跨境業(yè)務(wù)各種單據(jù)的協(xié)同匯總判定、跨境數(shù)據(jù)驗(yàn)證,以及調(diào)取以往跨境商品備案的相同或相近商品等操作,然后需要申報(bào)的單據(jù)申報(bào)至跨境電子商務(wù)公共服務(wù)平臺(tái),進(jìn)行相關(guān)審批后反饋給企業(yè)。平臺(tái)業(yè)務(wù)流程如圖3所示。
在對(duì)平臺(tái)進(jìn)行架構(gòu)設(shè)計(jì)的時(shí)候,基于微服務(wù)的思想對(duì)平臺(tái)進(jìn)行了架構(gòu)分解?;谖⒎?wù)的跨境電商企業(yè)公共服務(wù)平臺(tái)架構(gòu)按照其本身具有的業(yè)務(wù)、功能、技術(shù)和公共四個(gè)維度進(jìn)行架構(gòu)分解。業(yè)務(wù)維度分解將業(yè)務(wù)邏輯應(yīng)用分解為跨境數(shù)據(jù)傳輸通道申請(qǐng)、跨境業(yè)務(wù)單據(jù)協(xié)同、跨境數(shù)據(jù)驗(yàn)證服務(wù)、跨境商品共享中心等四個(gè)領(lǐng)域。功能維度分解將業(yè)務(wù)功能分解為若干個(gè)子模塊,包括注冊(cè)模塊、事前備案、訂單管理、運(yùn)單管理、清單管理、退貨管理、業(yè)務(wù)數(shù)據(jù)查詢(xún)、統(tǒng)計(jì)分析、幫助中心等。技術(shù)維度分解將各個(gè)主要子模塊拆分為前端具體用戶(hù)應(yīng)用、后臺(tái)多個(gè)微服務(wù)以及若干子數(shù)據(jù)庫(kù)。平臺(tái)公共維度分解為用戶(hù)管理、系統(tǒng)管理、參數(shù)管理、日志管理、數(shù)據(jù)交換等。
平臺(tái)采用當(dāng)前較為成熟的Spring ?Boot作為微服務(wù)實(shí)現(xiàn)框架[5],Spring Cloud Config為配置中心,使用Spring Cloud Gateway作為接口網(wǎng)關(guān),內(nèi)部的微服務(wù)之間通過(guò)Rest形式的 API接口通訊,基于Redis的數(shù)據(jù)緩存結(jié)構(gòu),采用Nagios和 ELK作為性能監(jiān)控與日志工具。平臺(tái)的微服務(wù)結(jié)構(gòu)圖如圖4所示。
通過(guò)對(duì)跨境電商企業(yè)公共服務(wù)平臺(tái)的微服務(wù)架構(gòu)的設(shè)計(jì)和實(shí)現(xiàn),按照上述四個(gè)維度的架構(gòu)分解,將復(fù)雜的業(yè)務(wù)應(yīng)用和大數(shù)據(jù)量的訪(fǎng)問(wèn)拆分成若干個(gè)微服務(wù)和子數(shù)據(jù)庫(kù),并運(yùn)用了成熟的微服務(wù)關(guān)鍵技術(shù)組件,滿(mǎn)足了高可用、低耦合、易擴(kuò)展的目的,同時(shí)應(yīng)用了API組合復(fù)用實(shí)現(xiàn)不同電商企業(yè)的自定義接口,有利于跨境電商的業(yè)務(wù)拓展。
5 結(jié)束語(yǔ)
本文對(duì)單體架構(gòu)和微服務(wù)架構(gòu)的應(yīng)用模式和特點(diǎn)進(jìn)行了介紹,并對(duì)微服務(wù)所需的關(guān)鍵技術(shù)進(jìn)行了說(shuō)明,結(jié)合在跨境電商企業(yè)服務(wù)平臺(tái)的設(shè)計(jì)中得到了具體體現(xiàn)和實(shí)踐,對(duì)平臺(tái)進(jìn)行了多維度的分解,通過(guò)微服務(wù)開(kāi)發(fā)框架,開(kāi)發(fā)人員能夠快速構(gòu)建多個(gè)微服務(wù)接口,并快捷部署到生產(chǎn)環(huán)境,取得了較好的效果。
參考文獻(xiàn):
[1] 劉丹,朱洪斌,王宇飛,等.一種微服務(wù)架構(gòu)最佳實(shí)踐[C]//2017電力行業(yè)信息化年會(huì)論文集.南寧,2017:368-372.
[2] 徐天橋.微服務(wù)對(duì)傳統(tǒng)應(yīng)用的改造及設(shè)計(jì)[J].電子制作,2020(8):38-39,63.
[3] 辛園園,鈕俊,謝志軍,等.微服務(wù)體系結(jié)構(gòu)實(shí)現(xiàn)框架綜述[J].計(jì)算機(jī)工程與應(yīng)用,2018,54(19):10-17.
[4] 劉增才,張福錚,劉明珠,等.基于高可用微服務(wù)架構(gòu)的數(shù)字黨建平臺(tái)研究及應(yīng)用[J].信息技術(shù)與信息化,2019(11):184-188.
[5] 翟永超.Spring Cloud 微服務(wù)實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2017.
【通聯(lián)編輯:謝媛媛】