Welcome神灯开户网址為夢而年輕!

首頁 > 雲計算 > 正文

雲原生存儲需要緊耦合容器和微服務的三大原因

2019-05-20 11:50:09  來源:雲技術

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





責編:pingxiaoli