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