
例如,根據 Cloud Native Computing Foundation (CNCF)的客戶(hù)調查,73%的受訪(fǎng)客戶(hù)在生成環(huán)境中運行容器應用程序,其余27%的客戶(hù)計劃在未來(lái)使用容器。
除了調查數據,以及媒體相關(guān)報道的激增(盡管有些人認為Kubernetes有炒作的成分),但毫無(wú)疑問(wèn)容器是基礎設施虛擬化的下一波浪潮。這是因為容器化有很多顯而易見(jiàn)的好處:應用程序的可移植性、已于部署配置、更好的可伸縮性、基礎設施靈活性、更高的生產(chǎn)力、持續集成以及更高效的資源利用。
與此同時(shí),應用程序的系統架構也發(fā)生演變,從數十年前的面向服務(wù)架構(SOA)發(fā)展到微服務(wù)體系架構。運用微服務(wù)架構,應用程序被構建為使用定義良好的接口,來(lái)進(jìn)行通信的服務(wù)組件。每個(gè)微服務(wù)組件都是可獨立部署和可伸縮的。基于微服務(wù)應用程序的設計,考慮了分布式協(xié)調、分布式事務(wù)控制、基礎設施自動(dòng)化、故障移除和彈性伸縮。
微服務(wù)架構與容器緊密關(guān)聯(lián)也不是巧合,因為容器化在不同的微服務(wù)組件之間提供了明顯自然的邊界。并且,使用容器技術(shù)并不要求應用程序必須是微服務(wù)架構,巨石型應用也可以被容器化,然后一個(gè)容器會(huì )代表一個(gè)整體,或者單實(shí)例的可運行應用。
單一容器化應用的一個(gè)缺點(diǎn)是,由于應用程序的組件完全耦合在一起,所以即便是做很小部分的改動(dòng),也需要對整個(gè)容器進(jìn)行重新構建和部署。隨著(zhù)時(shí)間的推移,通常很難在單體模型中維持良好的模塊化結構,如果應用程序中的某個(gè)部分需要擴容,那么整個(gè)應用必須一起擴容,在運維角度看這是低效的。
話(huà)句話(huà)說(shuō),這是眾所周知的:許多企業(yè)和開(kāi)發(fā)人員已經(jīng)發(fā)現,如果不同時(shí)采用微服務(wù)架構,就不可能完全享受到遷移到容器的好處。采用基于容器的微服務(wù)應用體系,帶來(lái)的相互增強的好處是非常顯著(zhù)的,缺一不可。理想情況下,任何支持這種現代化工作的工具都將會(huì )趨于類(lèi)似和全面。
一、存儲和數據管理
靜態(tài)應用程序是容器初始應用的主要驅動(dòng),通常由微服務(wù)組件組成,充當著(zhù)未使用容器動(dòng)態(tài)后端應用的前端。要實(shí)現基于容器的基礎設施,需將靜態(tài)和動(dòng)態(tài)的應用程序都遷移至容器。要實(shí)現這一點(diǎn),則需要考慮容器環(huán)境中存儲和數據管理方面的挑戰,以便于更有效的實(shí)現容器化。
現在,我們正處于容器化生產(chǎn)部署中動(dòng)態(tài)應用如何進(jìn)行存儲和管理的建設階段。許多人依賴(lài)于外部,筒倉式存儲設備不是云/容器環(huán)境的組成部分,但也已經(jīng)發(fā)展成熟,而且提供了豐富的數據管理功能,如故障恢復、數據還原、格式化(與鏡像相反)和存儲分層。
要充分體會(huì )到容器化的好處,存儲基礎設施必須與相同環(huán)境中的容器化應用程序運行在相同的環(huán)境中。這將大大的簡(jiǎn)化管理、降低成本,提高資源利用率。達到這一點(diǎn)需要一種新的方法。
二、重構存儲架構
存儲體系一直想要實(shí)現分離數據面板和控制面板,以允許數據(數據面板)和元數據(控制平臺)流的獨立伸縮。此外,分離平面允許有控制面板驅動(dòng)數據管理操作,如分層、數據遷移或快照,而不會(huì )干擾數據路徑活動(dòng)。
到為目前為止,存儲還未實(shí)現有效的分離控制面板和數據面板,標準繁瑣、附加的增量特性和非最優(yōu)數據流是需要克服的障礙。然而,容器和微服務(wù)的出現為存儲領(lǐng)域提供了一個(gè)機會(huì ),可以把它們拋諸腦后,重新開(kāi)始。
三、探索微服務(wù)
微服務(wù)架構原則能夠很自然地應用到容器本機存儲系統設計中。例如,控制和數據路徑分離就很好的符合“高內聚、低耦合”微服務(wù)設計原則。
基于微服務(wù)的設計可能是什么樣子的?它將帶來(lái)什么好處?
通過(guò)分離控制平臺和數據平臺,基于微服務(wù)的容器本地存儲解決方案將具有不同的控制實(shí)體(元數據)和數據服務(wù),它們以高度可擴展、分布式的方法,獨立聯(lián)合地提供服務(wù)(IO和數據管理),類(lèi)似于基于微服務(wù)的應用程序一樣。可以說(shuō)使用微服務(wù)實(shí)現存儲系統不僅可以實(shí)現,而且可以強制分離控制平臺和數據面板。
- 容量規劃與性能擴展:基于微服務(wù)的容器本地存儲系統能夠有效地分離數據和控制路徑,它將提供多個(gè)維度的伸縮性,容量、帶寬、IOPS,以允許容量和性能根據需要進(jìn)行彈性伸縮。不應該低估縮減資源的影響,因為這樣靈活性可以資源在應用之間高效共享。
- 彈性:由于微服務(wù)可以自動(dòng)失敗后進(jìn)行重新啟動(dòng),因此這種類(lèi)型的設計提升了應用的彈性變化。
- 數據管理:許多數據管理操作可以?xún)H有元數據微服務(wù)執行,而不影響數據面板。在其他需要操作數據的情況下,可以以最小化性能問(wèn)題對元數據和數據的操作進(jìn)行解耦,提高效率。
- 存儲設備支持:由于微服務(wù)是獨立的,并且運用定義明確的協(xié)議進(jìn)行通信,因此該系統能夠實(shí)現多種風(fēng)格的數據面板微服務(wù),驅動(dòng)多種設備類(lèi)型。
- 分層:通過(guò)控制這些設備類(lèi)型之間的分層操作,元數據微服務(wù)可以提供進(jìn)一步的作用,從而更好的實(shí)現成本結構和最佳數據結構。
- 數據遷移:一旦數據和元數據存儲被離散的微服務(wù)單獨維護,多個(gè)元數據條目可能引用一個(gè)公共數據塊,那么文件或邏輯卷等對象可以被虛擬化為輕量級的、元數據專(zhuān)用的對象,這些對象引用的公共數據池,可能跨越不用的設備類(lèi)型甚至地理位置。這位混合云或者多云的快速部署帶來(lái)了有益的數據遷移能力。
- 存儲協(xié)議和應用支持:將應用程序前端做為微服務(wù),它也可以以多種方式實(shí)現,支持不同的存儲訪(fǎng)問(wèn)協(xié)議,甚至于特定于應用程序的訪(fǎng)問(wèn),從而提供更大的靈活性。
雖然基于微服務(wù)的容器本地存儲系統可以提供應用程序和容器所需的靈活性、可伸縮性和可移植性,但是還需要考慮其他問(wèn)題。例如,對于需要高并發(fā)的分布式系統來(lái)說(shuō),維護強一致性是極其困難的,而對于許多應用程序來(lái)說(shuō),最終一致性并不是一個(gè)選項。雖然這是一個(gè)巨大的挑戰,但也不是不可能解決,而且這不應該妨礙對基于微服務(wù)架構的追求。
四、結論
微服務(wù)和容器已經(jīng)為當前的業(yè)務(wù)貢獻了重要的價(jià)值,隨著(zhù)越來(lái)越多的應用程序實(shí)現云原生開(kāi)發(fā),支持這些應用程序的基礎設施也將得到發(fā)展。基于微服務(wù)的容器本地存儲方法的靈活性和可擴展性,可以幫助制定滿(mǎn)足現代應用程序需求的解決方案,同時(shí)消除基礎設施的限制。要真正實(shí)現容器帶來(lái)的應用程序現代化的潛力,我們需要采用微服務(wù)方法,消除存儲解決方案的限制。
原文鏈接:https://thenewstack.io/why-cloud-native-storage-requires-tightly-coupled-containers-and-microservices/
原文鏈接:https://thenewstack.io/why-cloud-native-storage-requires-tightly-coupled-containers-and-microservices/