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