duker

但其實(shí)docker半個(gè)老古董。

Docker這半個(gè)老古董,掀起了第二波從眾,而且想取巧并彎道超車(chē)的浪潮

沒(méi)錯(cuò),第二波終于來(lái)了。

因?yàn)椴坏鉕penStack沒(méi)能搞掂公有云,不搞OpenStack的也沒(méi)能搞掂公有云。得有點(diǎn)新東西出來(lái)。

我們先從看看Docker有多老開(kāi)始?,F(xiàn)在看到的docker的起源都不能算起源,只能說(shuō)出生。其實(shí)docker也有老祖先七大姑八大姨的。

任何東西都能追溯到老祖先,虛擬化還能追溯到70年代的大型機(jī)呢。那個(gè)是有點(diǎn)牽強(qiáng)了,但是docker的直系親屬那也是夠老的。

遠(yuǎn)房的親戚就不說(shuō)了,新生代的KVM都6、7年的歷史了,老一代的Xen和qemu從2003年算起都十二三年的歷史了。在IT行業(yè),10年已經(jīng)很久了。

但docker的近親,歷史也不短,甚至有的更久。docker它爸lxc從2006年開(kāi)始開(kāi)發(fā),到2008年發(fā)布0.1.0版本,docker直接間接chroot、cgroup、namespaces、libcontainer使用的其他組件的歷史當(dāng)然也不會(huì)比LXC短。它叔叔linux-vserver2003年就已經(jīng)發(fā)布了1.0版本,這是基于內(nèi)核態(tài)隔離的容器。

它還有眾多表兄弟Cloudfoundry Warden、BSD jails、Aix workload partitions、iCorevirtual accounts、Sandboxie、Virtuozzo等等,其中Virtuozzo、openvz和solaris container歷史都在十年以上。

關(guān)注虛擬化和IDC的,有些docker的親戚應(yīng)該是很熟悉的。這回又提到IDC了,云計(jì)算真實(shí)上輩子就跟IDC糾纏在一起。收費(fèi)的Virtuozzo、免費(fèi)的openvz,那是云計(jì)算和云主機(jī)出現(xiàn)之前,Xen和KVM出現(xiàn)之前,搞VPS的利器。10年前VPS賣(mài)的多火,被視為虛擬主機(jī)的升級(jí)版。

Openvz是Virtuozzo容器技術(shù)的linux版,LXC是Openvz為了融入內(nèi)核開(kāi)發(fā)的對(duì)應(yīng)版,開(kāi)發(fā)者大部分是同一批人。LXC及周邊工具就是現(xiàn)在Docker的重要組成部分。

Docker出現(xiàn)也就5,6年,但它的大部分身體都出現(xiàn)差不多10年了,你說(shuō)它是不是半個(gè)老古董呢?

Docker本身大家都很熟很熟了,不用贅言。不過(guò)經(jīng)常有人拿Docker和xen、kvm支持的虛擬機(jī)對(duì)比,說(shuō)占用體積小、啟動(dòng)速度快,不是一個(gè)層級(jí)的東西好嘛,一個(gè)在操作系統(tǒng)之上,一個(gè)在操作系統(tǒng)之下,不贅言了。Docker當(dāng)然也不能和LXC等linux容器對(duì)比,都是用的同一系列核心工具,只是管理層不同而已。

Docker在2013年底,2014年初,突然吸引了眾人的目光,并在2014年2015年集萬(wàn)千寵愛(ài)于一身,就如前兩年的openstack一樣。

回到docker誕生的年代,2010年,幾個(gè)年輕人在舊金山成立了一家做 PaaS 平臺(tái)的公司-dotcloud。大家現(xiàn)在都知道heroku,也是PaaS型,而且,也用到了容器,可能是LXC吧。當(dāng)然不是新堆棧PaaS,而是傳統(tǒng)堆棧PaaS。這和heroku一樣,為開(kāi)發(fā)人員提供操作系統(tǒng)、通用庫(kù)、特定語(yǔ)言的運(yùn)行環(huán)境,應(yīng)用的部署、管理、監(jiān)控等。

dotCloud 把需要花費(fèi)大量時(shí)間的重復(fù)性工作,抽象成組件和服務(wù),如規(guī)范容器的格式、便利容器的生命周期管理等,方便開(kāi)發(fā)者管理和監(jiān)控自己的應(yīng)用。

正如我在《云計(jì)算時(shí)代》一書(shū)中所言,新堆棧PaaS離開(kāi)發(fā)者現(xiàn)有技能太遠(yuǎn),傳統(tǒng)堆棧PaaS離現(xiàn)有堆棧太近。不管哪種,都擋住了開(kāi)發(fā)者掌控一切的意愿。所以,PaaS多年來(lái)雖然獨(dú)立作為一類(lèi)云服務(wù),并沒(méi)有足夠大的市場(chǎng)。

雖然dotCloud 在2011年初拿到了1000萬(wàn)美元的融資,但這個(gè)市場(chǎng)本沒(méi)有那么大,也沒(méi)有快速的增長(zhǎng),容納不下太多的企業(yè)。也沒(méi)有干過(guò)heroku、engineyard等公司,自然前景不妙。

dotCloud 的創(chuàng)始人 Solomon Hykes 把大伙召集到一起,大家琢磨了一下,商業(yè)是沒(méi)戲了,那也要搞一把非商業(yè)的事情,把我們?cè)谌萜魃系墓ぷ髌鹈鹍ocker開(kāi)源出來(lái)。能不能把競(jìng)爭(zhēng)對(duì)手干掉不好說(shuō),希望是挺渺茫,但是起碼能在社區(qū)留個(gè)名!萬(wàn)一,開(kāi)放開(kāi)源能夠搞成更大的勢(shì)頭,公司還能起來(lái)呢。

是不是和RackSpace當(dāng)初搞OpenStack有幾分相像?狗急了還要跳墻呢,絕處逢生不是不可能。所謂堅(jiān)持,耐心,就是這個(gè)意思。只是這是一條高風(fēng)險(xiǎn)高收益的路罷了。

LXC,包括openvz,在2013年之前,可不只是heroku等paas公司在用,有些公司內(nèi)部都在使用,甚至包括我在內(nèi)的一些公有云從業(yè)者也慎重考慮過(guò)用容器作為公有云的基礎(chǔ)。

當(dāng)然,還真有這么干的,Joyent,大概是除了AWS干公有云最早的了吧,可能比RackSpace還早點(diǎn),就是基于solaris zone賣(mài)云主機(jī)的。Joyent的技術(shù)骨干是從SUN出來(lái)的,精通solaris,他們整了一個(gè)基于solaris的精簡(jiǎn)內(nèi)核,專(zhuān)門(mén)用來(lái)跑zone,類(lèi)似于coreos,叫做smartOS,基于這個(gè)做出了私有云軟件SmartDataCenter。

說(shuō)這些可能沒(méi)幾個(gè)人知道,但是鼎鼎大名的node.js很多人熟悉,就是Joyent開(kāi)發(fā)維護(hù)的。

沒(méi)錯(cuò),LXC和openvz用在企業(yè)內(nèi)部是很好的,非常好。但是限于LXC當(dāng)時(shí)的管理工具欠缺,并沒(méi)能大規(guī)模流行起來(lái)。它需要一個(gè)契機(jī)。這個(gè)契機(jī)就是docker,docker解決了LXC的管理問(wèn)題。

電視劇總是那么相似,相遇、離別、重逢,受苦受難、遇到高人、報(bào)仇雪恨,IT圈的故事也逃脫不了這樣的情節(jié)。Docker的故事,真的和OpenStack,包括此前的Linux等其他開(kāi)源軟件,有幾分相似。

dotCloud把自己在容器上的工作成果docker開(kāi)放開(kāi)源了,開(kāi)發(fā)者和小公司雀躍了:又來(lái)一個(gè)餡餅啊。這個(gè)餡餅解決了一些問(wèn)題,讓其他人和開(kāi)發(fā)者免除了管理和開(kāi)發(fā)工作量,這是次要的。

更重要的是,后來(lái)參與的開(kāi)發(fā)者、小公司、大公司對(duì)docker的期待,遠(yuǎn)不止解決容器本身的管理問(wèn)題,也不只是因?yàn)橛幸慌讼矚g而從眾,還有一個(gè)很多人很多公司沒(méi)有說(shuō)出的理由:容器是未來(lái),干掉現(xiàn)在的私有云和公有云。

Docker 如此受歡迎,2013年10月 dotCloud 公司更名為 Docker 公司。2014年8月 Docker把平臺(tái)即服務(wù)的業(yè)務(wù)dotCloud出售給位于德國(guó)柏林的平臺(tái)即服務(wù)提供商cloudControl,2016年初 dotCloud被cloudControl關(guān)閉。而Docker公司開(kāi)始全身心運(yùn)營(yíng)docker社區(qū),并開(kāi)展docker商業(yè)化。

Docker 迅速成長(zhǎng)為云計(jì)算相關(guān)領(lǐng)域最受歡迎的開(kāi)源項(xiàng)目,Amazon、Google、IBM、Microsoft、Red Hat 和 VMware 都表示支持 Docker 技術(shù)或準(zhǔn)備支持。

據(jù)說(shuō),有 Linux 的地方,就可以運(yùn)行 Docker。Mac上也可以,Windows上都有直接運(yùn)行docker的Windows Docker 和 Nano Server,當(dāng)然,這已經(jīng)是windows版的了。

截止2016年初,Docker獲得5輪1.8億美元融資,推出了docker hub、docker trusted registry、dockertutm等產(chǎn)品,試圖控制docker容器的注冊(cè)、管理。在2015年上半年與openstack的論戰(zhàn)之后,雙方握手言和,以openstack支持docker管理告終。

Docker當(dāng)然不甘心只是一個(gè)工具軟件,也是要做產(chǎn)品、平臺(tái)的,拿投資人的錢(qián)可不能做公益做開(kāi)源啊。凡是有威脅的就要干掉,或者收掉。于是Docker收購(gòu)Unikernels。

Docker為何收購(gòu)Unikernels?既是看好,更是感到威脅

容器作為虛擬化技術(shù)的一種,在云計(jì)算出現(xiàn)之前就出現(xiàn)了。之所以在2014年前后流行,是因?yàn)榇蠹倚枰环N與硬件虛擬化更輕量級(jí)的技術(shù),來(lái)有效運(yùn)轉(zhuǎn)私有的基礎(chǔ)設(shè)施。這個(gè)私有的,既可以在自家機(jī)房里也可以在公有云上。

在私有的私有的基礎(chǔ)設(shè)施上,至少某些應(yīng)用場(chǎng)景,Docker應(yīng)為其輕量級(jí),應(yīng)用啟動(dòng)更為迅速,資源利用更為高效。但是,循著這個(gè)思路,Unikernels更進(jìn)了一步。

我們先來(lái)看看怎么回事。

從操作系統(tǒng)誕生以來(lái),它就扮演了一個(gè)應(yīng)用和硬件之間的平臺(tái)的角色,提供對(duì)硬件的控制。除了操作系統(tǒng)內(nèi)核和基本的控制臺(tái),還有軟件開(kāi)發(fā)接口、語(yǔ)言運(yùn)營(yíng)時(shí)環(huán)境、語(yǔ)言庫(kù)、輸入輸出設(shè)備控制,也需要支持各種古老的和新興的硬件標(biāo)準(zhǔn)。它需要支持多用戶(hù)、多進(jìn)程、多設(shè)備并發(fā)。

雖然操作系統(tǒng)的的用途各異,有桌面的、內(nèi)部IT系統(tǒng)的、有面向網(wǎng)絡(luò)的,但操作系統(tǒng)的架構(gòu)和模塊基本相同,一致沒(méi)有大的改動(dòng)。但在上世紀(jì)90年代后期,Hypervisor被引入了主流的操作系統(tǒng)。Hypervisor運(yùn)行于硬件之上,能支持多個(gè)虛擬機(jī)運(yùn)行多個(gè)不同的操作系統(tǒng)。但這一變化,并未對(duì)操作系統(tǒng)的設(shè)計(jì)產(chǎn)生大的影響。每一個(gè)虛擬機(jī)仍然運(yùn)行著一個(gè)傳統(tǒng)的操作系統(tǒng)。

但是當(dāng)Hyperfisor推動(dòng)了云時(shí)代的到來(lái)后,通用操作系統(tǒng)的局限就更明顯了。在云環(huán)境中,由于規(guī)模更大,負(fù)載被明顯鳳城了不同的類(lèi)型:web服務(wù)器負(fù)責(zé)處理網(wǎng)絡(luò)請(qǐng)求,數(shù)據(jù)庫(kù)服務(wù)器負(fù)責(zé)數(shù)據(jù)庫(kù)的運(yùn)行和數(shù)據(jù)庫(kù)訪問(wèn),等等。這些服務(wù)器可能永遠(yuǎn)都用不上顯示器、多用戶(hù)、多進(jìn)程。這些場(chǎng)景下的VM和OS的任務(wù)很明確,就是提供最好的存儲(chǔ)、計(jì)算、網(wǎng)絡(luò)性能。

開(kāi)發(fā)者們開(kāi)始質(zhì)疑操作系統(tǒng)的的設(shè)計(jì)和架構(gòu):為什么一個(gè)web server 上要安裝它從來(lái)用不到的軟件?其實(shí)在此之前,Windows服務(wù)器就遇到過(guò)類(lèi)似的問(wèn)題。我們只需要能快速擴(kuò)展和收縮VM的規(guī)模,VM約精簡(jiǎn)越輕量級(jí)越有利于這種彈性。但由傳統(tǒng)操作系統(tǒng)構(gòu)成的VM,只能勉強(qiáng)完成這個(gè)任務(wù)。

Docker所代表的容器恰逢其時(shí)。因?yàn)榛A(chǔ)技術(shù)早已就緒,流行很快。因?yàn)槟茉谕粋€(gè)操作系統(tǒng)上快速運(yùn)行多個(gè)隔離的輕量級(jí)的,容器基本解決了上述疑問(wèn)。容器提供了應(yīng)用程序所需要的一切,除了共用的操作系統(tǒng)內(nèi)核,它封裝了運(yùn)行時(shí)環(huán)境、框架和庫(kù)、代碼、配置和相關(guān)的依賴(lài)。

容器大大削減了操作系統(tǒng)作為一個(gè)全能平臺(tái)所承擔(dān)的角色。容器之下的操作系統(tǒng)這時(shí)只需要承擔(dān)一個(gè)飛航輕量級(jí)的角色:?jiǎn)?dòng)和控制容器。這時(shí)的操作系統(tǒng)更為專(zhuān)業(yè)化,而容器承擔(dān)了運(yùn)行各種不同場(chǎng)景所需資源的角色。

這種趨勢(shì)催生了容器的Hypervisor的產(chǎn)生:CoreOS,RancherOS,Redhat Atomic Hosts,SnappyUbuntu Core,Microsoft Nano。他們是為了支持在其上運(yùn)行容器而存在,沒(méi)有其他的任務(wù),已經(jīng)非常精簡(jiǎn)。甚至Hypervisor之上的容器,有人又將其區(qū)分為操作系統(tǒng)容器和應(yīng)用容器,應(yīng)用容器就是只為單一應(yīng)用為目標(biāo)的容器。

到這里,微服務(wù)(MicroService)終于可以見(jiàn)天日了,終于能夠使用了,而所謂的SOA、Mashable是不是能夠換發(fā)新的光彩呢?

但這種精簡(jiǎn)、輕量級(jí)還沒(méi)有到此為止,Unikernals出現(xiàn)了。在2014年初就出現(xiàn)了,那時(shí)docker剛剛開(kāi)始崛起。

Unikernals將這種最小化操作系統(tǒng)的理念往前進(jìn)一步推進(jìn)。它是一個(gè)定制的操作系統(tǒng),轉(zhuǎn)為特定的應(yīng)用程序的運(yùn)行而編譯。

因此,開(kāi)發(fā)者能夠創(chuàng)建一個(gè)極度精簡(jiǎn)的OS,只包含應(yīng)用和它所需的操作系統(tǒng)組件。Unikernals是單用戶(hù)、單進(jìn)程、單任務(wù)的定制操作系統(tǒng),它在編譯時(shí)去除了所有不需要的功能,但包含了一個(gè)軟件運(yùn)行所需的全部堆棧:OS內(nèi)核、系統(tǒng)庫(kù)、語(yǔ)言運(yùn)行時(shí)環(huán)境、應(yīng)用,這些被編譯成一個(gè)可啟動(dòng)的VM鏡像,直接運(yùn)行在標(biāo)準(zhǔn)的hypervisor上。

Unikernals讓操作系統(tǒng)之上的容器又變成了一個(gè)操作系統(tǒng),不過(guò)這是一個(gè)重新吧便宜的極為緊湊的,直接運(yùn)行在hypervisor而不是精簡(jiǎn)的通用操作系統(tǒng)上的操作系統(tǒng)。Unikernel有著更小的尺寸,更小的可攻擊面,啟動(dòng)時(shí)間也以毫秒計(jì)。Unikernals的論文在這里:https://queue.acm.org/detail.cfm?id=2566628。

不過(guò),和docker一樣,靈活帶來(lái)的伴生問(wèn)題,就是管理、監(jiān)控、回溯、審計(jì),有運(yùn)維工程師說(shuō),docker就是運(yùn)維的噩夢(mèng),那Unikernals可能是運(yùn)維和開(kāi)發(fā)者的噩夢(mèng)?為啥,因?yàn)閷?duì)應(yīng)用改一行代碼要重新編譯整個(gè)鏡像并部署,無(wú)法對(duì)一個(gè)Unikernals實(shí)例打補(bǔ)丁,也就是說(shuō)Unikernals的實(shí)例是靜態(tài)的。

Unikernals的例子包括MirageOS、Clive、OSv,目前都跑在Xen Hypervisor上。它有多小呢?一個(gè)MirageOSDNS鏡像是200KB,而一個(gè)目前全球90%DNS使用的開(kāi)源DNS服務(wù)器BIND鏡像是400MB。而MirageOS DNS鏡像的性能據(jù)稱(chēng)比BIND好45%。

咦?這不是嵌入式系統(tǒng)嗎?Unikernals當(dāng)然可以編譯出鏡像,運(yùn)轉(zhuǎn)在低功耗的設(shè)備上。如果Unikernals被移植到ARM平臺(tái)上,開(kāi)發(fā)者就可以編譯出運(yùn)行在ARM設(shè)備的hypervisor上的鏡像。這將讓嵌入式應(yīng)用的開(kāi)發(fā)更為容易。

那么,看起來(lái),Unikernals雖然現(xiàn)在更像一個(gè)即可玩具,但是,不可否認(rèn),Unikernals有代替容器和虛擬機(jī)的可能,至少在某些場(chǎng)景下。既然容器比虛擬機(jī)在某些場(chǎng)景下更好,為什么更精簡(jiǎn)的Unikernals就不能代替容器和虛擬機(jī)呢?

有可能。而且這個(gè)理念和Docker代表的容器理念相符。于是,Docker收購(gòu)了它。大家一起玩,一起干掉虛擬機(jī)。

Docker看起來(lái)無(wú)敵,前景光明。但是,道路還是曲折的。

大佬們是想干掉私有云和公有云的啊,你Docker公司守著這個(gè)熱門(mén)技術(shù)不放,控制的緊緊的,我們?cè)趺赐妫坎还馐谴罄校瑒?chuàng)業(yè)公司也不干啊。

首先發(fā)難的是CoreOS和谷歌。

CoreOS反水,Kubernetes和Mesos把docker打回工具原型

CoreOS首先不干了。

CoreOS原本是Docker初期的鐵桿盟友,CoreOS可以說(shuō)就是為docker而生的linux,它的唯一任務(wù)就是管理好docker。但是隨著docker開(kāi)始商業(yè)化,docker對(duì)鏡像格式和代碼收緊了控制,甚至建立開(kāi)放平臺(tái)存儲(chǔ)docker鏡像和認(rèn)證,當(dāng)然,還發(fā)布了docker管理工具。

那CoreOS的位置在哪里?當(dāng)然,理由還是要像樣一點(diǎn)的:docker的鏡像格式不夠靈活,工具鏈太龐大,我們要靈活而精簡(jiǎn)的東西。

于是CoreOS自己搞了一個(gè)容器:Rocket。本來(lái)嘛,大家都是基于LXC等工具的,這些工具都是開(kāi)源開(kāi)放,而且CoreOS也搞容器管理的,新搞個(gè)格式和管理工具還不是手到擒來(lái)。

當(dāng)然,雙方都承認(rèn),docker和rocket不是直接競(jìng)爭(zhēng)關(guān)系。Docker是一個(gè)產(chǎn)品,并正在成為一個(gè)平臺(tái)。Rocket只想做一個(gè)容器管理的組件。但是,雙方還是分道揚(yáng)鑣了。

CoreOS一個(gè)人可沒(méi)這么大的氣勢(shì),背后還有谷歌撐腰。Rocket很快被Kubernetes支持。

Kubernetes的靈感來(lái)源于Google的內(nèi)部borg系統(tǒng),吸收了包括Omega在內(nèi)的容器管理器的經(jīng)驗(yàn)和教訓(xùn)。2014年6月谷歌宣布kubernetes 開(kāi)源。谷歌想靠容器翻身呢?怎么能讓另一個(gè)商業(yè)云公司控制最流行的容器。

Kubernetes算是一個(gè)與docker平臺(tái)競(jìng)爭(zhēng)的容器管理工具,自然首先支持docker,但是也支持競(jìng)爭(zhēng)對(duì)手rocket。

但是Kubernetes也有一個(gè)潛在對(duì)手-Mesos。Mesos比Kubernetes出現(xiàn)得早,而且兩者都深受谷歌的數(shù)據(jù)中心管理你項(xiàng)目Borg和Omega的影響。問(wèn)題是,Mesos不是谷歌自家的,雖然屬于Apache項(xiàng)目,但仍被商業(yè)公司Mesosphere,也是Mesos重要維護(hù)者主導(dǎo)。Mesos被稱(chēng)為數(shù)據(jù)中心操作系統(tǒng),軟件定義數(shù)據(jù)中心的典范。

Mesos既是計(jì)算框架也是一個(gè)集群管理器,是Apache下的開(kāi)源分布式資源管理框架,它被稱(chēng)為是分布式系統(tǒng)的內(nèi)核,可以運(yùn)行Hadoop、MPI、Hypertable、Spark。使用ZooKeeper實(shí)現(xiàn)容錯(cuò)復(fù)制,使用LinuxContainers來(lái)隔離任務(wù),支持多種資源計(jì)劃分配。

Mesos使用了與Linux內(nèi)核相似的規(guī)則來(lái)構(gòu)造,僅僅是不同抽象層級(jí)的差別。Mesos從設(shè)備(物理機(jī)或虛擬機(jī))抽取 CPU,內(nèi)存,存儲(chǔ)和其他計(jì)算資源,讓容錯(cuò)和彈性分布式系統(tǒng)更容易使用。Mesos內(nèi)核運(yùn)行在每個(gè)機(jī)器上,在整個(gè)數(shù)據(jù)中心和云環(huán)境內(nèi)向應(yīng)用程序(Hadoop、Spark、Kafka、Elastic Serarch等等)提供資源管理和資源負(fù)載的API接口。

Mesos也不是也不是沒(méi)有隱憂,Apache yarn似乎有一統(tǒng)分布式計(jì)算之勢(shì),MapReduce,Spark,Storm,MPI,HBase都在向yarn上遷移。當(dāng)然,好在Mesos不僅僅是做分布式計(jì)算的框架。

Mesos也起源于Google的數(shù)據(jù)中心資源管理系統(tǒng)Borg。Twitter從Google的Borg系統(tǒng)中得到啟發(fā),然后就開(kāi)發(fā)一個(gè)類(lèi)似的資源管理系統(tǒng)來(lái)幫助他們擺脫可怕的“失敗之鯨”,后來(lái)他們注意到加州大學(xué)伯克利分校AMPLab正在開(kāi)發(fā)的名為Mesos的項(xiàng)目,這個(gè)項(xiàng)目的負(fù)責(zé)人是Ben Hindman,Ben是加州大學(xué)伯克利分校的博士研究生。后來(lái)Ben Hindman加入了Twitter,負(fù)責(zé)開(kāi)發(fā)和部署Mesos?,F(xiàn)在Mesos管理著Twitter超過(guò)30,0000臺(tái)服務(wù)器上的應(yīng)用部署。

Borg的論文2015年四月才發(fā)布:http://research.google.com/pubs/pub43438.html。Mesos的論文:https://www.cs.berkeley.edu/~alig/papers/mesos.pdf。Omega的論文:http://research.google.com/pubs/pub41684.html。這一回,谷歌論文發(fā)晚了,雖然也很有價(jià)值,但可能沒(méi)有三大論文那么有影響力。

2014年7月,Mircrosoft、RedHat、IBM、Docker、 CoreOS、Mesosphere 和Saltstack 加入kubernetes。

2015年1月,Google和Mirantis及伙伴將kubernetes引入OpenStack,開(kāi)發(fā)者可以在openstack上部署運(yùn)行kubernetes應(yīng)用。

2015年7月,Google正式加入OpenStack基金會(huì),Kubernetes的產(chǎn)品經(jīng)理CraigMcLuckie宣布Google將成為OpenStack基金會(huì)的發(fā)起人之一,Google將把它容器計(jì)算的專(zhuān)家技術(shù)帶入OpenStack,成一體提高公有云和私有云的互用性。

同時(shí),谷歌聯(lián)合linux基金會(huì)及其他合作伙伴共同成立了CNCF基金會(huì)( Cloud NativeComputing Foundation),并將kuberentes 作為首個(gè)編入CNCF管理體系的開(kāi)源項(xiàng)目。

來(lái),我們來(lái)看一下發(fā)起人:AT&T, Box, Cisco, Cloud Foundry Foundation,CoreOS, Cycle Computing, Docker, eBay, Goldman Sachs, Google, Huawei, IBM, Intel,Joyent, Kismatic, Mesosphere, Red Hat, Switch SUPERNAP, Twitter, Univa, VMwareand Weaveworks。

到此是不是大團(tuán)圓了?所有跟容器有點(diǎn)關(guān)系的都來(lái)了。谷歌加入了OpenStack基金會(huì),openstack上可以部署運(yùn)行kubernetes,OpenStack支持docker,Mesos支持docker和kubernetes。大家互相都支持,誰(shuí)能發(fā)展好,各自努力吧。這關(guān)系夠亂的。

但是,容器的另外兩個(gè)大玩家-亞馬遜和微軟,沒(méi)有到場(chǎng)。沒(méi)錯(cuò),容器界就是要掀翻現(xiàn)有的云計(jì)算格局,當(dāng)然不能讓云計(jì)算老大和老二進(jìn)來(lái)了。

谷歌糾集了一幫小兄弟,誓要利用容器浪潮,干翻亞馬遜aws和微軟azure。當(dāng)然,谷歌也沒(méi)有奔到準(zhǔn)備靠一招制勝,暗戰(zhàn)還有另一個(gè)戰(zhàn)場(chǎng):Serverless。

Serverless是云計(jì)算的決勝負(fù)戰(zhàn)場(chǎng)?

2014年11月14日,亞馬遜AWS發(fā)布了新產(chǎn)品Lambda。當(dāng)時(shí)Lambda被描述為:一種計(jì)算服務(wù),根據(jù)時(shí)間運(yùn)行用戶(hù)的代碼,無(wú)需關(guān)心底層的計(jì)算資源。從某種意義上來(lái)說(shuō),Lambda姍姍來(lái)遲,它更像S3,更像云計(jì)算的PaaS理念:客戶(hù)只管業(yè)務(wù),無(wú)需擔(dān)心存儲(chǔ)和計(jì)算資源。

比如你要架構(gòu)一個(gè)視頻服務(wù),你需要用一堆服務(wù)器,設(shè)計(jì)出一套上傳、解碼、轉(zhuǎn)碼的架構(gòu)。但是,可能這套系統(tǒng)99%的時(shí)間都是空閑的。而使用一個(gè)Lambda function,你就不需要操心服務(wù)器和這套架構(gòu),當(dāng)aws探測(cè)到用戶(hù)定義的時(shí)間,比如用戶(hù)上傳了一個(gè)視頻文件,Lambda自動(dòng)運(yùn)行響應(yīng)的程序,結(jié)束后關(guān)閉程序。為客戶(hù)生了時(shí)間和金錢(qián)。

Lambda識(shí)別Event的速度非???,以毫秒來(lái)計(jì)算。它會(huì)在圖片上傳、應(yīng)用內(nèi)活動(dòng)、點(diǎn)擊網(wǎng)站或聯(lián)網(wǎng)設(shè)備的輸出等事件發(fā)生后的幾毫秒內(nèi),開(kāi)始運(yùn)行代碼,分配合適的計(jì)算資源來(lái)執(zhí)行這個(gè)行動(dòng)。它可以自動(dòng)擴(kuò)展到數(shù)百萬(wàn)個(gè)請(qǐng)求,如需要可跨越多個(gè)可用區(qū)。根據(jù)AWS Lambda是按計(jì)算時(shí)間收費(fèi),計(jì)費(fèi)單位為100毫秒,可以輕松地把應(yīng)用從每天幾次請(qǐng)求擴(kuò)展到所需要的任何規(guī)模的請(qǐng)求

而在此之前不久,2014年10月22日,谷歌今天收購(gòu)了實(shí)時(shí)后端數(shù)據(jù)庫(kù)創(chuàng)業(yè)公司Firebase。Firebase聲稱(chēng)開(kāi)發(fā)者只需引用一個(gè)API庫(kù)文件就可以使用標(biāo)準(zhǔn)REST API的各種接口對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)操作,只需編寫(xiě) HTML+CSS+JavaScrip前端代碼,不需要服務(wù)器端代碼(如需整合,也及其簡(jiǎn)單)。

Firebase是一個(gè)實(shí)時(shí)應(yīng)用平臺(tái),它可以為幾乎所有應(yīng)用的通用需求提供支持,包括數(shù)據(jù)庫(kù)、API和認(rèn)證處理。數(shù)據(jù)庫(kù)的特點(diǎn)是基于NoSQL的實(shí)時(shí)處理能力,并且允許直接存儲(chǔ)JSON文檔。Firebase具有雙向同步的能力,在客戶(hù)端側(cè),開(kāi)發(fā)者通過(guò)Firebase的客戶(hù)端庫(kù)來(lái)支持典型場(chǎng)景的需求,比如屏幕刷新、離線時(shí)數(shù)據(jù)訪問(wèn)或者設(shè)備重新連接后的再次同步。Firebase對(duì)數(shù)據(jù)存儲(chǔ)容量沒(méi)有限制,最高能處理百萬(wàn)級(jí)的并發(fā)和TB級(jí)的數(shù)據(jù)傳輸,數(shù)據(jù)發(fā)生更改,同步敏感顆粒度基本達(dá)到10毫秒級(jí)別。

相對(duì)于上兩者,F(xiàn)acebook 在2014年二月收購(gòu)的 Parse,則側(cè)重于提供一個(gè)通用的后臺(tái)服務(wù)。不過(guò)

這些服務(wù)被稱(chēng)為serverless或no sever。想到PaaS了是嗎?很像,用戶(hù)不需要關(guān)心基礎(chǔ)設(shè)施,只需要關(guān)心業(yè)務(wù),這是遲到的PaaS,也是更實(shí)用的PaaS。這很有可能將會(huì)變革整個(gè)開(kāi)發(fā)過(guò)程和傳統(tǒng)的應(yīng)用生命周期,一旦開(kāi)發(fā)者們習(xí)慣了這種全自動(dòng)的云上資源的創(chuàng)建和分配,或許就再也回不到那些需要微應(yīng)用配置資源的時(shí)代里去了。

AWS的Lambda既不是最早,也不是最好,但它仍然是serverless最有影響力的產(chǎn)品,誰(shuí)讓AWS的用戶(hù)多,產(chǎn)品全呢?

Serverless是未來(lái)嗎?也許是。

Serverless能決定云計(jì)算的勝負(fù)嗎?不能。

什么能決定云計(jì)算的勝負(fù)?

不僅Serverless不能,其他的產(chǎn)品、技術(shù)、項(xiàng)目、工具,都不能單獨(dú)決定云計(jì)算的勝負(fù)。

從云計(jì)算初期的OpenStack和PaaS,到后來(lái)的Docker、Kubernets、Mesos、Unikernals,以及最近沸沸揚(yáng)揚(yáng)的人工智能,還有大數(shù)據(jù)分析,IBM甚至宣稱(chēng)Watson是它的云計(jì)算秘密武器,甚至可能即將光大的Serverless,都不能單獨(dú)決定云計(jì)算的勝負(fù)。

它們都是優(yōu)秀的產(chǎn)品、技術(shù)、項(xiàng)目、工具,但只是一項(xiàng)產(chǎn)品、技術(shù)、項(xiàng)目、工具,它們只能用來(lái)更好的服務(wù)客戶(hù),開(kāi)辟新產(chǎn)品和加強(qiáng)已有產(chǎn)品,可以用來(lái)建立新業(yè)務(wù)或新公司。

IBM或谷歌也許能成為人工智能的王者,Docker也許能成為容器的領(lǐng)袖,Cloudera也許能成為大數(shù)據(jù)的領(lǐng)軍企業(yè),即使如此,這都是另一個(gè)領(lǐng)域的事情,是一種應(yīng)用場(chǎng)景的事情,它們也許能也許不能成就新的行業(yè),但都與云計(jì)算基礎(chǔ)服務(wù)無(wú)關(guān),與IaaS和PaaS無(wú)關(guān),與公有云勝負(fù)無(wú)關(guān)。

這個(gè)世界從來(lái)沒(méi)有獨(dú)門(mén)秘籍。改變?cè)朴?jì)算格局,顛覆云計(jì)算市場(chǎng)的,不會(huì)是一個(gè)獨(dú)門(mén)技術(shù),也不會(huì)是一項(xiàng)秘密產(chǎn)品。

能決定云計(jì)算勝負(fù)的,仍然是遠(yuǎn)見(jiàn)、魄力、耐心。如果已經(jīng)有了早行者,那就需要持續(xù)的創(chuàng)新,來(lái)蠶食領(lǐng)先者的優(yōu)勢(shì)。云計(jì)算是一個(gè)龐大的市場(chǎng),從來(lái)不是一項(xiàng)技術(shù)、一個(gè)項(xiàng)目、一個(gè)產(chǎn)品的事情。

沒(méi)有捷徑。

logo

微信公眾號(hào)techculture

分享到

chx

相關(guān)推薦