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