邊濤 呂哲楠 張成喆 趙錕 張程 張弛 王玉楠
摘要:隨著信息化時代的發(fā)展,業(yè)務系統(tǒng)越發(fā)龐大復雜,系統(tǒng)開發(fā)及維護面臨著巨大的挑戰(zhàn)。針對這一問題,基于微服務架構的統(tǒng)一應用應運而生。微服務架構有很多優(yōu)點,但是也會帶來很多復雜性問題,需要額外的代價來解決。從應用架構、支撐框架方面總結了一套關于微服務的具體實現(xiàn),并對如何通過架構分解實現(xiàn)新型架構進行了說明,最后通過對跨境電商的企業(yè)服務平臺的微服務架構進行實現(xiàn),達到了預期效果。
關鍵詞:微應用;微服務;跨境電商
中圖分類號:TP311 ? ? ?文獻標識碼:A
文章編號: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
微服務這一概念是由美國作者Martin Fowler于2014年最早提出,微服務架構(Micro Service Architecture)是指一種由多服務協(xié)同組成的應用模式,所有服務都獨立部署在不同進程內,各個服務都有自己清晰的界限,服務之間通過如HTTP、REST協(xié)議進行通信[1],可以靈活使用多種不同編程技術和數(shù)據(jù)存儲技術構建多項服務。
微服務架構具有健壯、容錯性好、耦合度低、獨立部署與靈活擴展等優(yōu)點,但是微服務架構也會帶來諸多復雜性問題。首先就是微服務架構的設計,按照具體的業(yè)務邏輯和應用場景來組建微服務架構的應用組成部分,以及各組成部分之間要建立相互通信機制。其次就是要考慮采用新的技術和框架來支撐和保障新的服務架構,實施靈活的部署方式和自動路由規(guī)劃。最后業(yè)務應用被拆分為若干個服務后,也需要一個對業(yè)務和服務進行整體性能監(jiān)控的工具,保障架構的穩(wěn)定性和高可用性。本文在對跨境電商的企業(yè)服務平臺的具體實現(xiàn)中,從應用架構、關鍵技術以及業(yè)務領域方面對平臺的微服務架構如何實現(xiàn)進行了說明和實踐,以便有需要使用微服務架構的技術人員參考。
1 單體應用
在以前的系統(tǒng)開發(fā)中,大多采用所謂單體應用,就是我們傳統(tǒng)意義的、單個應用程序的應用。傳統(tǒng)意義的單體應用一般由若干個功能模塊組成,每個功能模塊基本都分為用戶訪問界面(UI)、業(yè)務邏輯和數(shù)據(jù)交互三個部分,所有的功能模塊作為一個獨立的單元安裝在中間件上運行[1],所有應用都對同一個數(shù)據(jù)庫進行訪問。單體應用的結構見圖 1。單體應用一開始技術難度小、成本低,可以快速支撐發(fā)展,隨著應用規(guī)模不斷擴大,帶來的成本也日益提高,相應的單體應用也越來越復雜,出現(xiàn)占用資源多、不易擴展等一系列問題。為了解決這些問題,微服務架構應運而生,它兼具靈活、快捷、耦合度低、獨立部署、容易擴展等優(yōu)點,正成為更多程序開發(fā)者的選擇,其應用范圍越來越廣泛,是解決復雜業(yè)務環(huán)境的有力工具。
2 微服務架構介紹
微服務描述了一種將軟件應用程序設計為可獨立部署的服務套件的特殊方法,微服務架構實質上是一種屬于分布式的系統(tǒng)解決方案,需要包括服務注冊與發(fā)現(xiàn)、服務間通信、服務部署、負載均衡、API 網(wǎng)關、服務容錯機制和性能監(jiān)控等技術來實現(xiàn)。如圖 2 所示。
微服務架構有很多重要的優(yōu)點。首先,它將單體應用按照業(yè)務邊界拆分為多個獨立的服務,解決了業(yè)務復雜性問題,實現(xiàn)了業(yè)務解耦。每個服務邊界清晰,同時單個服務的代碼量更少、更加易維護。其次實現(xiàn)了技術異構,可以針對不同的業(yè)務采用不同的技術框架,有針對性地解決性能瓶頸。再者,可以實現(xiàn)獨立維護,獨立部署,獨立擴展,有效提高系統(tǒng)開發(fā)、運維效率。最后可以達到有效隔離故障的目的,當部分服務出現(xiàn)故障之后,可以將故障有效隔離,而不影響其他服務的穩(wěn)定性,以此來保障系統(tǒng)整體穩(wěn)定性[2]。
3 微服務架構關鍵技術
3.1 服務發(fā)現(xiàn)與注冊
微服務框架中的服務是一種動態(tài),可隨時復制、銷毀、重定位的模式,所以有必要提供一種注冊和發(fā)現(xiàn)的動態(tài)機制來實現(xiàn)微服務架構理念。服務注冊中心負責管理服務的訪問地址及路由信息等,同時實現(xiàn)服務注冊、發(fā)布、狀態(tài)檢查和排除故障等功能。目前較為典型的注冊中心有Zookeeper、Netflix Eureka、Consul。
3.2 負載均衡
微服務架構中的服務數(shù)量在具體運行中是動態(tài)變化的,與之對應的系統(tǒng)服務實例數(shù)量也隨之增減,為了不斷滿足系統(tǒng)新的性能需求,開發(fā)者們設計了多種負載均衡算法,將服務請求按需分配至多個服務實例進行快速響應。例如以循環(huán)隊列方式輪流響應服務的輪詢法,按照不同服務請求進行隨機分配的隨機算法,以及按照鍵-值(key-value)進行計算而分派的哈希算法等,較典型的負載均衡器有Nginx、LVS、HAProxy等[3]。
3.3 服務網(wǎng)關
服務網(wǎng)關是外部服務請求的統(tǒng)一入口,負責提供身份認證管理、路由管理、服務組合、流量控制、負載均衡等功能。當有用戶提出請求服務時,服務網(wǎng)關先對請求進行身份權限驗證、API監(jiān)控以及流量控制等系列操作,然后對用戶請求進行分派、具體轉發(fā)和調用等操作,也可提供服務發(fā)現(xiàn)和負載均衡等功能。Netflix Zuul是目前使用較典型的服務網(wǎng)關組件[4]。
3.4 服務通信
微服務架構里由于因業(yè)務拆分出多個服務,因此如何保障多個服務之間的準確高效通信顯得尤為重要,目前有三種部署方式:一是多個服務部署在單個物理機或虛擬機中,這種方式有效利用資源,但可能互相影響;二是單個服務部署在單獨虛機中,獨立性好但浪費資源;三是單個服務運行在單獨容器Docker中,既部署靈活也不相互影響。
服務間的通信基本都是通過網(wǎng)絡傳輸來實現(xiàn)的,具體模式可以分為同步和異步兩種,同步通信就是申請端發(fā)出通信請求并等待響應,采用REST協(xié)議較多,實現(xiàn)簡單,通用性好;異步通信是指發(fā)出請求后不需要等待響應,一般采用消息隊列方式實現(xiàn),更適合應用場景較復雜的情況,但也增加了系統(tǒng)實現(xiàn)的復雜度。
4 應用案例
隨著網(wǎng)絡技術的發(fā)展,電子商務應運而生,跨境電子商務的出現(xiàn)與發(fā)展,顛覆了傳統(tǒng)的貿易方式。目前跨境電子商務模式已經(jīng)逐步建立,但是企業(yè)申報效率不高,企業(yè)通關流程比較繁瑣,使得電商企業(yè)的成本增加,嚴重制約了跨境電子商務的發(fā)展。
本文設計的跨境電商企業(yè)公共服務平臺的主要功能是跨境電商相關企業(yè)通過互聯(lián)網(wǎng)訪問該平臺,完成跨境數(shù)據(jù)傳輸通道申請、跨境業(yè)務各種單據(jù)的協(xié)同匯總判定、跨境數(shù)據(jù)驗證,以及調取以往跨境商品備案的相同或相近商品等操作,然后需要申報的單據(jù)申報至跨境電子商務公共服務平臺,進行相關審批后反饋給企業(yè)。平臺業(yè)務流程如圖3所示。
在對平臺進行架構設計的時候,基于微服務的思想對平臺進行了架構分解?;谖⒎盏目缇畴娚唐髽I(yè)公共服務平臺架構按照其本身具有的業(yè)務、功能、技術和公共四個維度進行架構分解。業(yè)務維度分解將業(yè)務邏輯應用分解為跨境數(shù)據(jù)傳輸通道申請、跨境業(yè)務單據(jù)協(xié)同、跨境數(shù)據(jù)驗證服務、跨境商品共享中心等四個領域。功能維度分解將業(yè)務功能分解為若干個子模塊,包括注冊模塊、事前備案、訂單管理、運單管理、清單管理、退貨管理、業(yè)務數(shù)據(jù)查詢、統(tǒng)計分析、幫助中心等。技術維度分解將各個主要子模塊拆分為前端具體用戶應用、后臺多個微服務以及若干子數(shù)據(jù)庫。平臺公共維度分解為用戶管理、系統(tǒng)管理、參數(shù)管理、日志管理、數(shù)據(jù)交換等。
平臺采用當前較為成熟的Spring ?Boot作為微服務實現(xiàn)框架[5],Spring Cloud Config為配置中心,使用Spring Cloud Gateway作為接口網(wǎng)關,內部的微服務之間通過Rest形式的 API接口通訊,基于Redis的數(shù)據(jù)緩存結構,采用Nagios和 ELK作為性能監(jiān)控與日志工具。平臺的微服務結構圖如圖4所示。
通過對跨境電商企業(yè)公共服務平臺的微服務架構的設計和實現(xiàn),按照上述四個維度的架構分解,將復雜的業(yè)務應用和大數(shù)據(jù)量的訪問拆分成若干個微服務和子數(shù)據(jù)庫,并運用了成熟的微服務關鍵技術組件,滿足了高可用、低耦合、易擴展的目的,同時應用了API組合復用實現(xiàn)不同電商企業(yè)的自定義接口,有利于跨境電商的業(yè)務拓展。
5 結束語
本文對單體架構和微服務架構的應用模式和特點進行了介紹,并對微服務所需的關鍵技術進行了說明,結合在跨境電商企業(yè)服務平臺的設計中得到了具體體現(xiàn)和實踐,對平臺進行了多維度的分解,通過微服務開發(fā)框架,開發(fā)人員能夠快速構建多個微服務接口,并快捷部署到生產(chǎn)環(huán)境,取得了較好的效果。
參考文獻:
[1] 劉丹,朱洪斌,王宇飛,等.一種微服務架構最佳實踐[C]//2017電力行業(yè)信息化年會論文集.南寧,2017:368-372.
[2] 徐天橋.微服務對傳統(tǒng)應用的改造及設計[J].電子制作,2020(8):38-39,63.
[3] 辛園園,鈕俊,謝志軍,等.微服務體系結構實現(xiàn)框架綜述[J].計算機工程與應用,2018,54(19):10-17.
[4] 劉增才,張福錚,劉明珠,等.基于高可用微服務架構的數(shù)字黨建平臺研究及應用[J].信息技術與信息化,2019(11):184-188.
[5] 翟永超.Spring Cloud 微服務實戰(zhàn)[M].北京:電子工業(yè)出版社,2017.
【通聯(lián)編輯:謝媛媛】