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