歡迎光臨
每天分享高質量文章

小白科普:虛擬化簡史

來自:碼農翻身(微訊號:coderising)

作者:Jeremy Chone

翻譯:TY

單應用單物理機(One to One)

在早期,一臺物理機上通常只執行一個作業系統,並且大多數應用程式(像資料庫、web 伺服器和網站)通常只用來解決使用者的一個需求。

這意味著當需要部署 pet.com 和 food.com 兩個應用時,常見的做法就是使用兩臺物理機,在每臺物理機上單獨部署一套資料庫,web 伺服器和網站。

當請求負載增加時,需要透過加入新的物理機來實現應用程式的水平擴容。總的來說,使用者應用和物理機保持著一一對應的關係。

使用這種擴容方式,可能需要花費幾天的時間等待新的機器就緒,才能部署新的應用。並且為了扛住高峰時的請求壓力,通常都會使用過量的物理機來部署應用,這導致整體的資源利用率不高。簡而言之,在那時提供網際網路服務需要付出高昂的成本。

應用虛擬化(如:Virual Host)

為瞭解決應用程式和物理機只能一一對應的問題, web 伺服器和資料庫這樣的基礎層應用,開始提供邏輯隔離功能,即允許在一個基礎層上同時支撐多個使用者應用在 web 伺服器世界中,這稱為虛擬主機(virtual hosts),一個 web 伺服器可以基於域名為多個網站提供服務。而在資料庫領域中,單個資料庫服務可以提供完全隔離的多個邏輯資料庫。

基於應用虛擬化技術,可以將幾個邏輯上隔離的使用者應用部署在同一臺物理機上。

趣聞:在 90年代末,Apache 正是依靠虛擬主機功能擊敗了網景的Netscape Enterprise Server,佔據了 web 網站服務市場。

與單應用單物理機模型一樣,當請求負載增加時,仍然需要新加入多臺物理機來實現水平擴容,但是現在能夠在一臺物理機上部署多個使用者應用。

同時,一些應用程式如資料庫,也開始嘗試使用叢集功能來實現更高階的水平擴充套件能力。雖然這些技術提高了資源利用率,但也顯著地增加了程式架構和部署的複雜度。對於開發人員來說,此時部署和擴容一個應用程式有些過於複雜了。

換句話說,那時的網際網路服務是複雜並且脆弱的。

 

虛擬機器

隨著 Linux 在伺服器領域越來越流行,作業系統虛擬化也逐漸發展起來,它允許在一臺物理機上同時執行多個作業系統。在這種新的模型下,一臺物理機上的每個應用程式都可以擁有自己的作業系統和執行環境。

註:從技術層面講,虛擬機器技術是由 IBM 在 60 年代開創的;但是可以公平地說 Linux(和 Windows,在某些方面)普及了作業系統虛擬化的概念。

這個新模型不僅最大化的提升了資源利用率,而且透過邏輯上的隔離顯著地簡化了應用程式架構。但是虛擬機器時代最具革命性的結果,是以 AWS 為主導的雲端計算業務

有了這項新的服務,開發人員就可以專註於他們最瞭解的東西:軟體。讓少數的硬體和網路專家負責構建和擴充套件支撐軟體執行的基礎設施。

隨著軟體基礎設施變得越來越複雜,應用程式也開始逐漸從傳統的三層單體架構轉向微服務架構。此時,如何設計,部署和管理一套可擴充套件的微服務系統變得相對複雜,並且與高度依賴於底層的雲端計算基礎設施。 

容器

後來,人們使用了一個相當古老的Linux功能,把行程“裝箱”到了一個作業系統不同的資源子集當中,於是,虛擬化的下一個篇章——容器化——誕生了。容器技術的快速發展主要是由現在無處不在的 Docker 容器引領的。

使用容器化技術, 現在僅需要幾秒鐘就可以完成在物理機時代需要幾天時間,在虛擬機器時代需要幾分鐘的工作,並且只佔用很少的硬體資源。

雖然容器化技術顯著的改善了服務粒度,提高了資源利用率,優化了複雜應用的軟體架構並且實現了開發和生產環境的執行時統一。但是隨著大量新功能的引入,也帶來了服務部署和管理複雜度的挑戰。服務擴容仍然需要依賴雲端計算廠商提供的特定方法來擴容底層的虛擬機器。何時建立容器,將容器部署在何處也是非常複雜的問題。

毫無疑問,容器化技術是有用的,但是似乎需要其他技術來輔助實現它真正的價值。

Kubernetes

Kubernetes 由此誕生並解決了容器化技術面臨的問題。Kubernetes 是基於容器的服務,提供了一種標準的、環境無關的方式來描述、管理和執行一個完整的可擴充套件的大型系統。

在此之前,服務的開發環境、預生產環境和生產環境都有著很大的不同。Kubernetes 使用新的方式能夠以簡單、規範的形式描述、執行一個可擴充套件的大型完整系統,極大地降低了構建和管理微服務系統的成本。

需要註意的是,這些重要的技術里程碑都是透過不斷的演化和相互疊加而來的,並且通常是配合使用的。從技術的角度上看,技術革命更多地產生於進化,而不是破壞性顛覆。比如,容器通常執行在虛擬機器上,虛擬機器需要執行在作業系統上,而作業系統執行在物理機上。

總結一下,我們可以看到虛擬化技術是如何演進的。

 

雖然從技術角度上看, Kubernetes 是基於之前的技術演化而來,並非顛覆性的新技術,但是它卻在商業角度上產生了革命性的價值。 

我通常會很謹慎的對待各種新技術,因為大多數時候它們只是曇花一現。但是 Kubernetes 就像 Linux,虛擬機器和 Git 曾經在他們各自領域一樣,正在逐漸成為一項穩固的基礎性技術。 

簡而言之,Kubernetes 可能是目前所有雲應用程式開發組織能夠做出的最安全的投資,如果應用得當,可以顯著提高應用開發和交付的速度和質量。

本文有刪減, 原文連結:

https://blog.britesnow.com/understanding-kubernetes-value-867c163d5ed2

博主簡介:
劉欣,前IBM架構師,近20年從業經驗,”碼農翻身”公眾號作者,暢銷書《碼農翻身》作者,用故事講解技術是拿手好戲。撥開技術迷霧,輕鬆瞭解技術本質,從”碼農翻身”開始。
贊(0)

分享創造快樂