容器化到服務器的滅絕

技術的發展可以分為兩種:把已有技術發揮到極致,和發明創造革命性的技術。

20年前,1998年,互聯網浪潮之前,程序都是跑在物理服務器上。彼時如果說用戶數太多,或是服務器掛了,也沒太好的辦法。多是提早準備兩臺服務器待命,一旦一臺不夠或者出問題了,備機趕緊上。

10年前,2008年,虛擬機技術已經發展的非常成熟。一臺主機可以運行多個虛擬機,一旦一臺服務器宕機或者需要擴容,只需用已有的鏡像迅速啟動一臺「一模一樣」的虛擬機即可。

在此不得不提一嘴亞馬遜AWS的EC2服務。EC2又名云計算主機,是AWS提供的在線虛擬主機服務,用戶可以根據需求啟動不同配置不同數量的EC2實例。用戶可以把任意EC2實例轉換為一個AMI鏡像,從而在這個AMI鏡像基礎上啟動更多EC2實例。

AMI全稱亞馬遜機器鏡像,是EC2虛擬機的快照。用戶不僅可以在AWS上制作鏡像自己使用,也可以把深度定制的鏡像在aws marketplace上分享、銷售出去。

利用對EC2和AMI靈活的使用,部署在AWS上的程序可以很輕松的實現程序的自我修復、動態擴容等。程序部署變的簡單而高效。

容器

如果說EC2把虛擬機技術發揮到了極致,那么容器化就是新一代革命性創新。

虛擬機最大的優點,就在于當它運行在宿主操作系統上時,因為硬件是完全虛擬化的,虛擬機里的程序可以很好的和宿主機以及其他虛擬機里的運行環境隔離開來。每一個虛擬機里的環境,都是一個「被隔離的沙盒」,沙盒之間不會互相影響。如此即保證了虛擬機之間的獨立性,也保證了程序運行的安全性。

虛擬機的缺點也很明顯。虛擬機需要在宿主操作系統上,模擬出虛擬化的硬件,再安裝一套操作系統,最終程序運行在虛擬機里的操作系統里。如果虛擬機的操作系統和宿主操作系統一樣,那么這中間就存在著大量的資源浪費(硬件、軟件虛擬化)。

那么有沒有一種技術,即可以發揮虛擬機的優勢,又可以兼顧它的劣勢呢?它就是容器技術。

容器技術主要源于Linux操作系統的兩個特性:namespace和cgroups。Linux namespace允許在Linux中創建一個沙盒,使程序完全隔離地運行在這個沙盒中;Linux cgroup則對計算機資源進行隔離,控制和分離程序運行時的資源使用。同時,因為程序在運行時,仍然是基于同一套Linux內核,也就不存在虛擬硬件和虛擬操作系統一說了。少了這兩層,系統資源得到了最大化利用。

這些容器化相關的技術,讓運行在容器中的程序,有一種「運行在獨立主機里」的飄飄然感覺。在他們眼里,目錄是「/」,權限是「root」 ,只有自己在運行,似乎可以任意妄為。這就是容器化技術想要達到的「虛擬化」目的,進程被放到了孤立的「黑客帝國」里。

至此,也就容易理解為什么容器化要比虛擬機更高效——本質上「容器」里的程序就是運行在宿主機上的進程。同樣的配置,運行多個進程當然比運行多個虛擬機容易多了!

得益于容器技術,微服務在近年來大出風頭。把后端的服務,在SOA的基礎上繼續細化,程序變成了一個個小小的單元,互相之間的直接調用,變成了網絡通訊。大型的程序,不同業務由不同的微服務支撐,同一個業務,多個層次也是由多個微服務提供。大大小小的容器運行一大堆。

未來

從實體服務器,到虛擬機,再到容器,計算資源被越來越高效的利用起來。如何才能進一步優化資源利用?

無服務器技術(serverless)。

可以想象,容器化把資源和環境隔離開,讓程序進程能夠獨立運行,但這種程序在運行時仍然需要先構建自己的基礎依賴庫。如Docker image里在程序層級之下,定義了復雜的依賴庫。如果我們可以在容器化的基礎上,繼續抽象、重用這些依賴層,容器里的程序體積將進一步縮小。如果做到除所有依賴都可以共享,不同的只有運行時的業務邏輯和資源占用,那時將達到資源的終極利用。

無服務器(serverless)正是出于這樣一種設計,云平臺(AWS,Azure,Google Cloud)把底層極端抽象,只暴露幾個必要的接口。編碼時只需根據公用接口編寫自己的業務邏輯,以程序的最小單元——函數來進行部署。運行時,單個函數運行在自己獨立的容器里,完成調用。

微服務的實施,一方面是技術層面的劃分,另一方面也是對業務的細分。為了提高效率,技術最終要逐漸從業務中剝離出來,技術歸技術,業務歸業務。抽象出來的技術,變成一個個通用微服務,提供現成接口,產品的開發將只需要關注業務邏輯,利用serverless把這些接口用「業務」粘在一起即可。

手機上有一個APP叫做IFTTT,全名if this then that,它提供一個平臺,用戶可以授權多個其他APP的服務,比如Email,短信,天氣,Facebook。選擇兩個服務組成一個「食譜」,其中一個是「this」,另一個是「that」,一旦「this」發生,就會觸發「that」。比如可以設定一個「如果下雨,發短信給自己」,「如果在Instagram贊了一張圖片,就下載它」等等。

image

IFTTT提供的就是對技術的剝離,把一個個服務的「事件」和「操作」抽象出來。普通用戶不需要很多技術背景,就可以把任意兩個服務按照自己的實際需求連接起來。

AWS現在就在嘗試做同樣的事情。AWS提供的服務越來越多,越來越專,在這些服務之外,它也有serverless的解決方案AWS Lambda。每一個Lambda可以設定一個觸發器,可以是直接的API請求,也可以是來自其他AWS服務,如S3、SQS等。Lambda本身,則是一段極簡的邏輯,用于把數據從一個地方流到另一個地方。

比如我想做一個視頻直播軟件,除了該有的UI和UX,后端的關鍵用例不多,一個是發起者上傳視頻內容流,其次是轉碼、存儲,最后是終端用戶接受不同碼率的視頻。AWS提供Kinesis負責數據流,Elastic Transcoder負責轉碼,S3負責存儲,其他那些粘合這些服務的地方,只需要加上簡單的Lambda服務就好了。

End

1998到2018的20年,服務器形式上從有到「無」,抽象上從大到小,到現在的「無服務器」,是計算機科學硬件和軟件的快速發展產物。不論是硬件資源,還是軟件開發上,程序都在變得愈加高效。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370