戴晨昱
摘? 要:隨著改革開放以來信息化建設(shè)的不斷發(fā)展,傳統(tǒng)電信業(yè)務(wù)的一些缺陷也慢慢顯現(xiàn)出來,例如:資源動(dòng)態(tài)不能完成高效的動(dòng)態(tài)伸縮、遷移部署等問題。為了更高效地完成電信業(yè)務(wù),面對(duì)這些問題,亟需在開發(fā)平臺(tái)中引入微服務(wù)架構(gòu)。隨著相關(guān)技術(shù)人員的不斷努力,最新引進(jìn)的Docker容器技術(shù)便為提出的微服務(wù)理念提供了相應(yīng)的實(shí)現(xiàn)基礎(chǔ)。文章通過對(duì)微服務(wù)架構(gòu)在容器云中應(yīng)用實(shí)踐的分析,重點(diǎn)介紹了微服務(wù)架構(gòu)的主要特點(diǎn)以及應(yīng)用實(shí)踐,希望微服務(wù)架構(gòu)能夠在容器云中得到廣泛應(yīng)用。
關(guān)鍵詞:微服務(wù)架構(gòu);容器云;應(yīng)用實(shí)踐
中圖分類號(hào):TP311.5文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2019)31-0173-02
Abstract: With the continuous development of information construction since the reform and opening up, some defects of traditional telecommunications services have gradually emerged, such as resource dynamics can not complete efficient dynamic scaling, migration deployment and so on. In order to complete telecommunications services more efficiently, in the face of these problems, there is an urgent need to introduce micro-service architecture into the development platform. With the continuous efforts of relevant technicians, the latest introduction of Docker container technology provides the corresponding implementation basis for the proposed concept of micro-service. Through the analysis of the application practice of micro-service architecture in container cloud, this paper focuses on the main characteristics and application practice of micro-service architecture. It is hoped that micro-service architecture can be widely used in container cloud.
Keywords: micro-service architecture; container cloud; application practice
前言
一直以來,面對(duì)電信業(yè)務(wù)的種種問題,電信公司的技術(shù)人員一直在尋找一種更好的方法來重新構(gòu)建電信業(yè)務(wù)系統(tǒng),能夠更好地解決業(yè)務(wù)問題,提高資源的利用率以及開發(fā)運(yùn)維效率。在傳統(tǒng)的電信服務(wù)管理模式中,之前建立的虛擬化云計(jì)算管理平臺(tái)模式以及云PaaS平臺(tái)方式曾經(jīng)也取得過良好的經(jīng)濟(jì)效益。然而隨著信息化技術(shù)的不斷發(fā)展,基礎(chǔ)平臺(tái)的不斷變化,再使用傳統(tǒng)的整體是架構(gòu)開發(fā)系統(tǒng)已經(jīng)不能滿足更多企業(yè)的需求,同時(shí)對(duì)企業(yè)要求的快速開發(fā)、交互以及運(yùn)維的需求更是難以滿足。近年來,隨著微服務(wù)和容器技術(shù)的快速發(fā)展,研發(fā)了一種新的模式更好地解決了企業(yè)所面臨的問題。很多企業(yè)研究發(fā)現(xiàn)細(xì)粒度的微服務(wù)構(gòu)架能夠幫助他們更快地完成軟件交付,正是微服務(wù)架構(gòu)在技術(shù)方面給了技術(shù)人員極大的開發(fā)空間,也使得研發(fā)人員能夠更快地適應(yīng)新的變化。隨著微服務(wù)的不斷發(fā)展,人們對(duì)微服務(wù)的討論也越來越多。同時(shí),對(duì)于微服務(wù)的評(píng)價(jià)也呈現(xiàn)出多樣化以及多元化。對(duì)于不同的使用者來說,關(guān)于微服務(wù)架構(gòu)的評(píng)價(jià)也是多種多樣,其中也會(huì)涉及到微服務(wù)架構(gòu)的一些優(yōu)勢(shì)、劣勢(shì)以及弊端等問題。
1 微服務(wù)架構(gòu)
微服務(wù)作為一種架構(gòu)風(fēng)格,提倡的是將整個(gè)復(fù)雜的應(yīng)用系統(tǒng)按照一定的標(biāo)準(zhǔn)將大系統(tǒng)拆分為多個(gè)細(xì)小的服務(wù)。這樣一來,每個(gè)細(xì)小的服務(wù)只需要專注于一個(gè)單一的業(yè)務(wù)功能,同時(shí)每個(gè)拆分出來的細(xì)小服務(wù)之間都可以獨(dú)立運(yùn)行,通過輕量級(jí)的API來實(shí)現(xiàn)通信,滿足不同使用者的業(yè)務(wù)需求。對(duì)于傳統(tǒng)的經(jīng)典分層架構(gòu)模式來說,業(yè)務(wù)雖然在邏輯基礎(chǔ)上被劃分為多個(gè)模塊和組件,但是這些劃分出來的模塊以及組件還是被當(dāng)作為一個(gè)整體來完成編譯、打包、部署以及運(yùn)維的工作。因此,傳統(tǒng)的經(jīng)典分層架構(gòu)模式從物理部署層面來講還是一個(gè)單塊。而對(duì)于微服務(wù)架構(gòu)模式來說,在這個(gè)架構(gòu)模式中,我們可以發(fā)現(xiàn)很多常用的IDE集成開發(fā)環(huán)境和編程框架。這些都為開發(fā)者提供了更為便捷的開發(fā)、調(diào)試、測(cè)試以及部署等業(yè)務(wù),相關(guān)的開發(fā)設(shè)計(jì)人員也只需要話費(fèi)少量的精力通過工具以及框架快速生成應(yīng)用原型完成服務(wù)分解和分布設(shè)計(jì)的工作。大大提高了相關(guān)設(shè)計(jì)人員的工作效率。然而,隨著微服務(wù)業(yè)務(wù)和功能的不斷累計(jì)擴(kuò)張,所涉及到的應(yīng)用體積也逐漸擴(kuò)大,導(dǎo)致了單塊架構(gòu)難以滿足目前這種快速變化的需求,同時(shí)也出現(xiàn)了一些開發(fā)效率低、交付時(shí)間長(zhǎng)、技術(shù)轉(zhuǎn)型難的問題。
對(duì)于微服務(wù)架構(gòu)模式來說,微服務(wù)架構(gòu)不僅僅是傳統(tǒng)意義上的某個(gè)單一服務(wù),更多的是由多個(gè)單一服務(wù)系統(tǒng)相互組合而成。相關(guān)設(shè)計(jì)人員在實(shí)際的設(shè)計(jì)工作中,為了促使微服務(wù)架構(gòu)的不斷完善和發(fā)展,還需要做到對(duì)微服務(wù)進(jìn)一步的深度開發(fā)。對(duì)于微服務(wù)而言,其本身就存在著多個(gè)功能,這些功能在微服務(wù)架構(gòu)方面,各個(gè)功能之間又是相互獨(dú)立存在的。而對(duì)于系統(tǒng)來說,各個(gè)功能又會(huì)對(duì)整個(gè)系統(tǒng)產(chǎn)生一定的限制作用,保證能在故障發(fā)生時(shí),及時(shí)解決。當(dāng)系統(tǒng)出現(xiàn)故障時(shí),微服務(wù)架構(gòu)會(huì)第一時(shí)間發(fā)出請(qǐng)求,然后通過相關(guān)容器完成進(jìn)一步的拓展工作,隨后所涉及到的相關(guān)軟件就可以被硬件底層分離出來,在整個(gè)處理過程中,有著較快的信息處理速度。在系統(tǒng)開發(fā)以及軟件設(shè)計(jì)的過程中,運(yùn)用微服務(wù)可以更好地實(shí)現(xiàn)對(duì)應(yīng)用的分解工作,促使相關(guān)設(shè)計(jì)人員完成更為合理的部署工作。
2 微服務(wù)架構(gòu)的主要特性
2.1 微服務(wù)架構(gòu)技術(shù)選型靈活
在微服務(wù)架構(gòu)模式下,就能使技術(shù)選型的過程變得更為靈活,與傳統(tǒng)的架構(gòu)模式相比,不會(huì)過于單一。在技術(shù)選型的過程中,相關(guān)設(shè)計(jì)人員完全可以根據(jù)自身設(shè)計(jì)的需求以及服務(wù)要求選擇出更為合理的技術(shù)類別,同時(shí)還可以考慮到當(dāng)前行業(yè)的實(shí)際發(fā)展?fàn)顩r。與傳統(tǒng)架構(gòu)模式相比,微服務(wù)架構(gòu)模式更為簡(jiǎn)潔,并且在技術(shù)升級(jí)的過程中,架構(gòu)的風(fēng)險(xiǎn)也比較低。同時(shí),對(duì)于微服務(wù)架構(gòu)來說也可以在相對(duì)安全的情況下實(shí)現(xiàn)全面重構(gòu),靈活的技術(shù)選型更值得相關(guān)機(jī)構(gòu)的進(jìn)一步研究和應(yīng)用。
2.2 微服務(wù)架構(gòu)復(fù)雜度可控
目前,對(duì)于微服務(wù)架構(gòu)模式來說,整個(gè)微服務(wù)的功能相對(duì)比較簡(jiǎn)單,同時(shí)各個(gè)功能之間又保持著較強(qiáng)的獨(dú)立性。同時(shí),對(duì)于整體的服務(wù)來說還需要進(jìn)行相應(yīng)的分解工作,形成新型服務(wù)。在整個(gè)分解過程中,不但不會(huì)改變整體的服務(wù)功能和服務(wù)標(biāo)準(zhǔn),同時(shí)在分解之后還可以實(shí)現(xiàn)模塊式管理工作以及服務(wù)等。除此之外,在整個(gè)分解過程中也不會(huì)出現(xiàn)較為復(fù)雜的問題或者其他的連帶反應(yīng)??梢哉f,在完成分解工作之后,大大提高了模塊的水平以及質(zhì)量問題,同時(shí)還可以依靠人工完成強(qiáng)化工作,從而大大降低微服務(wù)的復(fù)雜程度,減少微服務(wù)的體積,使得相關(guān)工作人員能夠更加容易的完成微服務(wù)架構(gòu)的維護(hù)工作。
2.3 微服務(wù)架構(gòu)可以實(shí)現(xiàn)獨(dú)立部署
對(duì)于微服務(wù)架構(gòu)模式而言有著獨(dú)立運(yùn)動(dòng)的基礎(chǔ)性條件,可以更好地實(shí)現(xiàn)獨(dú)立部署。同時(shí)在相關(guān)工作人員進(jìn)行微服務(wù)架構(gòu)部署的過程中,可以更好地利用微服務(wù)架構(gòu)獨(dú)立性的特點(diǎn)。對(duì)于傳統(tǒng)的架構(gòu)來說,要想改變?cè)O(shè)定程序中的任何一個(gè)細(xì)節(jié),往往會(huì)改變整個(gè)的架構(gòu)模式,因此就需要相關(guān)技術(shù)人員對(duì)整個(gè)系統(tǒng)進(jìn)行重新構(gòu)建或者部署。而對(duì)于微服務(wù)架構(gòu)來說,則能夠更好地解決這一問題。正因?yàn)槲⒎?wù)架構(gòu)是由多種小型服務(wù)組合而成的,因此當(dāng)某個(gè)小型服務(wù)出現(xiàn)故障時(shí)并不會(huì)對(duì)整個(gè)服務(wù)體系造成較為嚴(yán)重的負(fù)面影響,只需要相關(guān)技術(shù)人員對(duì)出現(xiàn)故障的小型服務(wù)進(jìn)行獨(dú)立部署,不需要對(duì)整個(gè)體系進(jìn)行重新構(gòu)建或者部署。
2.4 微服務(wù)架構(gòu)具備良好的容錯(cuò)性
對(duì)于傳統(tǒng)模式來說,在整個(gè)系統(tǒng)中,如果服務(wù)中某一組應(yīng)用出現(xiàn)故障,將會(huì)對(duì)整個(gè)系統(tǒng)中的其他服務(wù)產(chǎn)生一定的負(fù)面影響,甚至?xí)?dǎo)致整個(gè)系統(tǒng)處于癱瘓狀態(tài)。但是在系統(tǒng)開發(fā)過程中引入微服務(wù)架構(gòu),就可以實(shí)現(xiàn)各個(gè)功能模塊之間的獨(dú)立存在,這樣一來,當(dāng)某一模塊出現(xiàn)故障時(shí),也不會(huì)影響其他功能模塊的正常運(yùn)行。因此微服務(wù)架構(gòu)是一種更加先進(jìn)科學(xué)的架構(gòu)模式,也有著較高的容錯(cuò)性。因此,只有在容器云中廣泛應(yīng)用到微服務(wù)架構(gòu)模式,才能更好地提升系統(tǒng)的安全性和可靠性,打造一個(gè)更加安全穩(wěn)定的系統(tǒng)。
3 微服務(wù)架構(gòu)在容器云中的應(yīng)用實(shí)踐
對(duì)于微服務(wù)架構(gòu)來說,與傳統(tǒng)架構(gòu)相比雖然在很多方面有著較多的優(yōu)勢(shì),但是在實(shí)際的服務(wù)部署和構(gòu)建過程中還存在著較大的困難。因此,為了更好地構(gòu)建微服務(wù)架構(gòu),相關(guān)技術(shù)人員還需要將微服務(wù)架構(gòu)和容器云進(jìn)行結(jié)合,采用有效的方式將微服務(wù)架構(gòu)應(yīng)用到容器云技術(shù)中。同時(shí)容器云的質(zhì)量也較輕,如果微服務(wù)能夠?qū)崿F(xiàn)虛擬化運(yùn)行,那么整個(gè)系統(tǒng)就可以獲得良好的載體來完成穩(wěn)定運(yùn)行,同時(shí)也能夠簡(jiǎn)單的完成微服務(wù)架構(gòu)的部署和架構(gòu)工作,實(shí)現(xiàn)共享。正因?yàn)樵谌萜髟浦懈菀讓?shí)現(xiàn)服務(wù)部署和構(gòu)建工作,對(duì)于軟件的開發(fā)也有著十分重要的意義。
3.1 創(chuàng)建
在容器云的平臺(tái)中,使用者可以根據(jù)自身需求創(chuàng)建微服務(wù)項(xiàng)目,同時(shí)所創(chuàng)建的項(xiàng)目還可以和代碼倉(cāng)庫(kù)進(jìn)行關(guān)聯(lián),選擇代碼項(xiàng)目完成創(chuàng)建。在創(chuàng)建過程中,相關(guān)設(shè)計(jì)人員在提交代碼時(shí),系統(tǒng)本身能夠很快的將儲(chǔ)存在代碼倉(cāng)庫(kù)中的微服務(wù)程序構(gòu)建成新的容器鏡像,然后再通過集成自動(dòng)化的驗(yàn)證工作,將其轉(zhuǎn)化為可以完成部署的容器鏡像,使用者也可以將這個(gè)微服務(wù)部署到容器云平臺(tái)上。
3.2 集成
在容器云平臺(tái)的鏡像倉(cāng)庫(kù)中,不僅包含了來自docker官方以及社區(qū)的鏡像,還包括非官方平臺(tái)的任意鏡像源。使用者完全可以按照自己的實(shí)際需求,進(jìn)行自由組合,利用各種容器化微服務(wù),完成集成應(yīng)用。
3.3 部署
在容器云平臺(tái)上面還可以實(shí)現(xiàn)快速靈活的部署工作,使用者可以利用項(xiàng)目鏡像或者非官方鏡像完成部署工作,還可以一次性部署多個(gè)鏡像同時(shí)為每個(gè)鏡像設(shè)定特定的內(nèi)存占有。整個(gè)配置部署工作從開始到啟動(dòng)也只需要幾分鐘。同時(shí),該平臺(tái)還支持升級(jí),并且每次升級(jí)之后都會(huì)自動(dòng)生成一個(gè)部署版本,兩個(gè)版本之間還可以實(shí)現(xiàn)回滾,在部署出現(xiàn)異常的情況下還可以實(shí)現(xiàn)制定版本完成恢復(fù)。
3.4 運(yùn)維
在微服務(wù)的架構(gòu)模式中,由于存在著較多的獨(dú)立進(jìn)程。因此,如何完成部署之后的運(yùn)營(yíng)、管理工作,也成為了實(shí)際工作中的一個(gè)難點(diǎn)。在容器云中,是通過主機(jī)管理、主機(jī)監(jiān)控屏蔽用戶來完成屏蔽底層云主機(jī)和基礎(chǔ)架構(gòu)的運(yùn)維工作,同時(shí)為了降低使用者的運(yùn)維成本和難度,容器云通過容器編排、自動(dòng)回復(fù)以及監(jiān)控日志等高級(jí)服務(wù),來完成平臺(tái)上的微服務(wù)智能托管工作。
4 從傳統(tǒng)單體式架構(gòu)遷移到微服務(wù)架構(gòu)的策略
首先將不需要大規(guī)模重寫代碼,采用逐步遷移單體應(yīng)用的方式,生成微服務(wù)應(yīng)用。隨著時(shí)間推移,單體式應(yīng)用將逐漸成為微服務(wù)架構(gòu)的一部分。然后再將前端和后端進(jìn)行分離,同時(shí)在單體應(yīng)用中抽取特定的模塊成為獨(dú)立微服務(wù)。
5 結(jié)束語
目前來說,將微服務(wù)架構(gòu)應(yīng)用到容器云中有著十分重要的作用,同時(shí)也已經(jīng)成為了軟件和系統(tǒng)開發(fā)的新方式。在軟件開發(fā)的過程中,應(yīng)用到微服務(wù)架構(gòu),將承載更多的業(yè)務(wù),同時(shí)也有著更為靈活的技術(shù)選型,還可以實(shí)現(xiàn)獨(dú)立部署。因此,在容器云中應(yīng)用到微服務(wù)架構(gòu),將是未來發(fā)展的趨勢(shì)。
參考文獻(xiàn):
[1]譚云婷,熊珊.基于微服務(wù)架構(gòu)的警用地理信息系統(tǒng)云化設(shè)計(jì)思路[J].移動(dòng)通信,2019,43(07):47-54.
[2]劉宇博.基于云計(jì)算的人工智能訓(xùn)練平臺(tái)的研究與設(shè)計(jì)[D].北京郵電大學(xué),2019.
[3]彭詩(shī)杰.基于微服務(wù)體系結(jié)構(gòu)和面向多地質(zhì)主題的數(shù)據(jù)云服務(wù)關(guān)鍵技術(shù)研究[D].中國(guó)地質(zhì)大學(xué),2017.