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