魏遠(yuǎn)鵬
廣州天源信息科技股份有限公司 廣東 廣州 510520
隨著社會(huì)的進(jìn)步與科技的發(fā)展,以多維服務(wù)構(gòu)架為主的統(tǒng)一性應(yīng)用平臺(tái)的開發(fā)與運(yùn)用已經(jīng)全面用于大型公司的管理和相關(guān)業(yè)務(wù)的拓展。本文基于筆者廣州天源信息科技股份有限公司多年工作經(jīng)驗(yàn)在微服務(wù)的開發(fā)框架思路下,全面優(yōu)化系統(tǒng)高度耦合框架模塊,逐步進(jìn)行微服務(wù)解耦應(yīng)用。根據(jù)測(cè)算,構(gòu)架能在投入有限前提下適應(yīng)輕量級(jí)嵌入式應(yīng)用容器并在負(fù)載均衡策略多維可靠運(yùn)用保障前提下全面進(jìn)行系統(tǒng)工作優(yōu)化。
大型企業(yè)由于業(yè)務(wù)下發(fā)和服務(wù)工程的拓展需要自我升級(jí)性強(qiáng)、維護(hù)性好、開發(fā)方式靈活的應(yīng)用系統(tǒng)構(gòu)架。所以避免重復(fù)率代碼和團(tuán)隊(duì)作業(yè)效率低下,需要進(jìn)行系統(tǒng)的輕量化構(gòu)架設(shè)計(jì)和多業(yè)務(wù)DIY拓展端口研發(fā)。運(yùn)用應(yīng)用平臺(tái)多角度解決生產(chǎn)問題。
某公司由于業(yè)務(wù)發(fā)展基于傳統(tǒng)國(guó)企架構(gòu)體系進(jìn)行搭建。管理機(jī)構(gòu)較為臃腫和龐大,相應(yīng)應(yīng)用系統(tǒng)業(yè)務(wù)模塊更是依照這種體系進(jìn)行搭建的,不具備深化改革前瞻性,而且企業(yè)的運(yùn)營(yíng)導(dǎo)致相應(yīng)業(yè)務(wù)數(shù)據(jù)大規(guī)模幾何式增長(zhǎng)。但是市場(chǎng)拓展有對(duì)相應(yīng)版塊業(yè)務(wù)用戶對(duì)功能性的要求卻日益增高。傳統(tǒng)背景下的單一應(yīng)用構(gòu)件無法滿足公司為了大規(guī)模集成式信息化發(fā)展。根據(jù)筆者前期調(diào)研,這種問題主要表現(xiàn)在:(1)大型國(guó)有企業(yè)業(yè)務(wù)系統(tǒng)單一呆板,在龐雜業(yè)務(wù)代碼下相應(yīng)交互性組件耦合程度較高。導(dǎo)致應(yīng)用層同種數(shù)據(jù)多次輸入和統(tǒng)計(jì)。系統(tǒng)維護(hù)性差,升級(jí)換代難;(2)業(yè)務(wù)模塊設(shè)計(jì)銜接性不強(qiáng)。且關(guān)聯(lián)度和應(yīng)用性不成權(quán)重一致性,無法進(jìn)行歸一化和迭代數(shù)據(jù)鏈?zhǔn)降恼{(diào)用與綜合數(shù)據(jù)分析。冗長(zhǎng)復(fù)雜的業(yè)務(wù)流程最終誘發(fā)系統(tǒng)響應(yīng)時(shí)間過長(zhǎng),權(quán)限調(diào)用難度大。新功能開發(fā)上線困難;(3)系統(tǒng)魯棒性差,一旦某一功能組件故障則會(huì)引起下游業(yè)務(wù)鏈斷線,導(dǎo)致相應(yīng)模塊不能正常使用;(4)功能拓展當(dāng)面,在傳統(tǒng)性單一部署前提下的系統(tǒng)設(shè)計(jì),單一的應(yīng)用模塊的部分偏I(xiàn)/O密集型、某些部分卻偏CPU密集型,在功能上存在矛盾性。而應(yīng)用抓取部署通常在一臺(tái)處理器上無法提供合理的硬件資源支持。更不能保證多用戶實(shí)時(shí)抓取數(shù)據(jù)和業(yè)務(wù)共享。
平臺(tái)按照“開發(fā)標(biāo)準(zhǔn)化、系統(tǒng)模塊化、操作工具化、運(yùn)行容器化,應(yīng)用服務(wù)化”的總體目標(biāo),把微服務(wù)開發(fā)框架、相應(yīng)的技術(shù)和工具整合到平臺(tái)中,平臺(tái)主要包括集成開發(fā)工具、基礎(chǔ)服務(wù)框架、應(yīng)用開發(fā)套件三大功能組件.總體功能架構(gòu)如圖1所示.
圖1 平臺(tái)功能架構(gòu)
建立在維護(hù)角度的集成性開發(fā)工具主要由友好可視化界面設(shè)計(jì)器、智能化模塊調(diào)用編碼器和相關(guān)輔助工具綜合組成。該種組合模式能在業(yè)務(wù)系統(tǒng)高效運(yùn)轉(zhuǎn)下進(jìn)行密切式的人機(jī)開發(fā)功能組件模式;例如在基礎(chǔ)服務(wù)框架中就涵蓋便于隱蔽底層操作細(xì)節(jié)的微服務(wù)式集群管理插件,在遠(yuǎn)程調(diào)用和分布式管理上具備模塊化功能和分布式存儲(chǔ)優(yōu)勢(shì);而集中日志能記錄基礎(chǔ)性技術(shù)組件;并在后續(xù)的應(yīng)用開發(fā)套件上進(jìn)行MX式的展示框架呈現(xiàn),并報(bào)表化處理。待這些套件組合完成就能以業(yè)務(wù)系統(tǒng)邏輯的形勢(shì)進(jìn)行保障化功能展示,高效運(yùn)行。
平臺(tái)微服務(wù)開發(fā)框架基于約定優(yōu)于配置的思想,封裝了支撐微服務(wù)構(gòu)建的組件庫,不需要繁瑣的配置即可使用Java語言開發(fā)微服務(wù).平臺(tái)總體技術(shù)架構(gòu)如圖2所示.
圖2 平臺(tái)總體技術(shù)架構(gòu)
平臺(tái)提供基于dropwizard microservice開發(fā)組件,使用jetty web容器,引進(jìn)澤提供標(biāo)準(zhǔn)rest風(fēng)格的web訪問,集成數(shù)據(jù)持久層訪問組件,如hibernate提供服務(wù)注冊(cè)和發(fā)現(xiàn)功能,自動(dòng)注冊(cè)本地服務(wù)注冊(cè)表,選擇最優(yōu)服務(wù)地址通過可選的負(fù)載均衡策略,并提供輕量級(jí)的RPC。在開發(fā)階段,根據(jù)微服務(wù)框架包的特點(diǎn),將平臺(tái)各模塊的包插件集成到微服務(wù)中,如任務(wù)調(diào)度、大數(shù)據(jù)組件、報(bào)表、演示框架等。
同時(shí),平臺(tái)提供分散的分布式服務(wù)注冊(cè)中心,在每個(gè)節(jié)點(diǎn)上啟動(dòng)一個(gè)注冊(cè)中心。不同節(jié)點(diǎn)的多個(gè)注冊(cè)中心之間不存在主次差異,降低了注冊(cè)中心的壓力。一個(gè)注冊(cè)中心的停機(jī)不會(huì)影響集群中的其他注冊(cè)中心。對(duì)于注冊(cè)中心節(jié)點(diǎn)的停機(jī)時(shí)間,它提供了自動(dòng)檢測(cè)故障節(jié)點(diǎn)的機(jī)制和周期性恢復(fù)功能,為注冊(cè)中心的正常運(yùn)行提供了雙重保障。
該平臺(tái)提供了分散式的服務(wù)注冊(cè)機(jī)制,具有容錯(cuò)性和高可用性。它并不維護(hù)高可用性的服務(wù)注冊(cè)中心,而是將其分散到集群中的每個(gè)節(jié)點(diǎn)。開始注冊(cè)模塊在每個(gè)節(jié)點(diǎn)上,沒有多個(gè)注冊(cè)模塊主要或次要區(qū)別不同的節(jié)點(diǎn),從而降低的壓力登記模塊,其中每個(gè)注冊(cè)模塊的失敗不會(huì)影響集群中其他注冊(cè)模塊,有效地避免系統(tǒng)故障的風(fēng)險(xiǎn)造成的失敗只有一個(gè)注冊(cè)模塊。針對(duì)注冊(cè)模塊節(jié)點(diǎn)的故障,提供了故障節(jié)點(diǎn)的自動(dòng)檢測(cè)機(jī)制和周期性恢復(fù)功能,為注冊(cè)模塊的正常運(yùn)行提供了雙重保障。
同時(shí),平臺(tái)微服務(wù)開發(fā)框架提供本地化的服務(wù)注冊(cè)和發(fā)現(xiàn)功能。服務(wù)只需要在本地注冊(cè)模塊注冊(cè)。集群中不同注冊(cè)模塊之間的注冊(cè)信息是同步的,同步過程不需要響應(yīng),有效降低了網(wǎng)絡(luò)資源的消耗。從本地注冊(cè)模塊獲得的注冊(cè)信息是在集群中注冊(cè)的所有服務(wù)信息。該平臺(tái)自發(fā)布以來,已應(yīng)用于SGCC的多個(gè)重點(diǎn)項(xiàng)目,包括基礎(chǔ)設(shè)施管控、協(xié)同研發(fā)工具等。基于微服務(wù)架構(gòu)的統(tǒng)一應(yīng)用開發(fā)平臺(tái),分散的服務(wù)注冊(cè),高性能的遠(yuǎn)程進(jìn)程調(diào)用框架,健壯的負(fù)載均衡策略,極大的完善了業(yè)務(wù)系統(tǒng)。開發(fā)和維護(hù)的效率提高了系統(tǒng)的可擴(kuò)展性和可靠性。
綜上所述,在微服務(wù)框架下,統(tǒng)一而高效的業(yè)務(wù)開發(fā)平臺(tái)能為生成服務(wù)多維度開發(fā)標(biāo)準(zhǔn)建立操控性框架。極大屏蔽復(fù)雜細(xì)節(jié)前提下的編程繁瑣和調(diào)試缺陷。全面幫助研發(fā)人員進(jìn)行業(yè)務(wù)代碼的模塊化編寫,最終配置微服務(wù)技術(shù)類別??焖俳⑵鹨粋€(gè)高內(nèi)聚、低耦合的微服務(wù)應(yīng)用,達(dá)到“開發(fā)標(biāo)準(zhǔn)化、系統(tǒng)模塊化、應(yīng)用服務(wù)化”的目標(biāo).