摘要:論文認為,繼面向對象編程所引領的軟件開發革命之后,如今似乎在分布式系統開發中也發生著一場相似的革命基于容器化組件構建的微服務架構。容器的一大獨特優勢在于良好的邊界恰好適合應用開發的隔離性。這似乎是對編程藝術的重申。
這是由Kubernetes創始人發表的論文,總結了基于容器的分布式系統的設計模式,讓我們來一覽究竟吧。
論文認為,繼OOP(面向對象編程)所引領的軟件開發革命之后,如今似乎在分布式系統開發中也發生著一場相似的革命:基于容器化組件構建的微服務架構。
容器的一大獨特優勢在于:良好的邊界——恰好適合應用開發的隔離性。
作者總結了一些設計模式,并且分為三大類型:
Single-container management patterns容器的傳統接口有run(), pause(), stop()
可以有更豐富的接口
“向上看”的視角:metrics, config, logs等,通常用HTTP+JSON來暴露
“向下看”的視角:lifecycle(提供生命周期回調鉤子), priority(為了空出資源給高優先級任務,甚至能提前關掉低優先級任務),"replicate yourself"(迅速創建一組相同的服務容器來應對突發流量)
接下來兩類都依賴Pod抽象(Kubernetes有提供),因為都涉及容器編排了,而且已進入Sevice Mesh這門新概念的范圍。
Single-node, multi-container application patterns多個容器組成一個原子單位
Sidecar模式例如:web server + log collector
前提是容器間能共享“存儲卷”之類的資源
為什么要用多容器,而非容器內多進程?資源審計和分配:這點很重要,雖然多進程也勉強能做,但多容器做得更成熟
職責劃分、解耦
重用:如果一個容器包含多種進程,就笨重而難以重用了,小巧的單用途容器更適合重用
故障隔離:重啟一個容器,比修復容器內的故障進程要容易多了
交付隔離:每個容器能獨立地升級/降級
Ambassador模式類似于OOP的proxy模式
例如:memcache + twemproxy,考慮到本分類為單結點多容器模式,因此twemproxy要和其中1個memcache部署到同一結點上
前提是容器間能共享localhost網絡接口
Adapter模式例如:統一的metrics接口(JMX,statsd等統一收集到HTTP端點)
可以免于修改已有的容器(因為已經以容器作為軟件開發的單位了)
Multi-node application patterns Leader election模式領導者選舉這件事已經有很多庫了,但往往對編程語言有所限定
容器則對編程語言中立
容器只需構建一次就能重用,高度貫徹了抽象和封裝的原則
Work queue模式傳統的工作隊列框架對編程語言有所限定
實現了run(), mount()接口的容器,可作為“工作”的抽象
基于此可打造一種通用的工作隊列框架(可能是Kubernetes的未來方向)
雖然沒給例子,但有些類似Mesos的可插拔調度器架構
Scatter/gather模式這樣傳遞請求:client->root->server
root結點把請求分發給很多servers,再把它們的響應匯總到一起,交給client
例如:搜索引擎,分布式查詢引擎
多個leaf容器+1個merge容器,就能實現通用的scatter/gather框架(可能也是Kubernetes的未來方向)
結語總之,論文將容器視為軟件開發的一等公民,像OOP的對象一樣重要,提倡單用途可組合可重用的容器。
這似乎是對UNIX編程藝術的重申。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/27733.html
摘要:論文認為,繼面向對象編程所引領的軟件開發革命之后,如今似乎在分布式系統開發中也發生著一場相似的革命基于容器化組件構建的微服務架構。容器的一大獨特優勢在于良好的邊界恰好適合應用開發的隔離性。這似乎是對編程藝術的重申。 這是由Kubernetes創始人發表的論文,總結了基于容器的分布式系統的設計模式,讓我們來一覽究竟吧。 論文認為,繼OOP(面向對象編程)所引領的軟件開發革命之后,如今似乎...
摘要:另外,將機制發揚光大,對有著非常好的支持。系統也注意到并討論了和的問題。總結本文分享了四本相關的書籍和一份領域相關的論文列表篇,涉及的設計,實現,故障恢復,彈性擴展等各方面。 前言 之前也分享了不少自己的文章,但是對于 Flink 來說,還是有不少新入門的朋友,這里給大家分享點 Flink 相關的資料(國外數據 pdf 和流處理相關的 Paper),期望可以幫你更好的理解 Flink。...
摘要:溫習統計學的知識為更深層次的學習做準備在的演講中說就是我們理解但不知道另外的是如何的我在臺下想對于那可以理解的我好像都只懂了參考標準高效的流程課程用的是我不想再學一門類似的語言了我會找出相對應的和的來源流程什么是干凈的一個變 Why The Data Science Specialization 溫習統計學的知識, 為更深層次的學習做準備 Andrew Ng 在 2015 GTC ...
閱讀 2841·2021-09-10 10:50
閱讀 2197·2019-08-29 16:06
閱讀 3200·2019-08-29 11:02
閱讀 1102·2019-08-26 14:04
閱讀 2813·2019-08-26 13:24
閱讀 2306·2019-08-26 12:16
閱讀 554·2019-08-26 10:29
閱讀 3102·2019-08-23 18:33