毛潤菲
摘要 微服務(wù)是針對單一業(yè)務(wù)建立的、運行在獨立的進(jìn)程中的功能單元;一組微服務(wù)有機(jī)結(jié)合就形成了微服務(wù)系統(tǒng)。微服務(wù)之間利用輕量級的交互機(jī)制進(jìn)行通信,有靈活的技術(shù)類型、獨立的組件部署、持續(xù)的可交付能力、強(qiáng)容錯能力、可以按需擴(kuò)展;大大提升了網(wǎng)絡(luò)資源的利用率,但存在著可靠性、故障診斷、服務(wù)流程組合等問題。本文將簡析微服務(wù)系統(tǒng)的可靠性分析、服務(wù)流程組合技術(shù)、故障診斷方法;希望能對以后微服務(wù)系統(tǒng)的發(fā)展起到推動作用。
【關(guān)鍵詞】微服務(wù) 微服務(wù)系統(tǒng) 可靠性 服務(wù)流程組合 故障診斷
1 微服務(wù)相關(guān)概念和起源
微服務(wù)的“微”是微小的意思,“服務(wù)”區(qū)別于系統(tǒng)是指用戶所能感知到的最小工作單位,是一個獨立的功能單元。微服務(wù)系統(tǒng)是一種熱門的軟件架構(gòu),可以將復(fù)雜的軟件應(yīng)用工程分解為一個個小的子任務(wù)即微服務(wù),從而實現(xiàn)按需擴(kuò)展、靈活構(gòu)建軟件。
微服務(wù)系統(tǒng)和軟件工程密不可分,軟件工程的概念自1968年提出以來,已經(jīng)發(fā)展出來一系列的研究工具、實現(xiàn)語言、方法和完善的理論了。但是因為軟件頑固的不可見性、不穩(wěn)定性和復(fù)雜性,急需有工具可以實現(xiàn)系統(tǒng)需求與系統(tǒng)詳細(xì)設(shè)計之間的過渡與交接,這時候軟件體系結(jié)構(gòu)就出現(xiàn)了。早期的計算機(jī)資源是集中分布在一臺機(jī)器上,奠定了單體架構(gòu)的基調(diào)。單體架構(gòu)由多個子服務(wù)組成,多個子服務(wù)是一個整體,由于不能對每個子服務(wù)單獨擴(kuò)展,限制了計算機(jī)資源的利用率。時代的選擇孕育了微服務(wù)架構(gòu),獨立的微服務(wù)可以有機(jī)地組合為微服務(wù)架構(gòu),每個微服務(wù)各司其職、互相交流、自動獨立部署、可以單獨被擴(kuò)展。
2 微服務(wù)系統(tǒng)的可靠性分析
目前,網(wǎng)絡(luò)軟件主要是由微服務(wù)系統(tǒng)來展現(xiàn)和表達(dá),可以實現(xiàn)網(wǎng)絡(luò)資源的集成和分享,十分符合現(xiàn)在的分布式計算機(jī)網(wǎng)絡(luò)的特點。但是異構(gòu)、協(xié)同、動態(tài)的網(wǎng)絡(luò)可能隨時出現(xiàn)各式各樣的異常,使得微服務(wù)系統(tǒng)的可靠性大大降低、網(wǎng)絡(luò)服務(wù)質(zhì)量大打折扣。要解決微服務(wù)系統(tǒng)的可靠性問題,我們應(yīng)該借助“自適應(yīng)”調(diào)整的概念與應(yīng)用。在網(wǎng)絡(luò)超出了軟件設(shè)計的控制范圍時,需要系統(tǒng)具有自適應(yīng)動態(tài)調(diào)整的能力,從而迅速、高效率地解決各種異常。其實就是通過數(shù)學(xué)模型、統(tǒng)計方法、動態(tài)數(shù)據(jù)以及依賴關(guān)系等進(jìn)行的綜合計算與預(yù)測評估,來進(jìn)行可靠性的控制。
3 服務(wù)組合流程技術(shù)
以太網(wǎng)中存在小粒度服務(wù)和大粒度服務(wù),一個小粒度服務(wù)是實現(xiàn)一個服務(wù)模型描述的需求規(guī)則約定,一個大粒度服務(wù)能夠?qū)崿F(xiàn)多個服務(wù)模型描述的眾多需求規(guī)則約定?;ヂ?lián)網(wǎng)中服務(wù)流程的目標(biāo)是實現(xiàn)可靠性最優(yōu),小粒度服務(wù)在同粒度的服務(wù)組合中易實現(xiàn)目標(biāo),而大粒度服務(wù)模型通過構(gòu)建最優(yōu)大粒度服務(wù)流程模型同樣可以有效解決問題,最優(yōu)大粒度服務(wù)流程建模是一個NPC問題,其求解過程非常復(fù)雜。至今的研究中已經(jīng)有大量基于某具體服務(wù)質(zhì)量最優(yōu)的服務(wù)流程組合方法,但是條件是基于同一類型的小粒度服務(wù)。然而大家看問題都是從不同的角度來觀察分析,自然會從很不一樣的粒度上觀察分析同一個問題。這種需求就需要根據(jù)大粒度服務(wù)模型來解析問題,由于有大粒度服務(wù)流程組合解決多個服務(wù)模型,可以大大地減少提供商的溝通成本、減少候選的服務(wù)集合的數(shù)量、降低了提供商的技術(shù)差別問題率等等。結(jié)合啟發(fā)式求解算法、云計算技術(shù)可以得到建立最優(yōu)大粒度服務(wù)流程組合模型問題的參考定義。
4 微服務(wù)系統(tǒng)的故障診斷方法
微服務(wù)將傳統(tǒng)單體架構(gòu)的所有組件獨立開來,得到許多組件,組件的關(guān)系復(fù)雜,各軟件更新率高,大大增加了故障發(fā)生的概率以及診斷的難度。而且由于組件的依賴關(guān)系緊密,一個服務(wù)組件出故障時,會影響其他服務(wù)組件,出現(xiàn)泛洪現(xiàn)象,最后令服務(wù)質(zhì)量下降。因此,找到有效的故障診斷方法、及時定位出錯原由,是微服務(wù)系統(tǒng)的關(guān)鍵問題之一。故障起因很多,設(shè)置人工報警準(zhǔn)則無法適應(yīng)復(fù)雜的組件依賴關(guān)系,針對該問題,提出一種基于執(zhí)行軌跡監(jiān)視測量的微服務(wù)故障診斷方法。利用樹形結(jié)構(gòu),算出差異數(shù)值,針對差異值即異常數(shù)值,調(diào)用主成分分析法最終得出診斷結(jié)果。
5 微服務(wù)系統(tǒng)的關(guān)鍵問題
目前微服務(wù)系統(tǒng)存在三個方面的問題亟待解決:
(1)早期針對單體架構(gòu)的多實例部署的可靠性分析方法不適用于微服務(wù)系統(tǒng),急需研究出解決微服務(wù)系統(tǒng)的多實例部署的可靠性的方法。
(2)隨著微服務(wù)系統(tǒng)的發(fā)展,針對單一的服務(wù)流程的可靠性分析方法已經(jīng)不能滿足網(wǎng)絡(luò)服務(wù),所以預(yù)估多業(yè)務(wù)流交互的微服務(wù)系統(tǒng)的可靠性也是一個關(guān)鍵問題。
(2)實現(xiàn)自適應(yīng)調(diào)整的最直接有效的方法之一就是服務(wù)流程重組。根據(jù)服務(wù)流程模型和大力度服務(wù)候選集合的基礎(chǔ)組合服務(wù)流程也是一大難題。
6 結(jié)語
未來,微服務(wù)系統(tǒng)定會應(yīng)用于生活的各種網(wǎng)絡(luò)業(yè)務(wù)中,我們必須認(rèn)識到微服務(wù)系統(tǒng)強(qiáng)大的優(yōu)越性,也需要了解目前該系統(tǒng)遇到的關(guān)鍵問題:可靠性較低、故障診段與問題定位、系統(tǒng)流程組合難題等。將來還有許多工作需要突破、完善,一步步走向理想的微服務(wù)系統(tǒng)。希望本文對微服務(wù)系統(tǒng)的簡析可以對下一步工作起到推動作用。
參考文獻(xiàn)
[1]開金宇,面向可靠性的微服務(wù)系統(tǒng)自適應(yīng)調(diào)整技術(shù)研究[D].上海大學(xué),2016.
[2] Antonia Bertolino. Software TestingResearch: Achievement s, Challenges,Dreams. FOSE 2007: Future of SoftwareEngineering, 2007: 85-103.
[3]Current Solutions for Web ServiceComposition. Nikola Milanovic,Miroslaw Malek. IEEE InternetComputing.2004.
[4]Dynamic Service Composition: State-of-the-Art and Research Directions.Dipanjan Chakrabort, AnupamJoshi.2001.
[5]張花萍,基于業(yè)務(wù)流程執(zhí)行語言的服務(wù)組合技術(shù)研究及實現(xiàn)[D],華中科技大學(xué),2007.