大數據時代面臨著生態系統的不斷更新迭代。程序猿和攻城獅們絞盡腦汁地想要降低硬件成本、開發出能保羅萬象的系統。
先是系統分身——虛擬機的出現,宿主系統和虛擬鏡像靈活切換,十分酷炫!隨著GO語言這位最強王者的出現,又有“神猿”編寫出了docker這個貌似鯨魚的可愛工具。服務器的資源共享進入了容器時代。如今很多頭部的IT公司基于docker不斷拓展新業務。隨著微服務架構的橫空出世,docker迅速與之組成戰隊,就更加飄飄然了。
這幾年,容器將取代“虛擬化”的言論甚囂塵上。事實上,沒有絕對的技術,大數據的生態系統是鮮活的,不斷更新且多向兼容。虛擬化和容器必將經歷短期共存的過程,最終的生死存亡只能交給“生態圈”自主篩選。
就目前而言,容器比虛擬機更敏捷迅速,且容器支持混合和多云的采用。最重要的一點是容器具有很強的適應性:它可以輕松地集成于現有的IT實踐當中。同時,容器化應用程序因其靈活共享的特性,大大提高了VM的CPU利用率,降低了硬件成本。但另一方面,每一個虛擬機都有自己的操作系統,驅動程序和應用程序,具有更強的隔離性。
VMs
二十年前,一家名為VMware的創業公司通過提供創建非物理機器虛擬化平臺(如Linux,Windows等)來引入業務。
隨著服務器處理能力的提高,基本應用程序無法最大限度地利用所有豐富的新資源。而虛擬機(VM)的出現,可以在物理服務器上運行軟件,并模擬特定的硬件系統。其中管理程序是可以創建和運行虛擬機的軟件或硬件。
使用不同操作系統的虛擬機可以在同一服務器上運行。例如,一個Unix虛擬機可以同時在能夠運行Linux虛擬機的服務器上運行。每個虛擬機都有自己的應用程序、二進制文件和庫。因此,企業可以保留舊計算機,添加新軟件,無需重新購買能夠運行Unix軟件的新計算機。對于組織不斷變化的需求而言,這是一個更簡單、更便宜的解決方案。
服務器虛擬化是在虛擬化軟件的幫助下,將物理服務器劃分為若干個小型虛擬服務器的技術。在這個系統中,每個虛擬服務器將同時運行多個操作。Wikibon的首席分析師James Kobielus在最近的一次Dataversity采訪中說:
服務器虛擬化的巨大優勢在于可以更好地利用所投資的硬件資源。其面臨的問題是:在不同平臺的不同虛擬機中,管理不同的機器映像相當復雜,這可能會造成相應的管理負擔。
容器(Containers)
即使有可用的工具,虛擬機技術也很難被使用。例如,在虛擬世界中很難分離特定的、消耗資源的應用程序。微服務和容器化提供了一個更簡單的選擇。一個特定的應用程序代碼(例如查詢處理器和數據庫索引邏輯中的后端數據)可以通過微服務的容器來分割不同的工作負載。
容器類似于虛擬機,來自其他系統的軟件也可以在不同的服務器上運行。容器還允許應用程序與庫和依賴項一起運行。也就是說,當虛擬機模擬硬件系統時,容器能夠以核心操作系統為基礎來運輸自己的軟件系統。
相較于虛擬機而言,容器占用空間更少。“虛擬機可能需要大量的資源開銷,例如網絡輸入、輸出、內存和磁盤。因為單個虛擬機運行自己的操作系統,而容器則不運行。”Kobielus說道。容器共享稱為操作系統(OS)內核的東西,它訪問操作系統核心。另外,支持容器的操作系統可以更小,并且具有比虛擬機的操作系統更少的特征。容器啟動速度更快,僅使用啟動整個操作系統所用內存的一小部分。顯然,容器是下一個進化的步驟。Kobielus評論說:
容器化在過去五年里開始流行。這是一種做微服務、分發與平臺無關的虛擬化服務器環境的方法,并且此方法有效。容器不僅可以在服務器中運行,還可以在客戶機設備等上運行。容器化實際上是通常所謂的云計算的核心。
容器化技術長期以來一直是Linux的一部分。Kobielus表示,目前Docker是最受歡迎的容器之一,VPS,其他容器化技術,都被插入到Linux中了。基本上,Linux是操作系統,VPS租用 國內服務器,Linux容器可以通過Docker、Mesos和其他各種方式實現。“可以在Docker容器中運行應用程序邏輯,然后獨立地擴展它們。”
Docker支持在大多數Linux平臺上都可用,可以輕松運行這些容器及其應用程序。它們基本上可以在任何Linux平臺以及其他非Linux平臺上運行。通過使用容器,可以在操作系統和底層硬件平臺之間靈活地移動微服務。
Kubernetes