余 航,邢長(zhǎng)友,許 博,丁 科
(陸軍工程大學(xué) 指揮控制工程學(xué)院,江蘇 南京210007)
微服務(wù)化的軟件系統(tǒng),其組成部分是眾多相對(duì)獨(dú)立的微服務(wù)[1],微服務(wù)以其松散耦合的特性,為軟件系統(tǒng)增強(qiáng)其韌性提供了強(qiáng)大支撐。傳統(tǒng)的單體架構(gòu)存在可靠性低、可重用性差、體量臃腫等問(wèn)題[2],這使得軟件系統(tǒng)的部署、開(kāi)發(fā)、應(yīng)用都更加困難。相對(duì)于前者而言,微服務(wù)具有敏捷部署、獨(dú)立開(kāi)發(fā)、多語(yǔ)言支持等優(yōu)勢(shì)[3],這使得微服務(wù)能夠基于冗余和多樣性技術(shù)手段[4],允許跨地理分布的服務(wù)集群實(shí)現(xiàn)快速配置和更新集群狀態(tài),有助于增強(qiáng)軟件系統(tǒng)韌性的同時(shí),降低分布式服務(wù)集群的部署成本。對(duì)用戶(hù)而言,系統(tǒng)本身的韌性能力反映在系統(tǒng)為用戶(hù)分配的服務(wù)鏈上。
微服務(wù)架構(gòu)下,服務(wù)鏈?zhǔn)侵赣扇舾蓚€(gè)執(zhí)行不同功能的微服務(wù)組件相互協(xié)同組成,用于滿(mǎn)足用戶(hù)需要,響應(yīng)用戶(hù)請(qǐng)求的有機(jī)整體。組成服務(wù)鏈的各微服務(wù)組件獨(dú)立工作、互不干擾、可自由組合。服務(wù)鏈中各微服務(wù)之間松散耦合的特性使得其韌性能力可以視為各服務(wù)組件的韌性能力之和,微服務(wù)組件本身所具有的屬性和所使用的技術(shù)手段決定了組件運(yùn)行給系統(tǒng)帶來(lái)的韌性增強(qiáng)。此外,對(duì)于系統(tǒng)運(yùn)維而言,各微服務(wù)組件所采取的技術(shù)手段越多,系統(tǒng)復(fù)雜度越高,維護(hù)成本和復(fù)雜性也隨之上升。
本文所研究的韌性編排問(wèn)題是指確定和選擇最佳微服務(wù)組件實(shí)例,組成一個(gè)完整的服務(wù)鏈(Service Chain,SC),在滿(mǎn)足軟件系統(tǒng)功能的條件下,使得系統(tǒng)韌性得到增強(qiáng)的工作流程。在微服務(wù)化的軟件系統(tǒng)中,編排問(wèn)題是最亟需解決的重點(diǎn)問(wèn)題之一。
為解決上述問(wèn)題,本文提出了一種韌性驅(qū)動(dòng)的微服務(wù)編排框架RMOF,框架針對(duì)微服務(wù)組件本身的韌性能力水平和服務(wù)鏈整體復(fù)雜性進(jìn)行了考察。本文的主要貢獻(xiàn)包括:
(1) 建立了一套基于不同韌性目標(biāo),以用戶(hù)滿(mǎn)意度作為導(dǎo)向的微服務(wù)韌性編排數(shù)學(xué)優(yōu)化模型。并在此基礎(chǔ)上設(shè)計(jì)了綜合考慮系統(tǒng)的韌性目標(biāo)、風(fēng)險(xiǎn)、應(yīng)對(duì)技術(shù)以及實(shí)現(xiàn)代價(jià)的微服務(wù)編排模型。
(2) 提出了GA -PP 算法,對(duì)微服務(wù)的編排問(wèn)題進(jìn)行優(yōu)化,能夠在保證優(yōu)化編排方案的同時(shí)兼顧計(jì)算效率。
傳統(tǒng)解決編排問(wèn)題的一般方法通常包括輪詢(xún)法、隨機(jī)化方法或由專(zhuān)家根據(jù)經(jīng)驗(yàn)確定優(yōu)先級(jí)來(lái)解決等[5],以上方法存在可靠性不足和嚴(yán)重依賴(lài)專(zhuān)業(yè)經(jīng)驗(yàn)的問(wèn)題。并且在微服務(wù)化軟件系統(tǒng)中,隨著微服務(wù)組件數(shù)量的增加,問(wèn)題解決的難度也隨之上升[6],此外傳統(tǒng)方法不具備足夠的通用性,推廣意義較為有限。
早期關(guān)于服務(wù)編排機(jī)制的工作主要基于服務(wù)質(zhì)量(Quality of Service,QoS) 感知開(kāi)展。QoS 屬性通常包括響應(yīng)時(shí)間、可用性、可靠性和價(jià)格成本等,文獻(xiàn)[7-9]專(zhuān)注于基于QoS 感知的服務(wù)組合及其在中間件中的實(shí)現(xiàn),不足之處在于沒(méi)有定量地描述帶有風(fēng)險(xiǎn)的安全目標(biāo),并在實(shí)際的云環(huán)境中解決它們。大量研究側(cè)重于單個(gè)服務(wù)鏈的QoS 優(yōu)化,而忽略了實(shí)例之間的共享和競(jìng)爭(zhēng)。為了解決這個(gè)問(wèn)題,Ding等人提出了一種基于列表調(diào)度的微服務(wù)選擇算法(Microservice Service Selection algorithm,MSS)[10]。該算法采用工作流模型來(lái)對(duì)服務(wù)鏈進(jìn)行描述,分析實(shí)例的處理速度、網(wǎng)絡(luò)傳輸速度和任務(wù)并發(fā)程度,計(jì)算每個(gè)任務(wù)的分期限,根據(jù)分期限和其他信息,實(shí)時(shí)計(jì)算和更新每個(gè)任務(wù)的調(diào)度緊迫性。最后,提出了基于分期限和緊迫性的兩種服務(wù)選擇策略,以完成微服務(wù)實(shí)例選擇,構(gòu)成服務(wù)鏈。
大規(guī)模分布式云環(huán)境的高度復(fù)雜性導(dǎo)致了大量的不確定性,而這些不確定性無(wú)法通過(guò)常規(guī)信息安全方法的可用性來(lái)建模[11]。Wen 等人創(chuàng)新地從安全性角度出發(fā),針對(duì)內(nèi)部安全威脅和外部環(huán)境不確定性進(jìn)行建模,并在Spark 上采用了新穎的分布式并行遺傳算法框架GA-Par[12]來(lái)提供可靠的微服務(wù)編排并處理所涉及的計(jì)算效率問(wèn)題,以降低大規(guī)模部署下執(zhí)行編排算法的時(shí)間耗費(fèi),旨在為異地部署的數(shù)據(jù)中心微服務(wù)編排提供最佳解決方案。
因此,隨著當(dāng)前微服務(wù)化的不斷推進(jìn)以及系統(tǒng)韌性重要程度日漸上升,迫切需要一種用以量化微服務(wù)化軟件系統(tǒng)韌性的通用機(jī)制,為實(shí)現(xiàn)韌性編排提供有力支撐。
關(guān)于編排問(wèn)題的計(jì)算解決方案,研究人員已經(jīng)證明,在大規(guī)模云環(huán)境中,問(wèn)題的復(fù)雜度將隨著系統(tǒng)規(guī)模擴(kuò)張而爆炸式上升,諸如混合整數(shù)非線性規(guī)劃(MINLP) 或線性規(guī)劃(MIP) 等方法是不可行的[6],而遺傳算法等啟發(fā)式算法已被廣泛用于優(yōu)化資源調(diào)度、服務(wù)編排和任務(wù)分配[12-14]。
圖1 描述了一個(gè)實(shí)時(shí)信息系統(tǒng)。用戶(hù)在通過(guò)代理到達(dá)Web 前端后,可以分別通過(guò)用戶(hù)注冊(cè)、用戶(hù)注銷(xiāo)、用戶(hù)登錄的微服務(wù)組件實(shí)現(xiàn)注冊(cè)、注銷(xiāo)和登錄,而這些操作又要通過(guò)后續(xù)負(fù)責(zé)數(shù)據(jù)庫(kù)管理的微服務(wù)組件和后端用戶(hù)信息數(shù)據(jù)庫(kù)交互來(lái)得以實(shí)現(xiàn),從而使得業(yè)務(wù)系統(tǒng)得以持續(xù)。在該系統(tǒng)中,整個(gè)系統(tǒng)的韌性程度可以看作是各個(gè)服務(wù)鏈上單個(gè)微服務(wù)組件的韌性能力之和,以及微服務(wù)組件之間的相互影響因素。
圖1 實(shí)時(shí)信息系統(tǒng)架構(gòu)
圖2 所示是微服務(wù)化的軟件系統(tǒng)架構(gòu),圖中基礎(chǔ)設(shè)施層每個(gè)部署節(jié)點(diǎn)上都維護(hù)一個(gè)服務(wù)注冊(cè)表,注冊(cè)代理發(fā)現(xiàn)各微服務(wù)組件(如Service,DBMS 等) 并完成注冊(cè)。各微服務(wù)組件通過(guò)心跳報(bào)文在完成注冊(cè)后向節(jié)點(diǎn)上的代理上報(bào)當(dāng)前狀態(tài)等信息。表示用戶(hù)的Client 向請(qǐng)求代理Agent 發(fā)起服務(wù)請(qǐng)求后,Agent對(duì)請(qǐng)求進(jìn)行解析,隨后根據(jù)各部署節(jié)點(diǎn)上報(bào)的服務(wù)名單選擇相應(yīng)的服務(wù)實(shí)例執(zhí)行,從而形成服務(wù)鏈,并根據(jù)相應(yīng)的編排結(jié)果生成路由表項(xiàng),下發(fā)至各SDN 交換機(jī),以流控制的方式使系統(tǒng)中的業(yè)務(wù)流根據(jù)控制中心給出的方案進(jìn)行執(zhí)行。
圖2 微服務(wù)化軟件系統(tǒng)架構(gòu)
為了實(shí)現(xiàn)韌性編排,需要處理以下問(wèn)題:
(1) 如何表征存在損害系統(tǒng)韌性的可能風(fēng)險(xiǎn),同時(shí)不同版本、基于不同技術(shù)實(shí)現(xiàn)、旨在實(shí)現(xiàn)同一功能目標(biāo)的微服務(wù)組件為集群帶來(lái)的韌性增益是不同的,如何利用可能存在的風(fēng)險(xiǎn)和韌性增強(qiáng)技術(shù)來(lái)量化微服務(wù)編排中的韌性目標(biāo)滿(mǎn)意度?
(2) 如何處理軟件系統(tǒng)在不同韌性階段所側(cè)重目標(biāo)一致的問(wèn)題?
(3) 如何評(píng)估為增強(qiáng)系統(tǒng)韌性所需付出的代價(jià),即如何對(duì)系統(tǒng)復(fù)雜性進(jìn)行合理量化?
(4) 如何應(yīng)對(duì)在系統(tǒng)規(guī)模擴(kuò)張下不斷增加的計(jì)算復(fù)雜性?
微服務(wù)韌性被認(rèn)為是未來(lái)互聯(lián)網(wǎng)的基本設(shè)計(jì)屬性[15],是網(wǎng)絡(luò)在面對(duì)正常運(yùn)行下產(chǎn)生的故障和挑戰(zhàn)時(shí)提供和維持可接受的服務(wù)水平的能力[16]。在軟件系統(tǒng)中,韌性是一個(gè)總體概念,脫離系統(tǒng)整體來(lái)考慮單個(gè)微服務(wù)組件的韌性能力是沒(méi)有意義的。
多樣性和冗余技術(shù)手段的運(yùn)用,使得對(duì)于每個(gè)微服務(wù)而言,都有一組微服務(wù)組件可以實(shí)現(xiàn)相應(yīng)的功能。而在軟件系統(tǒng)運(yùn)行的不同階段、不同步驟中,單個(gè)微服務(wù)組件對(duì)整個(gè)軟件系統(tǒng)產(chǎn)生的韌性增益是不同的,因此需要提出一套合理的韌性評(píng)價(jià)體系,對(duì)于不同情況下對(duì)每個(gè)候選微服務(wù)組件進(jìn)行韌性評(píng)價(jià),選擇最符合需求的微服務(wù)組件進(jìn)入服務(wù)鏈中。本文從用戶(hù)的角度出發(fā),基于多種韌性目標(biāo),根據(jù)評(píng)估體系對(duì)候選微服務(wù)組件韌性計(jì)算用戶(hù)滿(mǎn)意度,從而對(duì)各組件進(jìn)行評(píng)價(jià)。
為了處理2.1 節(jié)所提問(wèn)題(1)、(2),本文首先對(duì)不同階段的韌性目標(biāo)進(jìn)行明確,并說(shuō)明韌性階段、韌性目標(biāo)、風(fēng)險(xiǎn)、韌性技術(shù)、用戶(hù)滿(mǎn)意度之間的關(guān)系。由于多種原因,現(xiàn)實(shí)中軟件系統(tǒng)的韌性能力可能會(huì)面臨一些風(fēng)險(xiǎn),例如內(nèi)存耗盡、隔離失效、惡意軟件、惡意內(nèi)部人員、錯(cuò)誤刪除等。但是,各種不同的微服務(wù)組件由于使用了多樣化的技術(shù)手段對(duì)風(fēng)險(xiǎn)進(jìn)行削弱或遏制,使得軟件系統(tǒng)的韌性得以增強(qiáng)。因此,在不同的韌性階段,各韌性目標(biāo)的實(shí)現(xiàn)既取決于潛在的風(fēng)險(xiǎn),同時(shí)又取決于各組件所使用的技術(shù)對(duì)風(fēng)險(xiǎn)的緩解程度。而用戶(hù)滿(mǎn)意度則來(lái)源于候選組件使用技術(shù)手段對(duì)風(fēng)險(xiǎn)的緩解程度與用戶(hù)期望之間的差距。
(1) 不同階段的韌性目標(biāo)
在Kott 等人的《Cyber Resilience of Systems and Networks 》[17]一書(shū)中,系統(tǒng)韌性需求根據(jù)系統(tǒng)運(yùn)行時(shí)所處于的不同階段,被劃分成預(yù)測(cè)、抵抗、恢復(fù)、適應(yīng)四個(gè)階段,各階段所側(cè)重的韌性目標(biāo)有所不同,其對(duì)應(yīng)關(guān)系如表1 所示。
根據(jù)表1 所示,在軟件系統(tǒng)運(yùn)行的不同階段,用戶(hù)對(duì)韌性目標(biāo)有著不同的需求,因此t階段的總體韌性指標(biāo)可以表示為:
表1 各階段系統(tǒng)韌性目標(biāo)
其中,DSR (Degree of Service Resilience) 表示總體韌性程度,通過(guò)用戶(hù)對(duì)微服務(wù)組件sih的滿(mǎn)意度來(lái)計(jì)算,t表示軟件運(yùn)行的階段,nt表示該階段所考慮的韌性目標(biāo)數(shù)量,Mq(u,sih) 表示在第t階段用戶(hù)u對(duì)微服務(wù)sih在第q個(gè)韌性目標(biāo)上的滿(mǎn)意度,wqi(t) 表示t階段不同韌性目標(biāo)的權(quán)重,即重要程度。
(2) 韌性目標(biāo)與風(fēng)險(xiǎn)之間的映射
Kott 等人[17]提出韌性目標(biāo)集合共包括七大目標(biāo),韌性目標(biāo)與主要風(fēng)險(xiǎn)間的映射情況如表2 所示。
表2 韌性目標(biāo)風(fēng)險(xiǎn)映射表
(3) 單風(fēng)險(xiǎn)下微服務(wù)組件韌性
本文利用各微服務(wù)組件所使用的風(fēng)險(xiǎn)預(yù)防技術(shù)來(lái)衡量它們的韌性增益。表3 顯示了本文的部分符號(hào)釋義。
表3 部分符號(hào)釋義
假設(shè)微服務(wù)的韌性水平取決于所使用的相應(yīng)技術(shù)手段的數(shù)量和質(zhì)量,例如,可以通過(guò)多種技術(shù)或策略來(lái)防止某種類(lèi)型的風(fēng)險(xiǎn),并且當(dāng)獨(dú)立使用這些技術(shù)手段時(shí),它們分別具備多種功能。此外,假設(shè)通過(guò)將更合適的技術(shù)應(yīng)用于微服務(wù)會(huì)對(duì)系統(tǒng)韌性產(chǎn)生增益效果。下面將詳細(xì)介紹如何計(jì)算微服務(wù)的韌性水平。
根據(jù)假設(shè),某微服務(wù)組件可以通過(guò)一組技術(shù)和策略TechRk處理風(fēng)險(xiǎn)Rk,因此,該組件使用技術(shù)手段或策略緩解風(fēng)險(xiǎn)Rk,從而增強(qiáng)系統(tǒng)韌性的能力可以量化為:
其中Vj表示降低風(fēng)險(xiǎn)Rk的技術(shù)j的性能。如果微服務(wù)S提供了一系列技術(shù)和政策TechS,那么微服務(wù)S緩解風(fēng)險(xiǎn)Rk的能力可以表示為:
(4) 微服務(wù)組件韌性評(píng)估
再次以圖1 中的實(shí)時(shí)信息系統(tǒng)為例,實(shí)際運(yùn)行中,既需要保證微服務(wù)本身的韌性增益,同時(shí)需要確保微服務(wù)之間的信息傳遞滿(mǎn)足韌性目標(biāo)要求。
由于冗余和多樣性的使用,同一微服務(wù)對(duì)應(yīng)有一組實(shí)現(xiàn)相同功能的組件,本文的工作就是要建立適合的評(píng)估模型,對(duì)微服務(wù)鏈上的這一組微服務(wù)組件進(jìn)行韌性評(píng)估,選出最能增強(qiáng)系統(tǒng)韌性的組件進(jìn)入服務(wù)鏈。本文定義了一個(gè)服務(wù)韌性程度指標(biāo)(Degree of Service Resilience,DSR),該指標(biāo)描述了被評(píng)估組件所能提供的韌性能力與用戶(hù)需求之間的比值,即用戶(hù)滿(mǎn)意程度,用以衡量韌性能力水平。在這一背景下,假設(shè)t階段被選中的某個(gè)微服務(wù)組件sih可以完全滿(mǎn)足用戶(hù)的需求,那么DSR 需要滿(mǎn)足以下條件:
DSR 的具體計(jì)算方式由下式確定:
而Mq(u,sih) 表示用戶(hù)u對(duì)候選微服務(wù)組件sih在第q個(gè)目標(biāo)上的滿(mǎn)意度,其計(jì)算方法如下:
關(guān)于韌性代價(jià)問(wèn)題,即2.1 節(jié)中所提問(wèn)題(3 ),上文中已經(jīng)提到,軟件系統(tǒng)微服務(wù)化帶來(lái)的最大問(wèn)題在于復(fù)雜性提高帶來(lái)的運(yùn)維開(kāi)銷(xiāo)和困難[18],因此本節(jié)需要對(duì)系統(tǒng)復(fù)雜性進(jìn)行建模。代價(jià)建模相關(guān)指標(biāo)如表4 所示。
表4 代價(jià)建模相關(guān)指標(biāo)
在形式上,微服務(wù)化的軟件系統(tǒng)提供服務(wù)的服務(wù)鏈可以表示為有向無(wú)回路圖G=(S,E)。如圖3 所示,頂點(diǎn)S(如Service A1) 對(duì)應(yīng)于微服務(wù)組件,而邊E對(duì)應(yīng)于在它們之間傳輸?shù)臄?shù)據(jù)或消息。
圖3 業(yè)務(wù)流DAG 圖
具體來(lái)說(shuō),軟件系統(tǒng)中的每類(lèi)微服務(wù)i都有一組候選微服務(wù)Si,其中候選h用sih∈Si表示,該候選組件所使用技術(shù)集合的表示符號(hào)為,因此單個(gè)微服務(wù)組件的韌性代價(jià)可以表示為該組件所使用的技術(shù)數(shù)量,即其復(fù)雜性指標(biāo),可用符號(hào)表示。
由于每個(gè)候選微服務(wù)組件sip在不同階段在不同微服務(wù)之間可能具有不同的復(fù)雜性關(guān)系,本文將使用編排得到的服務(wù)鏈總體技術(shù)多樣性度量作為指標(biāo)對(duì)韌性代價(jià)進(jìn)行建模。因此對(duì)于圖中的某一條服務(wù)鏈SC,其韌性代價(jià)可以表示為該鏈上所有微服務(wù)組件所使用的技術(shù)種類(lèi)數(shù)量,即并集的元素?cái)?shù)量,與可使用的技術(shù)總量之比,如式(9) 所示:
其中,|TechA| 表示系統(tǒng)內(nèi)微服務(wù)組件可選用的技術(shù)全集的元素?cái)?shù)量,即:
在單微服務(wù)組件編排的情況下,對(duì)用戶(hù)u 而言,t階段在微服務(wù)Si的候選組件中選擇sih的總體效用函數(shù)可以表示為式(11):
其中,λ 表示影響因子,即考慮韌性成本對(duì)編排結(jié)果產(chǎn)生影響的重要性程度。
由于單編排問(wèn)題中,服務(wù)鏈中只有一個(gè)微服務(wù)組件,因此在考慮韌性代價(jià)時(shí)不需要考慮鏈中的其他微服務(wù):
優(yōu)化的目標(biāo)在于使得在提高服務(wù)鏈韌性的同時(shí),盡可能控制所需付出的代價(jià)。因此,其優(yōu)化目標(biāo)可以寫(xiě)成:
在多微服務(wù)組件編排的情況下,由于服務(wù)鏈中包含多個(gè)微服務(wù)組件,因此在討論解決方案時(shí)需對(duì)整個(gè)服務(wù)鏈上的所有微服務(wù)組件進(jìn)行考慮,假設(shè)該服務(wù)鏈SC 長(zhǎng)度為n,每個(gè)微服務(wù)的候選者數(shù)量為m。對(duì)用戶(hù)u 而言,t 階段通過(guò)編排得到服務(wù)鏈SC 的總體效用函數(shù)可以表示為:
其中,需要注意的是:
為了解決2.1 節(jié)中所提問(wèn)題(4),本文提出了一種部分保留的遺傳算法GA -PP 。本節(jié)將簡(jiǎn)要概述這一解決方案,并對(duì)算法結(jié)構(gòu)設(shè)計(jì)和實(shí)現(xiàn)做詳細(xì)介紹。
(1) 算法概述
關(guān)于問(wèn)題的求解,在本文的問(wèn)題背景下,當(dāng)需要通過(guò)編排得到的服務(wù)鏈SC 長(zhǎng)度為n,每個(gè)微服務(wù)的候選組件數(shù)量為m 時(shí),將問(wèn)題命名為Arrangement(n,m)。問(wèn)題Arrangement (n,m) 的解空間大小,就是所有微服務(wù)組件所能組合形成的服務(wù)鏈數(shù)量,因此其解空間大小為mn,是一個(gè)NP 難問(wèn)題,顯然使用簡(jiǎn)單的搜索算法是無(wú)法在有效時(shí)間內(nèi)得到解決的。同時(shí),由于整數(shù)非線性規(guī)劃(MINLP) 或線性規(guī)劃(MIP) 等方法是不可行的,因此需要使用啟發(fā)式算法解決[19-20]。
遺傳算法是一種典型的啟發(fā)式算法,通常用于解決此類(lèi)最優(yōu)化問(wèn)題[21]。但遺傳算法存在收斂性問(wèn)題[22],由于其選擇、交叉、突變機(jī)制無(wú)法保證向著優(yōu)化的方向變化,因此難以確保收斂。Eiben 等人[23]已經(jīng)證明,合適的選擇策略能夠使遺傳算法不斷收斂。本文提出了一種部分保留的遺傳算法GA -PP,該算法旨在得到問(wèn)題Arrangement(n,m) 的一個(gè)較優(yōu)的可行解。
在GA-PP 中,每個(gè)染色體代表一個(gè)服務(wù)鏈個(gè)體,即一種解決方案,每個(gè)染色體上都有固定長(zhǎng)度的多個(gè)基因,每個(gè)基因代表服務(wù)鏈中的一個(gè)微服務(wù)組件。根據(jù)3.1 節(jié)中給出的優(yōu)化目標(biāo),本文將優(yōu)化目標(biāo)Value 作為遺傳算法的適應(yīng)度函數(shù)。GA-PP 主要包含四個(gè)階段: 選擇、交叉、突變、保留。通過(guò)每一輪迭代篩選出種群中的精英,保留部分較優(yōu)的精英直接進(jìn)入下一代種群中,通過(guò)不斷迭代最終得到一個(gè)可行解。
(2) 算法實(shí)現(xiàn)
傳統(tǒng)的遺傳算法中,突變過(guò)程中基因突變方向是不確定的,這對(duì)于連續(xù)且變化程度不過(guò)于劇烈的函數(shù)而言并不會(huì)造成太大影響,只要在數(shù)次突變中有若干次突變朝著結(jié)果優(yōu)化的方向發(fā)展,就能將優(yōu)秀的基因保留下來(lái)。而在本文所討論的問(wèn)題Arrangement(n,m) 中,無(wú)論是染色體(服務(wù)鏈SC)、基因(微服務(wù)組件) 還是適應(yīng)度函數(shù)(Value) 都是離散的,并且無(wú)論是選擇、交叉還是突變,都有可能導(dǎo)致優(yōu)秀基因的流失,這對(duì)于遺傳算法的收斂性提出了更高的要求。
為了更直觀地描述GA-PP 算法,本文將算法流程繪制如圖4 所示。圖中描述了一種引入“ 精英保留” 機(jī)制的遺傳算法,在每一代次種群計(jì)算完適應(yīng)度Value 后,都將其中的優(yōu)秀染色體保留下來(lái),同時(shí)“ 記住” 表現(xiàn)較差的個(gè)體,在每一輪突變結(jié)束后即將進(jìn)入下一輪種群Value 值計(jì)算之前,將之前“ 記住”的較差個(gè)體用保留下來(lái)的優(yōu)秀個(gè)體進(jìn)行替換。對(duì)于表現(xiàn)差的個(gè)體而言,該染色體上絕大部分基因都是表現(xiàn)不佳的,因此無(wú)論是否經(jīng)過(guò)交叉還是突變,都難以使其從表現(xiàn)較差的個(gè)體轉(zhuǎn)變成“ 精英”,因此使用保留下來(lái)的精英個(gè)體對(duì)其進(jìn)行替換,既能將優(yōu)秀的染色體保留到下一代次,確保其不斷收斂,同時(shí)起到基因篩選的效果。
圖4 詳細(xì)說(shuō)明了GA -PP 算法執(zhí)行的全過(guò)程。Arrangement (n,m) 問(wèn)題下,每個(gè)染色體長(zhǎng)度為n,染色體個(gè)體上每個(gè)基因有m 種表達(dá)。種群在完成初始化后,首先使用0-1 編碼的方式對(duì)種群中每個(gè)染色體和基因進(jìn)行編碼,每個(gè)基因的編碼長(zhǎng)度為log2m 。通過(guò)計(jì)算種群中每個(gè)個(gè)體的適應(yīng)度Value,可以得到種群中最優(yōu)、最劣的部分個(gè)體,這部分個(gè)體將在種群完成選擇、交叉、突變?nèi)齻€(gè)遺傳算法的傳統(tǒng)過(guò)程后完成替換,將最劣的部分個(gè)體替換成最優(yōu)的部分個(gè)體,從而使得最優(yōu)個(gè)體,即精英能夠順利進(jìn)入下一代次的迭代中,保證迭代結(jié)果能夠一直向著更優(yōu)的方向發(fā)展。
圖4 算法流程圖
其中核心步驟包括圖4 中標(biāo)注的①~④四個(gè)步驟:
①選擇: 本文使用輪盤(pán)賭法對(duì)每一代次的種群進(jìn)行淘汰選擇,目的是使表現(xiàn)好的染色體進(jìn)入到后續(xù)的遺傳過(guò)程中;
②交叉:種群中的相鄰個(gè)體以一定的概率雜交,以選擇得到的 “好” 染色體為基礎(chǔ),產(chǎn)生新的染色體;
③突變: 以一定概率使得染色體中的個(gè)別基因發(fā)生突變,以期得到可能的更好的染色體;
④保留: 將每一代次中的精英保留下來(lái)直接進(jìn)入下一代次,保證迭代過(guò)程中新產(chǎn)生的種群中最高的Value 值至少不會(huì)低于上一代次,防止算法無(wú)法收斂。
GA-PP 算法偽代碼如下:
(1) 平臺(tái)。本文所有實(shí)驗(yàn)均在ThinkPad T470p 上執(zhí)行,其處理器為Intel?CoreTMi7-7700HQ CPU @2.80 GHz×8,內(nèi)存大小為16 GB,使用Ubuntu 16.04操作系統(tǒng)。
(2) 數(shù)據(jù)。除了上文表1 、表2 中提到的兩組映射關(guān)系外,本文所使用的數(shù)據(jù)還包括了13000 條請(qǐng)求與技術(shù)映射記錄,以及風(fēng)險(xiǎn)- 技術(shù)映射表。
(3) 方法。本文通過(guò)運(yùn)行隨機(jī)選擇(Random)、傳統(tǒng)遺傳算法(GA) 和GA -PP 對(duì)服務(wù)鏈進(jìn)行編排,針對(duì)不同韌性階段、不同問(wèn)題規(guī)模、不同服務(wù)鏈長(zhǎng)度下求解Arrangement (n,m) 問(wèn)題,比較Random 、GA 、GA -PP 三種算法編排下得到目標(biāo)服務(wù)鏈Value 值在4個(gè)韌性階段下的均值,評(píng)估本文所給出的韌性編排算法的有效性。
(4) 指標(biāo)。根據(jù)3.1 節(jié)給出的計(jì)算最終Value 值公式,分別在4個(gè)韌性階段,通過(guò)應(yīng)用不同算法得到服務(wù)鏈編排結(jié)果,對(duì)4個(gè)韌性階段得到的Value值求均值,作為最終比較的效用指標(biāo)。
在本節(jié)中,將通過(guò)運(yùn)用三種算法在不同情況下解決Arrangement (n,m) 問(wèn)題,以此來(lái)研究在定量韌性測(cè)量框架下使用GA -PP 算法帶來(lái)的效用改善,并評(píng)估使用不同方案可獲得的效用值。
(1) 不同韌性階段的算法表現(xiàn)
圖5 所示是在(n,m)=(10,64) 的情況下,Random、GA 、GA-PP 三種算法在不同韌性階段的迭代情況,橫坐標(biāo)為迭代輪次,縱坐標(biāo)為編排得到的目標(biāo)服務(wù)鏈的Value 值??梢钥闯?,三種算法中,由于Random不存在迭代問(wèn)題,因此其表現(xiàn)在三種算法中較差。對(duì)比普通的GA 算法與本文所提的GA -PP,GA 在迭代過(guò)程中始終難以收斂,并且存在較大波動(dòng),但相較Random 而言更能得到一個(gè)較好的解,而GA - PP由于在迭代過(guò)程中保留了種群精英,能在較少的迭代輪次下收斂到一個(gè)更優(yōu)的解,編排得到的服務(wù)鏈Value 值基本可以收斂到0.90 附近。
圖5 Arrangement(10,64) 問(wèn)題在不同韌性階段的表現(xiàn)情況
(2) 不同候選組件數(shù)下的算法表現(xiàn)
圖6 描述了在不同問(wèn)題規(guī)模下三種算法的表現(xiàn)情況,本文在服務(wù)鏈長(zhǎng)度n 為10 的條件下,分別選取候選組件數(shù)m 的值為16,32,64,128,256,取四個(gè)階段編排結(jié)果Value 值的平均值作為對(duì)比指標(biāo),考察三種算法在五種不同候選組件數(shù)情況下的表現(xiàn)情況。
由圖6 可以觀察到,三種算法中GA-PP 始終比另外兩種算法有更好的表現(xiàn),利用GA-PP 算法來(lái)解決本文所提的編排問(wèn)題可以得到更加優(yōu)化的結(jié)果,即獲得更能滿(mǎn)足用戶(hù)需求的服務(wù)鏈。此外,根據(jù)圖6顯示可以發(fā)現(xiàn),候選組件數(shù)量的變化并未對(duì)算法結(jié)果產(chǎn)生太大干擾,不直接影響服務(wù)鏈Value 值的計(jì)算。
圖6 不同問(wèn)題規(guī)模下三種算法的表現(xiàn)情況
(3) 不同服務(wù)鏈長(zhǎng)度下的算法表現(xiàn)
圖7 描述了不同服務(wù)鏈長(zhǎng)度下三種算法的表現(xiàn),本文在每個(gè)微服務(wù)候選組件數(shù)m 的值為16 的情況下,分別選取服務(wù)鏈長(zhǎng)度n 的值為2,3,5,10,15,取四個(gè)階段編排結(jié)果Value 的均值作為對(duì)比指標(biāo),考察三種算法在五種不同服務(wù)鏈長(zhǎng)度情況下的表現(xiàn)情況。
根據(jù)圖7 可以觀察到,總體上來(lái)看,GA -PP 始終比另外兩種算法有更好的表現(xiàn),利用GA-PP 算法來(lái)解決本文所提的編排問(wèn)題可以得到更加優(yōu)化的結(jié)果。此外,根據(jù)圖7 顯示可以發(fā)現(xiàn),隨著服務(wù)鏈長(zhǎng)度的增長(zhǎng),三種算法的表現(xiàn)都隨之下降,可見(jiàn)服務(wù)鏈長(zhǎng)度n 對(duì)Value 值的優(yōu)化計(jì)算具有較大影響。原因在于本問(wèn)題的解空間大小為mn,相較于m 增大給問(wèn)題規(guī)模帶來(lái)的影響,n 的增大將使得問(wèn)題復(fù)雜度的擴(kuò)張更為劇烈。
圖7 不同長(zhǎng)度服務(wù)鏈下三種算法的表現(xiàn)情況
本文通過(guò)考慮微服務(wù)組件所使用的韌性增強(qiáng)技術(shù)和所產(chǎn)生的韌性代價(jià),描述了一種基于韌性的微服務(wù)編排框架RMOF 。RMOF 充分考慮了系統(tǒng)韌性實(shí)現(xiàn)的目標(biāo)、所面臨的風(fēng)險(xiǎn)以及微服務(wù)組件所使用的應(yīng)對(duì)風(fēng)險(xiǎn)的技術(shù),同時(shí)使用技術(shù)應(yīng)用給系統(tǒng)帶來(lái)的復(fù)雜性作為韌性代價(jià),從用戶(hù)角度出發(fā),綜合考慮韌性增益和代價(jià)進(jìn)行評(píng)估。為解決編排的計(jì)算問(wèn)題,本文提出了一種部分保留的遺傳算法GA-PP,以獲得更好的收斂效果和編排結(jié)果。通過(guò)本文的框架構(gòu)建和算法實(shí)踐,可以得出以下重要發(fā)現(xiàn)和結(jié)論:
(1) 隨著微服務(wù)架構(gòu)的大規(guī)模應(yīng)用,以及系統(tǒng)韌性的重要性日益突出,構(gòu)建一套適用于微服務(wù)架構(gòu)下基于韌性的編排框架顯得越來(lái)越重要。
(2) 對(duì)于開(kāi)發(fā)者而言,緊貼用戶(hù)需求是十分必要的,應(yīng)該從用戶(hù)角度出發(fā),充分考慮用戶(hù)需求。
(3) 對(duì)于韌性系統(tǒng)的編排問(wèn)題而言,其解空間爆炸的特性使得問(wèn)題無(wú)法通過(guò)一般的搜索算法得到解決,必須借助遺傳算法等啟發(fā)式算法進(jìn)行解決。
(4) 傳統(tǒng)的遺傳算法對(duì)于離散數(shù)據(jù)存在難以收斂的問(wèn)題,需要采取其他策略諸如精英保留、精英選擇等,來(lái)使得其不斷收斂。
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2021年11期