摘要:那都是老一套了。已死已經(jīng)沒有人用了。現(xiàn)在所有的一切都在容器化,它是未來。這是確保它可靠的唯一方式。我現(xiàn)在需要一個(gè)是的,為了穩(wěn)定性。我猜是規(guī)模的對(duì),沒錯(cuò)。我明白了,好吧,我懂了。那我來重復(fù)一遍確保我領(lǐng)悟了這些。
這是一篇在國外社區(qū)非常火的文章。由CircleCI創(chuàng)始人所寫,追逐熱點(diǎn)新技術(shù)的程序員與只想做個(gè)簡單web應(yīng)用的程序員對(duì)話,Docker到底能否解決簡單小應(yīng)用的問題嗎?Heroku真的歇菜了嗎?我們有請(qǐng)反方辯者登場——
PS,小數(shù)只是勤勞的搬運(yùn)工,文章并不代表數(shù)人云觀點(diǎn):)
本文為兩個(gè)程序員之間的對(duì)話,一個(gè)打算使用Heroku做個(gè)簡單Web應(yīng)用的傳統(tǒng)程序員,另一個(gè)追捧Docker及各種新技術(shù)的時(shí)髦程序員,前者虛心向后者“請(qǐng)教”的故事……
嗨我老板讓我和你聊聊,我聽說你很懂Web應(yīng)用?
是的,我現(xiàn)在更沉迷分布式系統(tǒng)。我剛從ContainerCamp 和 Gluecon大會(huì)回來,我正準(zhǔn)備去參加下周的Dockercon。我對(duì)于行業(yè)正在發(fā)生的變化感覺十分興奮——一切都更簡單和可靠了,這就是未來呀!
真酷。目前我只搭建了一個(gè)簡單的Web應(yīng)用——一個(gè)普通的使用Rails的CRUD應(yīng)用,打算部署到Heroku上去。是不是還是這樣的路子?
哦不。那都是老一套了。Heroku已死——已經(jīng)沒有人用了。你需要使用Docker,那才是未來。
哦好吧,那是啥?
Docker是一種容器化的新方式。就像LXC,但是同時(shí)也是一種封裝形式,一個(gè)分布式平臺(tái),工具讓分布式系統(tǒng)變得非常容易。
容……容器?接下來呢,LXE是啥?
就像steroids上的chroot!
好吧cher——oot又是啥?
好吧,看,Docker,容器化,它是未來,它就像虛擬化但是更快更便宜。
哦就像Vagrant。
不,Vagrant已經(jīng)死了。現(xiàn)在所有的一切都在容器化,它是未來。
好吧,所以我不再需要了解虛擬化的東西?
不,你仍然需要虛擬化,因?yàn)槿萜鞑⒉惶峁┮粋€(gè)完全安全的環(huán)境。所以如果你想在多租戶的環(huán)境下跑東西,你還是需要保證你沒有脫離沙盒的。
好吧,這里我有點(diǎn)迷惑。我們來說一下,所以有一個(gè)類似虛擬化的東西叫做容器,我可以把它用在Heroku上面嗎?
Heroku對(duì)Docker是有一些支持,但是我告訴你:Heroku已死,你應(yīng)該把你的容器跑在CoreOS上。
好吧,那是啥?
它是很酷的Host OS,你可以和Docker一起使用。甚至,你不需要Docker,你可以用rkt。
火箭?
不,是rkt
好吧,火箭。
不,它現(xiàn)在叫rkt。完全不一樣,它是一個(gè)可選擇的容器化形式,并不像Docker那樣是捆綁式的,所以它更有編排性。
哦那它好不好嗎?
當(dāng)然非常好,編排性是未來啊。
好的,那你是如何用它的?
我不知道,我不認(rèn)為現(xiàn)在會(huì)有人用它。
哎,那你說說剛才提到的CoreOS?
好的,它是你和Docker搭配使用的一個(gè)Host OS。
Host OS又是什么?
Host OS跑你所有的容器。
跑我的容器?
是的,你需要東西來跑你的容器。所以你搭建像EC2的實(shí)例,你把Core OS放上面,然后運(yùn)行Docker daemon,然后可以把Docker鏡像部署到里面。
這里的哪一部分是容器?
所有都是,看,你把你的應(yīng)用寫一個(gè)Dockerfile,把它轉(zhuǎn)變成本地鏡像,然后你可以把它推到任何一個(gè)Docker主機(jī)。
哦,就像Heroku?
不,不是Heroku。我告訴你了,Heroku已經(jīng)死了。你用Docker來跑你的云。
啥?
是的,它真的很簡單,看gifee。
Gify?
“人人都可擁有Google那樣的基礎(chǔ)設(shè)施”(Google’s infrastructure foreveryone else)。你用一些現(xiàn)成的工具和堆棧,用容器,然后就可以擁有和Google一樣強(qiáng)大的基礎(chǔ)設(shè)施了。
那為啥我不能直接用Google的東西?
你認(rèn)為六個(gè)月之內(nèi)能搞定嗎?
好吧,沒有其他人弄這個(gè)東西嗎?我自己不想弄。
亞馬遜有ECS,但是你要寫XML或者其他玩意。
那OpenStack上的什么呢?
Ew。
Ew?
Ew。
好吧你看我真的不想自己來弄。
不,它真的很簡單,你需要建一個(gè)Kubernetes集群就可以了。
我需要一個(gè)集群?
Kubernetes集群。它會(huì)管理你所有服務(wù)的部署。
我只有一個(gè)服務(wù)。
你的意思是啥?你有一個(gè)應(yīng)用,那么你就該有至少8-12個(gè)服務(wù)。
什么?不,只有一個(gè)應(yīng)用,服務(wù)嘛,也只是其中一個(gè)。
不,看看微服務(wù)。它才是未來。我們做的都是微服務(wù),你把你的整體式應(yīng)用分割成12個(gè)服務(wù),每一塊你做的工作都只是一部分。
這看起來有點(diǎn)多啊。
這是確保它可靠的唯一方式。如果你的認(rèn)證服務(wù)掛了……
認(rèn)證服務(wù)?我正打算用它,就跟我之前用過的幾次一樣。
棒極了。用gem,把它放到它的項(xiàng)目里,把RESTful API放上去,然后你的其他服務(wù)也用那個(gè)API,就可以很好地處理失敗和其他事情。把它放到容器里,然后持續(xù)地交付。
好的,然后我就有了成堆的無法管理的服務(wù),那該怎么辦?
是的,我正在說的Kubernetes,會(huì)協(xié)調(diào)你所有的服務(wù)的。
協(xié)調(diào)它們?
是的,你有了這些服務(wù),為了確保它們可靠你需要很多份它們的備份,Kubernetes會(huì)確保你有足夠的備份,在你的fleet里它們是各個(gè)節(jié)點(diǎn)分布式的,所以它們總是可用的。
我現(xiàn)在需要一個(gè)fleet?
是的,為了穩(wěn)定性。但是Kubernetes可以為你管理它,你知道Kubernetes很好用因?yàn)镚oogle建造了它,它跑在etcd上面。
Etcd是啥?
它是RAFT的一個(gè)具體實(shí)現(xiàn)。
好吧,Raft是啥?
它就像Paxos。
好吧,這個(gè)兔子洞到底有多深?我只是想實(shí)現(xiàn)一個(gè)應(yīng)用,哎,好吧,深呼吸,那么Paxos是啥?
Paxos就像一種很古老的70年代的舊分布式協(xié)議,沒人理解或者使用。
好吧,感謝你告訴我這個(gè)。那么Raft是啥。
因?yàn)闆]人理解Paxos,所以這個(gè)叫diego的家伙……
哦你知道他?
不,他做的是CoreOS,然而,Diego為他的博士論文創(chuàng)造了Raft,因?yàn)镻axos實(shí)在太難了。真是邪惡而聰明的家伙。他又寫了etcd作為實(shí)現(xiàn),Aphyr說它并不是很糟。
Aphyr是誰?
Aphyr是那個(gè)寫了“Call Me Maybe”的家伙,你知道,那個(gè)分布式系統(tǒng)和BDSM的家伙。
什么?你說BDSM?
是的,在舊金山,每個(gè)人都進(jìn)入了分布式系統(tǒng)和BDSM。
哦,他寫了那個(gè)Katy Perry的歌?
不,他寫了一系列的關(guān)于每個(gè)數(shù)據(jù)庫如何掛了CAP的博客
CAP是啥?
CAP定理,它表明你只能在一致性,可用性和隔離性中選擇兩個(gè)。
好吧,所有的數(shù)據(jù)庫都完敗CAP?這意味著什么?
這意味著它們都是渣渣,就像Mongo。
我猜Mongo是web規(guī)模的?
對(duì),沒錯(cuò)。
Etcd呢?
Etcd是一個(gè)分布式鍵值存儲(chǔ)。
好吧就像Redis。
不,并不像Redis。Edcd是分布式的,如果網(wǎng)絡(luò)分區(qū)了Redis會(huì)失去它一半的代碼。
好吧,它是分布式鍵值存儲(chǔ)。那為啥它有用?
Kubernetes用etcd建立了一個(gè)標(biāo)準(zhǔn)的5節(jié)點(diǎn)的集群作為一個(gè)消息總線,它包含了Kubernetes一些自己的服務(wù)來提供一個(gè)有彈性的編排系統(tǒng)。
5個(gè)節(jié)點(diǎn)?我只有一個(gè)應(yīng)用,那么我需要多少個(gè)機(jī)子?
好吧,你要有12個(gè)服務(wù),你也需要一些多余的備份,一些負(fù)載均衡,edcd集群,你的數(shù)據(jù)庫,Kubernetes集群。所以你至少應(yīng)該跑50個(gè)容器。
哦天!
沒什么大不了的。容器真的非常效率,所以你應(yīng)該可以把他們分布在8個(gè)機(jī)子上,是不是很了不起?
確實(shí)是一個(gè)方法,通過這個(gè),我是不是可以簡單地部署我的應(yīng)用了?
當(dāng)然,我是說,存儲(chǔ)對(duì)于Docker和Kubernetes來說仍然是一個(gè)開放的問題,網(wǎng)絡(luò)會(huì)承擔(dān)一些工作,但是你基本已經(jīng)可以達(dá)到那個(gè)未來之地了。
我明白了,好吧,我懂了。
棒極了。
感謝你的這些解釋。
沒問題。
那我來重復(fù)一遍確保我領(lǐng)悟了這些。
好的!
我只需要把我簡單的CRUD應(yīng)用分割成12個(gè)微服務(wù),每一個(gè)都配有API可以彈性地恢復(fù)它們的錯(cuò)誤,把它們放進(jìn)Docker容器,啟動(dòng)8個(gè)機(jī)器的fleet,均為跑Core OS的Docker主機(jī),用一個(gè)小的跑etcd的Kubernetes的集群來協(xié)調(diào)它們,明確網(wǎng)絡(luò)和存儲(chǔ)的開放問題,然后我就可以持續(xù)地給我的fleet交付多個(gè)微服務(wù)的冗余備份,是這樣嗎?
是的,它是不是很棒?
我要回去繼續(xù)Heroku了。
(文章轉(zhuǎn)自:CircleCI blog)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26684.html
摘要:并不是因?yàn)樗情W亮的新事物或者它是一些虛構(gòu)的最佳實(shí)踐,而是因?yàn)橄駚嗰R遜或者已經(jīng)在這上面投入了年的心血,他們告訴了我們?nèi)绾螛?gòu)建真正有規(guī)模的系統(tǒng)。截止目前,我們已經(jīng)部署了由亞馬遜等提供的重量級(jí)虛擬化服務(wù)器。 周一時(shí)候數(shù)人云與大家分享了一篇關(guān)于Docker的反方言論——《一份Docker的反方辯論——我還是用Heroku好了》,一周之后,同樣的作者,又為Docker正名,寫了一篇正方言論。D...
摘要:作為一項(xiàng)在云中部署應(yīng)用和服務(wù)的新技術(shù)已成為當(dāng)下最新的熱門話題。曾熱衷于促進(jìn)的綜合軟件棧,說該公司對(duì)于微服務(wù)架構(gòu)有著很好的定位。 Microservices作為一項(xiàng)在云中部署應(yīng)用和服務(wù)的新技術(shù)已成為當(dāng)下最新的熱門話題。但大部分圍繞microservices的爭論都集中在容器或其他技術(shù)是否能很好的實(shí)施微服務(wù),而紅帽說API應(yīng)該是重點(diǎn)。 企業(yè)和服務(wù)提供商正在尋找更好的方法將應(yīng)用程序部署在云環(huán)...
摘要:就拿本篇教程為例,發(fā)布第一篇文章。十分鐘免費(fèi)博客建站教程如果你沒有自定義的路徑的話,默認(rèn)生成的文件都會(huì)在目錄下。具體語法請(qǐng)移步官網(wǎng)最后附上我的博客鏈接嚶嚶嚶填坑小窩 title: Hexo+NexT+Heroku十分鐘免費(fèi)博客建站教程date: 2016-10-29 20:57:20author:嚶嚶嚶 前言(上一段廢話抒發(fā)一下情感先) 接觸互聯(lián)網(wǎng)到現(xiàn)在不長不短也有兩年了,從最開始連...
摘要:最近在用跑,也遇到了一些坑,這里記錄一下。首先項(xiàng)目然后就開始報(bào)錯(cuò)了這里報(bào)錯(cuò)是說找不到文件,但我本地運(yùn)行是沒問題的。同樣的,還需要把用戶名修改成和鏡像預(yù)定的一致。打開最新生成的文件。本人菜鳥一枚,如有錯(cuò)誤之處,敬請(qǐng)指正,謝謝 最近在用docker跑rails,也遇到了一些坑,這里記錄一下。 首先build項(xiàng)目: docker-compose build 然后就開始報(bào)錯(cuò)了: psql: c...
摘要:彼時(shí),從虛擬化管理到公有云,熱鬧異常。雖然年才明顯放棄公有云的全面競爭,但在年決定發(fā)起和開源項(xiàng)目是,不說明確,至少已經(jīng)隱隱覺得肯定搞不過亞馬遜了。年前賣的多火,被視為虛擬主機(jī)的升級(jí)版。當(dāng)然不是新堆棧,而是傳統(tǒng)堆棧。 還記得在十多年前,SaaS鼻祖SalesForce喊出的口號(hào)『No Software』嗎?SalesForce在這個(gè)口號(hào)聲中開創(chuàng)了SaaS行業(yè),并成為當(dāng)今市值460億美元的Saa...
閱讀 2288·2021-11-24 09:38
閱讀 1984·2021-11-22 14:44
閱讀 1149·2021-07-29 13:48
閱讀 2613·2019-08-29 13:20
閱讀 1115·2019-08-29 11:08
閱讀 2045·2019-08-26 10:58
閱讀 1264·2019-08-26 10:55
閱讀 3148·2019-08-26 10:39