劉 超 ,宋 健 ,崔 杰 ,馬 野 ,王宇軒
(1國網(wǎng)吉林省電力有限公司信息通信公司 吉林 長春 130000)
(2國網(wǎng)吉林省電力有限公司 吉林 長春 130000)
云原生技術(shù)能夠充分發(fā)揮云平臺的彈性與分布式技術(shù)的優(yōu)勢,從而實(shí)現(xiàn)快速部署任務(wù)細(xì)化項(xiàng)目結(jié)構(gòu)的目的。但是該技術(shù)在享受快速部署新業(yè)務(wù)能力的同時(shí),還需要承擔(dān)嚴(yán)重的業(yè)務(wù)風(fēng)險(xiǎn)承受能力,在出現(xiàn)錯(cuò)誤與解決錯(cuò)誤的過程中同樣會消耗大量工作時(shí)間,為企業(yè)帶來額外的業(yè)務(wù)勞動(dòng)。對此,為提高云原生應(yīng)用平臺在實(shí)際應(yīng)用中的效率,本文將進(jìn)一步對云原生平臺下數(shù)據(jù)接入管理問題進(jìn)行研究,通過融合云原生相關(guān)技術(shù)對其進(jìn)行改造,以期提高該技術(shù)在實(shí)際應(yīng)用中的應(yīng)用效率。
高效數(shù)據(jù)訪問層的組成結(jié)構(gòu)主要包括:監(jiān)控管理模塊、通信協(xié)議模塊、結(jié)果集處理模塊、路由解析模塊、SQL執(zhí)行模塊以及數(shù)據(jù)庫鏈接模塊。各模塊間的信息流通見圖1。
其中,監(jiān)控管理模塊主要承擔(dān)與高效數(shù)據(jù)訪問層的連接,并對內(nèi)存資源等數(shù)據(jù)進(jìn)行監(jiān)控與管理,實(shí)現(xiàn)方式主要以管理命令為主,對輪詢事件以判斷是否需要釋放資源存儲空間。通信協(xié)議模塊主要負(fù)責(zé)系統(tǒng)底層的收發(fā)數(shù)據(jù)以及各任務(wù)線程的回調(diào)處理,使用Poractor模式實(shí)現(xiàn)提高效率的目的[1]。結(jié)果集處理模塊負(fù)責(zé)對各云端跨分片任務(wù)產(chǎn)生的結(jié)果進(jìn)行收集和整理,因云原生數(shù)據(jù)具備跨云遷移的能力,所以需要對跨分片產(chǎn)生數(shù)據(jù)進(jìn)行匯總管理。路由解析模塊承擔(dān)系統(tǒng)對SQL命令的解析,解析內(nèi)容包括MySQL協(xié)議中引用到該模塊的SQL語句、類型以及關(guān)鍵字等,以此生成最優(yōu)路徑結(jié)合路由計(jì)算單元進(jìn)行計(jì)算。SQL執(zhí)行模塊承擔(dān)連接池與對應(yīng)目標(biāo)的連接,在與目標(biāo)連接之后完成信息同步,結(jié)合路由解析模塊的解析結(jié)果,將SQL命令語句下至對應(yīng)節(jié)點(diǎn)執(zhí)行。數(shù)據(jù)庫連接模塊承擔(dān)系統(tǒng)產(chǎn)生數(shù)據(jù)的存儲、維護(hù)和管理[2]。
數(shù)據(jù)訪問層的主要流程由結(jié)構(gòu)下通信協(xié)議模塊開始,由回調(diào)線程對讀寫事件的具體內(nèi)容進(jìn)行讀寫處理,此時(shí)管理模塊會調(diào)動(dòng)定時(shí)器對事件資源進(jìn)行檢查并對判斷完成的事件進(jìn)行資源釋放[3]??蛻舳藢用嬗捎脩粽{(diào)用虛擬IP地址鏈接登錄到負(fù)載均衡器,由負(fù)載均衡器結(jié)合預(yù)制算法鏈接到事件對應(yīng)的數(shù)據(jù)訪問層,此時(shí)數(shù)據(jù)訪問層的活動(dòng)將交由NAS盤管理,并在事件鏈接到對應(yīng)的數(shù)據(jù)庫后將結(jié)果返回給客戶端[4],詳細(xì)流程見圖2。
該結(jié)構(gòu)下后端數(shù)據(jù)庫的返回?cái)?shù)據(jù)會通過相關(guān)協(xié)議解析后重新發(fā)送至回調(diào)模塊,若返回過程涵蓋多個(gè)節(jié)點(diǎn)數(shù)據(jù),則返回的執(zhí)行結(jié)果會先進(jìn)行匯集和預(yù)排序,然后將數(shù)據(jù)經(jīng)由通信協(xié)議模塊反饋至客戶端。
雖然有關(guān)云原生相關(guān)技術(shù)的研究已經(jīng)初具成果,但是從云原生發(fā)展角度來看,該項(xiàng)技術(shù)仍處于研究的初級階段,因此通過對云原生應(yīng)用流行度的調(diào)查分析,可明確現(xiàn)階段云原生用戶的喜好,以此設(shè)計(jì)更加簡潔的數(shù)據(jù)訪問層結(jié)構(gòu)框架,并為云原生應(yīng)用平臺的能耗提供進(jìn)行判斷依據(jù)。由此可認(rèn)為云原生流行程度越高,各功能方向的用戶偏好性就越強(qiáng),用戶訪問云原生應(yīng)用平臺的次數(shù)便會增加[5],所造成的數(shù)據(jù)訪問層功率負(fù)荷就越高。因此,在考慮云原生平臺應(yīng)用可造性之前,應(yīng)當(dāng)引入應(yīng)用流行度指標(biāo),以此使應(yīng)用可造性結(jié)果能夠更加貼合云原生發(fā)展初期的微服務(wù)租用比例,進(jìn)而提升其結(jié)構(gòu)變化產(chǎn)生的收益。由此,可假設(shè)在某環(huán)境下存在N個(gè)不同應(yīng)用,應(yīng)用集合可用“A”表示,則第n個(gè)應(yīng)用在時(shí)刻下的流行度可表示為“Dn”。因應(yīng)用不同會使得不同時(shí)刻下存在不同的流行度,若云原生應(yīng)用供應(yīng)商的應(yīng)用集可結(jié)合應(yīng)用的流行度進(jìn)行排列,則用戶對某項(xiàng)應(yīng)用發(fā)送需求請求的概率為“DN”,且其服從Zipf分布[6]??紤]到云原生應(yīng)用的發(fā)展時(shí)間,本文將在DN的計(jì)算中引入調(diào)節(jié)因子“θ”,以此方式平衡發(fā)展較早云原生應(yīng)用對用戶產(chǎn)生的影響,進(jìn)而穩(wěn)定用戶偏好和訪問次數(shù)與頻率。DN的表達(dá)式為:
上式中:α表示云原生應(yīng)用在時(shí)段下的流行度指數(shù)。
結(jié)合上述分析可得到該地區(qū)云原生應(yīng)用的用戶偏好性,用戶偏好性的大小可直接影響云原生結(jié)構(gòu)所發(fā)揮的效益,即若用戶對某項(xiàng)應(yīng)用的偏好性較低,則該地區(qū)云原生應(yīng)用所產(chǎn)生的收益便會不斷下降,由此會造成偏好性較低應(yīng)用閑置占用系統(tǒng)內(nèi)存,而偏好性較高的應(yīng)用存在系統(tǒng)負(fù)荷工作的情況[7]。因此,為提高云原生應(yīng)用的服務(wù)質(zhì)量,本文將融合當(dāng)?shù)赜脩羝眯灾笜?biāo)作為可造性評價(jià)的衡量標(biāo)準(zhǔn),為降低系統(tǒng)能耗并提高數(shù)據(jù)訪問層數(shù)據(jù)調(diào)用效率奠定基礎(chǔ)。用戶偏好性受用戶體驗(yàn)水平、應(yīng)用時(shí)延、能耗以及滿足需求程度等多方面因素影響。對此,若設(shè)每個(gè)獨(dú)立應(yīng)用均存在M個(gè)評價(jià)指標(biāo),且所有評價(jià)指標(biāo)皆存在R個(gè)離散取值,由此可構(gòu)建應(yīng)用所對應(yīng)的偏好矩陣“G”:
上式中:gmr代表用戶對某個(gè)應(yīng)用特性m的偏好程度,gmr∈ [0,1]。
若用0表示用戶對某項(xiàng)特性的反感,1表用戶喜歡某項(xiàng)特性,則m∈{1,2,…,M},r∈{1,2…,R}。W=[W1W2…WM],表示評價(jià)指標(biāo)M的權(quán)重值矩陣,則用戶對云原生下第n個(gè)應(yīng)用的偏好性為:
上式中:ε表示用戶的偏好性影響因子;λ表示云原生應(yīng)用商對某項(xiàng)微服務(wù)給出的租用比例。
若設(shè)“Q”為評價(jià)指標(biāo)的取值數(shù)量,且Q能夠自行設(shè)定,則結(jié)合大數(shù)定律可認(rèn)為當(dāng)Q趨于無窮大時(shí),存在收斂常數(shù)值“Bn”,即:
用能耗表示云原生應(yīng)用平臺在應(yīng)用中可造性的取舍值,即取舍值越大表示改造后的云原生應(yīng)用平臺仍存在數(shù)據(jù)資源訪問不均的問題,需要重新進(jìn)行改進(jìn),取舍值越小表示改造后云原生應(yīng)用平臺數(shù)據(jù)訪問均勻,數(shù)據(jù)調(diào)用響應(yīng)率高。從云原生應(yīng)用平臺的開發(fā)角度來看,開發(fā)方向主要以微服務(wù)開發(fā)為主,并以維持云原生應(yīng)用平臺穩(wěn)定運(yùn)行為工作方向,推進(jìn)該技術(shù)的發(fā)展。由此,可將云原生應(yīng)用平臺的能耗用運(yùn)行能耗Er和微服務(wù)開發(fā)能耗Ed進(jìn)行代替,則云原生應(yīng)用平臺的能耗總量為:
上式中:emr表示單位時(shí)間內(nèi)微服務(wù)運(yùn)行產(chǎn)生的能耗;etr表示單位時(shí)間內(nèi)傳統(tǒng)應(yīng)用運(yùn)行產(chǎn)生的能耗;tdev表示微服務(wù)開發(fā)的時(shí)間;trun表示應(yīng)用運(yùn)行的時(shí)間;eidle表示系統(tǒng)空閑時(shí)應(yīng)用待機(jī)所帶來的能耗;Ttotal表示云原生平臺應(yīng)用開發(fā)與運(yùn)行的總耗時(shí)。
無狀態(tài)應(yīng)用(Stateless Application)指不會在會話中保存下次會話中需要的客戶端數(shù)據(jù),每個(gè)會話都像首次執(zhí)行一樣,不會依賴之前的數(shù)據(jù)響應(yīng),其使分布式水平擴(kuò)展成為可能。應(yīng)用無狀態(tài)化的優(yōu)勢在于能在應(yīng)用平臺出現(xiàn)故障時(shí)輕松部署,并且能自由的水平擴(kuò)展來適應(yīng)負(fù)載,在組建之間也可通過API進(jìn)行通信。云原生應(yīng)用平臺中微服務(wù)是重要組成元素之一,無狀態(tài)應(yīng)用可以很好地結(jié)合微服務(wù)來完成各項(xiàng)服務(wù)[8]。
根據(jù)數(shù)據(jù)的使用頻度可分為熱數(shù)據(jù)、溫?cái)?shù)據(jù)、冷數(shù)據(jù),熱數(shù)據(jù)一般指半年以內(nèi)的數(shù)據(jù),此類數(shù)據(jù)經(jīng)常會被用戶查詢,適合放在數(shù)據(jù)庫中存儲。在實(shí)際的應(yīng)用中,傳統(tǒng)的方式是在程序啟動(dòng)時(shí)調(diào)用熱數(shù)據(jù),從而提高數(shù)據(jù)的訪問速度,但由于數(shù)據(jù)的量不受控制,若數(shù)據(jù)量過大,可能就會導(dǎo)致程序啟動(dòng)過慢,影響程序的使用感。基于此,云原生應(yīng)用平臺將熱數(shù)據(jù)放到緩存中,一方面減少了數(shù)據(jù)庫的存儲量,另一方面能提高程序的啟動(dòng)速度,使程序的可用性提高。
應(yīng)用容器化之后需進(jìn)行相應(yīng)的網(wǎng)絡(luò)梳理和規(guī)劃,用以保證其正常運(yùn)行。在進(jìn)行網(wǎng)絡(luò)梳理時(shí),首先應(yīng)根據(jù)容器平臺的情況將其進(jìn)行分類,通??煞譃楣芾砑簃aster、計(jì)算集群slave、系統(tǒng)服務(wù)集群(包括各種日志、監(jiān)控、鏡像倉庫等),根據(jù)網(wǎng)絡(luò)的使用,可將管理集群和系統(tǒng)服務(wù)集群劃入管理IP網(wǎng)段,將計(jì)算機(jī)群劃入業(yè)務(wù)IP網(wǎng)段,通過區(qū)分不同集群所處的IP網(wǎng)段,對各組件的端口進(jìn)行規(guī)劃,從而保證網(wǎng)絡(luò)運(yùn)行通暢。同時(shí),針對不同應(yīng)用的特性,應(yīng)選擇不同的網(wǎng)絡(luò)模式,從而使其能提供更好的服務(wù)。
云原生下docker容器服務(wù)器集群的響應(yīng)性能可影響其平臺的延時(shí)波動(dòng),可通過動(dòng)態(tài)負(fù)載容器服務(wù)器算法給予優(yōu)化。該方法以WRR負(fù)載算法為基礎(chǔ),通過融合實(shí)時(shí)權(quán)值理念彌補(bǔ)WRR算法權(quán)值給定上的缺失。通過優(yōu)化容器連接數(shù)、CPU、內(nèi)存、網(wǎng)絡(luò)IO以及平均相應(yīng)的方式得出docker的實(shí)時(shí)權(quán)值,由此得到docker容器服務(wù)器的最優(yōu)ID,以此承擔(dān)云原生應(yīng)用活動(dòng)的負(fù)載。通過分?jǐn)偭髁康姆绞骄庠L問造成數(shù)據(jù)流的過載問題,利用容器服務(wù)器和算法的彈性優(yōu)勢吸納服務(wù)器集群并發(fā)產(chǎn)生的訪問壓力。由此,可在用戶偏好集中在某一活動(dòng),且無法通過上述方法給予分量時(shí),維持云原生平臺應(yīng)用的響應(yīng)效率。
考慮到云原生平臺的特殊性,在平臺下各應(yīng)用容器化之后應(yīng)當(dāng)保證每個(gè)服務(wù)只承擔(dān)一個(gè)服務(wù)內(nèi)容。避免采用IP的方式,因服務(wù)與其他目標(biāo)服務(wù)進(jìn)行通訊會受到容器IP不固定因素影響而出現(xiàn)無法通訊的情況。對此,本文建議應(yīng)當(dāng)在程序中通過使用域名的方式代替IP地址,并借助Kubernetes的負(fù)債均衡給予優(yōu)化。在系統(tǒng)的監(jiān)聽固定端口方面,對于一個(gè)標(biāo)準(zhǔn)的服務(wù)應(yīng)當(dāng)只為其提供一個(gè)對外的端口,因部分服務(wù)在運(yùn)行時(shí)會自主產(chǎn)生一些對外的端口,并且產(chǎn)生概率具有較高的隨機(jī)性,會對之后的平臺管理造成極大地困擾。在通信協(xié)議方面應(yīng)當(dāng)盡量采用TCP和HTTP協(xié)議進(jìn)行交互,而避免使用EJB調(diào)用t3協(xié)議,進(jìn)而避免無法借助負(fù)載均衡器的方式進(jìn)行有效的負(fù)載均衡。對此,本文建議使用TCP或HTTP協(xié)議的方式進(jìn)行通信,以此提高使用負(fù)載均衡器的有效負(fù)載均衡效果。
為驗(yàn)證上述改造架構(gòu)的可行性與實(shí)用性,將構(gòu)建仿真地域云原生應(yīng)用平臺的實(shí)驗(yàn)環(huán)境,主體架構(gòu)使用當(dāng)?shù)卦薪Y(jié)構(gòu)框架,選取某階段下用戶實(shí)際需求作為評價(jià)參數(shù)。測試實(shí)驗(yàn)主要以端到端形式為主,通過仿真模擬外圍環(huán)境發(fā)起的需求相應(yīng)數(shù)據(jù)調(diào)用測試環(huán)境,驗(yàn)證改造后訪問層的解析效率,進(jìn)而判斷改造后數(shù)據(jù)訪問層的實(shí)際能力。為彰顯本文所提方法的優(yōu)化效果,本文將以普通數(shù)據(jù)庫作為實(shí)驗(yàn)對照,將兩種方法置于相同實(shí)驗(yàn)環(huán)境下進(jìn)行測試,以需求響應(yīng)時(shí)間為判斷標(biāo)準(zhǔn),測試結(jié)果見表1和表2。
表1 本文所提方法的性能測試結(jié)果
表2 普通數(shù)據(jù)庫的性能測試結(jié)果
由上表1和表2中數(shù)據(jù)可知,云原生平臺應(yīng)用數(shù)據(jù)訪問層改造后響應(yīng)效率較高,當(dāng)并發(fā)數(shù)增加值90時(shí),平均請求反應(yīng)時(shí)間仍未超過95 ms,而普通數(shù)據(jù)庫的需求命令數(shù)據(jù)調(diào)用效率在并發(fā)數(shù)處于40時(shí)便超過95 ms。將測試數(shù)據(jù)轉(zhuǎn)化為折線圖見圖3。
由上圖數(shù)據(jù)可看出,兩種方法在并發(fā)數(shù)增加至60時(shí)整體性能處于相對穩(wěn)定狀態(tài),改造后的數(shù)據(jù)訪問層需求響應(yīng)速率性能是普通數(shù)據(jù)庫性能的1.3倍。由此可證明本文所提方法具有較高的實(shí)用性,可應(yīng)用于云原生應(yīng)用平臺的優(yōu)化項(xiàng)目當(dāng)中。
綜上所述,本文通過對云原生平臺應(yīng)用可造性的研究,提高其數(shù)據(jù)訪問層的響應(yīng)速率。結(jié)合現(xiàn)階段云原生應(yīng)用現(xiàn)狀引入應(yīng)用流行度、用戶偏好性和應(yīng)用能耗等改造指標(biāo),通過對任務(wù)需求效率分析,明確空間下云原生平臺應(yīng)用數(shù)據(jù)調(diào)用效率的影響因素,以此分析解決改造后云原生平臺出現(xiàn)的異常情況。從實(shí)驗(yàn)結(jié)果可看出,本文所提方法能夠有效提高系統(tǒng)數(shù)據(jù)調(diào)用的響應(yīng)效率,證明所提方法具有較高的可行性與實(shí)用性,能夠?yàn)橄嚓P(guān)人員或單位提供參考。