郭玉芝 唐國城
摘 要:信息時(shí)代,各行各業(yè)都在向智能化、信息化轉(zhuǎn)型。在過去的幾年中,移動互聯(lián)網(wǎng)迅速發(fā)展,各大公司的規(guī)模持續(xù)擴(kuò)大,業(yè)務(wù)發(fā)展迅速。與此同時(shí),業(yè)務(wù)增多也帶來許多問題,許多業(yè)務(wù)需求或者功能需求高度相似,通化程度高,但是由于沒有專門的團(tuán)隊(duì)負(fù)責(zé)規(guī)劃和開發(fā),大量系統(tǒng)重復(fù)開發(fā)和建設(shè),導(dǎo)致復(fù)用性很低。本文探討了傳統(tǒng)微服務(wù)架構(gòu)的劣勢與解決方案,并分析了通過中臺思想將服務(wù)組件化,提高服務(wù)的可用性和復(fù)用性。
關(guān)鍵詞:Spring Cloud;微服務(wù);中臺戰(zhàn)略;分布式
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-5168(2019)26-0014-03
Analysis of Microservice Architecture
GUO Yuzhi TANG Guocheng
(Qingdao Institute of Technology,Qingdao Shandong 266300)
Abstract: In the information age, all walks of life are transforming into intelligence and information. In the past few years, the mobile Internet has developed rapidly, and the scale of major companies has continued to expand and business has developed rapidly. At the same time, the increase in business has brought many problems. Many business needs or functional requirements are highly similar, and the degree of generalization is high. However, because there is no dedicated team responsible for planning and development, a large number of systems are repeatedly developed and constructed, resulting in low reusability. This paper explored the disadvantages and solutions of the traditional micro-service architecture, and analyzed the componentization of services through the middle-class thinking to improve the usability and reusability of services.
Keywords: Spring Cloud;microservice;middle platform;distributed
早期,為了解決業(yè)務(wù)問題,人們只是一味提高傳統(tǒng)的縱向的、高度個(gè)性化的業(yè)務(wù)處理邏輯與基礎(chǔ)系統(tǒng)的耦合程度,但是沒有考慮后續(xù)系統(tǒng)規(guī)劃,在設(shè)計(jì)開發(fā)過程中,同一層次系統(tǒng)之間、上下游系統(tǒng)之間的交叉邏輯非常多,導(dǎo)致后續(xù)拓展系統(tǒng)無法復(fù)用和迭代。隨著企業(yè)業(yè)務(wù)場景的不斷豐富,單純的“前臺+后臺”模式已經(jīng)無法滿足不斷增長的業(yè)務(wù)需求,兩者速率匹配失衡的問題就逐步顯現(xiàn)出來。在日常業(yè)務(wù)驅(qū)動下,為了盡量保持后臺系統(tǒng)的穩(wěn)定性,同時(shí)響應(yīng)用戶持續(xù)不斷的需求,企業(yè)自然就會將大量業(yè)務(wù)邏輯直接寫入前臺系統(tǒng)中,重復(fù)開發(fā),致使前臺系統(tǒng)職責(zé)繁重,違反單一職責(zé)原則,形成了一個(gè)個(gè)煙囪式單體應(yīng)用,最終拖垮前臺系統(tǒng)的用戶響應(yīng)力。
針對實(shí)際業(yè)務(wù)中遇到的重復(fù)造輪子和煙囪式架構(gòu)問題,各大企業(yè)需要在系統(tǒng)開發(fā)中提高要求,將各個(gè)業(yè)務(wù)系統(tǒng)功能盡量抽離,促進(jìn)業(yè)務(wù)系統(tǒng)模塊獨(dú)立化、服務(wù)化和公共化。為達(dá)到服務(wù)的復(fù)用性,實(shí)現(xiàn)服務(wù)的組件化,企業(yè)會使用多個(gè)小服務(wù)組裝單個(gè)應(yīng)用系統(tǒng)。這種業(yè)務(wù)系統(tǒng)的服務(wù)化能夠有效地解決當(dāng)前企業(yè)面臨的一系列信息化難題。服務(wù)之間通過接口,采用輕量級通信的協(xié)調(diào)機(jī)制,以業(yè)務(wù)為中心,構(gòu)建以服務(wù)為單位的獨(dú)立的自動化運(yùn)行機(jī)制,實(shí)現(xiàn)集中式服務(wù)管理。將企業(yè)的業(yè)務(wù)系統(tǒng)按照職能、功能劃分為三個(gè)層次,契合前、中、后臺的三個(gè)不同業(yè)務(wù)層次,不同的業(yè)務(wù)層次采用完全不同的策略,為技術(shù)落地提供了理論支撐。中臺天生就是為前臺服務(wù)的,其可以是技術(shù)中臺、業(yè)務(wù)中臺等,可以更好地服務(wù)前臺,做到領(lǐng)域創(chuàng)新,進(jìn)而更好地響應(yīng)用戶請求,提高用戶響應(yīng)力,提高企業(yè)自身的能力,以達(dá)到與用戶需求的持續(xù)對接。
1 傳統(tǒng)微服務(wù)架構(gòu)的劣勢及解決方案
1.1 微服務(wù)邊界
在微服務(wù)實(shí)踐落地過程中,一大難點(diǎn)在于模塊之間界面的界定。在模塊的劃分過程中,服務(wù)設(shè)計(jì)容易出現(xiàn)過大或者過小的問題。微服務(wù)過大,會產(chǎn)生與單體應(yīng)用系統(tǒng)類似的不足;微服務(wù)過小,大量服務(wù)的管理會增加運(yùn)營的成本和難度。雖然服務(wù)是逐步被拆分出來的,但是隨著業(yè)務(wù)的演進(jìn),企業(yè)需要重新審視服務(wù)劃分是否合理。微服務(wù)邊界的重新定義一般可以通過如下兩種方式。
1.1.1 領(lǐng)域驅(qū)動劃分服務(wù)。它是指根據(jù)業(yè)務(wù)邏輯復(fù)雜度,而非數(shù)據(jù)量、并發(fā)量等相關(guān)復(fù)雜度劃分服務(wù)。該模式適合業(yè)務(wù)邏輯復(fù)雜度足夠高的場景。但領(lǐng)域驅(qū)動本身十分復(fù)雜,很多概念比較抽象,應(yīng)用范圍并不是特別廣泛,所以當(dāng)業(yè)務(wù)復(fù)雜度較低時(shí),可以選擇基于數(shù)據(jù)驅(qū)動劃分服務(wù),數(shù)據(jù)驅(qū)動更容易理解和上手。
1.1.2 基于數(shù)據(jù)驅(qū)動劃分服務(wù)。它是指通過自下而上的架構(gòu)設(shè)計(jì)方法,結(jié)合需求分析,確定整體數(shù)據(jù)結(jié)構(gòu),根據(jù)表之間的關(guān)系劃分服務(wù)。
1.2 分布式應(yīng)用的復(fù)雜性
當(dāng)若干系統(tǒng)都處于運(yùn)行狀態(tài)并且相互調(diào)用組成一套業(yè)務(wù)系統(tǒng)時(shí),此系統(tǒng)天然具有分布式屬性。與傳統(tǒng)的單體應(yīng)用架構(gòu)相比,分布式架構(gòu)提高了系統(tǒng)的吞吐能力。隨著業(yè)務(wù)量的逐漸增大,企業(yè)需要使用多臺機(jī)器,采用分布式架構(gòu),垂直或是水平地拆分業(yè)務(wù)來應(yīng)對這種大規(guī)模的應(yīng)用場景。同時(shí),分布式應(yīng)用可以增加系統(tǒng)的可用性,對于企業(yè)關(guān)鍵性業(yè)務(wù),系統(tǒng)需要滿足高可用性,而分布式架構(gòu)提高了系統(tǒng)的高可用性,系統(tǒng)的模塊化提高了模塊的重用度,同時(shí)提高了系統(tǒng)的拓展性以及開發(fā)和發(fā)布的速度。
復(fù)雜性是分布式架構(gòu)應(yīng)用相比單體式應(yīng)用的固有特性。架構(gòu)設(shè)計(jì)更加復(fù)雜,特別是分布式服務(wù),部署變得十分復(fù)雜。一個(gè)完整的業(yè)務(wù)系統(tǒng)需要部署多個(gè)服務(wù),并且隨著系統(tǒng)吞吐量的增大,響應(yīng)時(shí)間會變長,技術(shù)多樣化,服務(wù)變多,運(yùn)維的復(fù)雜度也會提高。分布式應(yīng)用測試和查錯(cuò)的復(fù)雜度增大,學(xué)習(xí)成本曲線也增大,各個(gè)微服務(wù)需要選擇合適的通信協(xié)議進(jìn)行消息傳遞,并完成進(jìn)程間的通信。如此一來,需要處理消息傳遞中速度過慢或者不可用等局部系統(tǒng)失效問題,企業(yè)必須采用一套完整的機(jī)制保證各個(gè)服務(wù)正常運(yùn)轉(zhuǎn)[1]。
1.3 分區(qū)數(shù)據(jù)庫架構(gòu)
在分布式系統(tǒng)應(yīng)用中,各個(gè)業(yè)務(wù)系統(tǒng)趨于服務(wù)化,與之對應(yīng)的就是每一個(gè)服務(wù)對應(yīng)某一個(gè)或者多個(gè)數(shù)據(jù)庫系統(tǒng),即分區(qū)數(shù)據(jù)庫架構(gòu)。業(yè)務(wù)更新需要考慮分布式數(shù)據(jù)庫的一致性,某一服務(wù)的數(shù)據(jù)操作可能會影響其他服務(wù)的數(shù)據(jù),此時(shí)需要考慮數(shù)據(jù)的一致性。當(dāng)服務(wù)的業(yè)務(wù)影響到非本服務(wù)對應(yīng)的數(shù)據(jù)時(shí),企業(yè)需要對不同服務(wù)所對應(yīng)的數(shù)據(jù)庫進(jìn)行相關(guān)操作,才能確保分布式數(shù)據(jù)庫系統(tǒng)中不同數(shù)據(jù)庫下的各種業(yè)務(wù)數(shù)據(jù)的關(guān)聯(lián)性保持一致。
根據(jù)分布式的CAP定理,分布式架構(gòu)中,系統(tǒng)一般從三方面彼此權(quán)衡和考慮:C(一致性)、A(可用性)和P(分區(qū)容錯(cuò)性)。但是,一般的分布式系統(tǒng)只能最多保證其中兩個(gè)。系統(tǒng)作為一個(gè)整體,企業(yè)不需要考慮全部,并且CAP理論說明了同時(shí)滿足三者是無法做到的,需要根據(jù)系列的應(yīng)用場景選擇AP或者CP,結(jié)合業(yè)務(wù)綜合考慮,為每個(gè)服務(wù)系統(tǒng)調(diào)用做不同的權(quán)衡,解決微服務(wù)架構(gòu)應(yīng)用中分布式應(yīng)用的數(shù)據(jù)一致性問題。
1.4 運(yùn)維、開發(fā)復(fù)雜度增加
一個(gè)應(yīng)用系統(tǒng)業(yè)務(wù)的實(shí)現(xiàn)需要多個(gè)業(yè)務(wù)服務(wù)子系統(tǒng)的支持,管理運(yùn)維多個(gè)子服務(wù)。整個(gè)應(yīng)用系統(tǒng)存在多個(gè)子服務(wù)系統(tǒng),那么這若干子系統(tǒng)都將有個(gè)性化的配置、部署、拓展和監(jiān)控方案?;谌萜骰夹g(shù),對服務(wù)進(jìn)行管理,通過使用PaaS服務(wù)實(shí)現(xiàn)服務(wù)部署自動化,使用集群化方案進(jìn)行統(tǒng)一化管理。
2 基于微服務(wù)的中臺架構(gòu)
一說到中臺,人們首先想到的應(yīng)該是最先在業(yè)界提出“大中臺,小前臺”戰(zhàn)略的阿里。阿里通過多年不懈的努力,在豐富業(yè)務(wù)場景和業(yè)務(wù)需求的不斷催化滋養(yǎng)下,將技術(shù)和業(yè)務(wù)能力轉(zhuǎn)化為一套綜合能力平臺,使整個(gè)業(yè)務(wù)系統(tǒng)具備了對前臺業(yè)務(wù)變化及創(chuàng)新的快速響應(yīng)能力。中臺戰(zhàn)略作為一座橋梁,不僅連接了靈活的前臺和穩(wěn)定的后臺,還打通了企業(yè)內(nèi)部各個(gè)部門墻的隔閡,豐富和完善了企業(yè)生態(tài)。中臺的核心是提高企業(yè)基礎(chǔ)服務(wù)能力,支持前臺小成本地快速創(chuàng)新迭代,提供可以供業(yè)務(wù)系統(tǒng)復(fù)用的公用能力[2-4]。
基于Spring Cloud全家桶提供的生態(tài)開發(fā),將整個(gè)應(yīng)用系統(tǒng)拆分并將功能服務(wù)化,最終導(dǎo)向服務(wù)的組件化,以組件化的方式將服務(wù)做到讓各業(yè)務(wù)前臺即取即用是中臺戰(zhàn)略的核心思想。傳統(tǒng)的系統(tǒng)間存在耦合性大,牽一發(fā)而動全身的弊端。而組件化設(shè)計(jì)基于微服務(wù)理念針對公共服務(wù)進(jìn)行抽象設(shè)計(jì),將抽象出的組件化服務(wù)提供給前臺業(yè)務(wù)端,中臺即取即用的服務(wù)是可復(fù)用的服務(wù),服務(wù)的高可復(fù)用性是從技術(shù)層級上針對公共服務(wù)的抽象設(shè)計(jì)能力的一大考驗(yàn),企業(yè)需要盡可能地將業(yè)務(wù)落地、滿足用戶需求。通過業(yè)務(wù)的開放和共享實(shí)現(xiàn)服務(wù)組件化、可共用的目標(biāo)是中臺建設(shè)的原則。
中臺最重要的作用是持續(xù)提高企業(yè)的用戶響應(yīng)力,無論是技術(shù)中臺、業(yè)務(wù)中臺還是組織中臺的建設(shè),從根本上來說,都是為了解決企業(yè)業(yè)務(wù)響應(yīng)力問題,解決創(chuàng)新驅(qū)動快速變化的前臺和穩(wěn)定可靠驅(qū)動變化周期相對較慢的后臺之間的矛盾,提供一個(gè)中間層來適配前臺與后臺的配速問題。在企業(yè)中,中臺的建設(shè)不能脫離企業(yè)業(yè)務(wù),要依據(jù)企業(yè)自身的業(yè)務(wù)落地,不能脫離要解決的現(xiàn)實(shí)業(yè)務(wù)問題。企業(yè)要先從業(yè)務(wù)架構(gòu)的梳理開始,從痛點(diǎn)出發(fā),基于自身業(yè)務(wù)切實(shí)分析,走自身特色的中臺建設(shè)道路。中臺戰(zhàn)略忠于敏捷精益端到端、全職能、目標(biāo)一致的方法論,以市場化產(chǎn)品的要求規(guī)劃技術(shù)團(tuán)隊(duì)的工作,激發(fā)團(tuán)隊(duì)的自驅(qū)性,提升對業(yè)務(wù)的敏感度,使其對工作結(jié)果真正負(fù)起責(zé)任,并獲得收益和認(rèn)可。
3 結(jié)語
從傳統(tǒng)的單例應(yīng)用開發(fā)模式,轉(zhuǎn)換到基于Spring Cloud的微服務(wù)中臺開發(fā)模式,企業(yè)需要摸索出一條適合自身發(fā)展以及轉(zhuǎn)型的道路,這不僅僅是技術(shù)框架的切換,更是開發(fā)思維的升級和高新技術(shù)公司戰(zhàn)略的升級。令人欣喜的是,Spring Cloud飛速發(fā)展,各大企業(yè)基于Spring Cloud開發(fā)出一些服務(wù)自身業(yè)務(wù)的組件,又將滿足自身業(yè)務(wù)場景的業(yè)務(wù)組件反饋給社區(qū),提高了其發(fā)展速度。
路漫漫其修遠(yuǎn)兮,好的架構(gòu)一定是適應(yīng)業(yè)務(wù)發(fā)展的架構(gòu),中臺戰(zhàn)略對于企業(yè)來說不是重點(diǎn)。平臺化甚至是中臺化只是企業(yè)提高業(yè)務(wù)響應(yīng)能力和創(chuàng)新能力的手段,中臺建設(shè)還是以驅(qū)動發(fā)展為主要目標(biāo),并不是以實(shí)現(xiàn)中臺化為企業(yè)終極目標(biāo)。
參考文獻(xiàn):
[1]洪華軍,吳建波,冷文浩.一種基于微服務(wù)架構(gòu)的業(yè)務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2018(1):149-154.
[2]趙然,朱小勇.微服務(wù)架構(gòu)評述[J].網(wǎng)絡(luò)新媒體技術(shù),2019(1):58-61.
[3]魏文超.基于微服務(wù)架構(gòu)的系統(tǒng)設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)產(chǎn)品與流通,2018(4):171.
[4]李貞昊.微服務(wù)架構(gòu)的發(fā)展與影響分析[J].信息系統(tǒng)工程,2017(1):154-155.