公眾號「架構成長指南」,專註於生產實踐、雲原生、分散式系統、大數據技術分享。 概述 隨著科技的進步,軟體系統的部署架構也在不斷演進,從以前傳統的物理機到虛擬機、Docker和Kubernetes,我們經歷了一系列變化。 這些技術的引入給我們帶來了更高的資源利用率、更快的部署速度和更強大的擴展性,下麵 ...
公眾號「架構成長指南」,專註於生產實踐、雲原生、分散式系統、大數據技術分享。
概述
隨著科技的進步,軟體系統的部署架構也在不斷演進,從以前傳統的物理機
到虛擬機
、Docker
和Kubernetes
,我們經歷了一系列變化。
這些技術的引入給我們帶來了更高的資源利用率、更快的部署速度和更強大的擴展性,下麵讓我們一起探索這些演進,瞭解如何從傳統部署走向現代化架構,為軟體系統的開發和部署帶來更多的便利和靈活性。
物理機部署
物理機部署在電腦早期階段比較盛行,因為那時候虛擬化和雲計算等技術還沒有普及,物理機是主要的部署選擇。
優點
- 性能和資源控制:物理機提供了直接訪問硬體資源的能力,在某些對性能要求較高的應用場景中,可以實現更好的性能表現。
- 硬體特定需求:某些應用程式可能對特定硬體設備或外部介面有依賴,例如需要直接訪問物理網卡或存儲設備
缺點
系統資源利用率較低
- 不同應用程式依賴於同一類庫的不同版本,必須使用不同的機器
- 不同的應用程式不能共用同一埠,這使得在某些場景下,即使計算節點還有足夠的計算資源,依然無法通過 部署多個實例來提供服務
系統資源無法進行有效隔離
- 很可能出現一個應用程式耗光所有資源,導致其他應用程式無法正常運行的情況。
- 無法做到應用程式快速彈性擴容
運維方式
物理機代表:IBM小型機、HP小型機,在此架構和部署的模式下,哪種應用部署在哪些節點上,往往是固定不變的,這使得自動化運維變得困難重重,通常的做法是人工維護應用與伺服器之間的關係表
虛擬機部署
虛擬機是一種將物理電腦資源劃分為多個獨立的虛擬環境的技術,通過虛擬化軟體,可以在一臺物理伺服器上運行多個虛擬機,雲計算的興起和發展,使得虛擬機得到了更廣泛的應用,截止目前,大部分還是有在用虛擬機部署。
優點
- 硬體資源隔離
- 資源的充分利用
缺點
- 運維管理成本較高,需要管理的主機數量是原來的數倍,管理複雜度的提升顯而易見
- 依賴庫需要單獨安裝,版本很難保持一致
- 不容易遷移
運維方式
小公司自建私有雲,採用業界開源OpenStack的雲平臺進行管理,大的公有雲公司採用自己的雲平臺進行管理,如:阿裡雲、騰訊雲、華為雲、青雲、AWS
容器化部署
容器化部署主要是以Docker
為代表,Docker
的出現填補了傳統虛擬化技術的一些不足之處,如啟動時間長、資源占用高等問題。它通過利用Linux內核的容器特性,實現了更為輕量級的虛擬化解決方案,所以不少公司採用了這種方式部署。
優點
一致的運行環境
提供了除內核外完整的運行時環境,確保了應用運行環境一致性
快速移植
由於 Docker 確保了執行環境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上運行,無論是物理機、虛擬機、公有雲、私有雲,甚至是筆記本,其運行結果是一致的
更快速的啟動時間
傳統的虛擬機技術啟動應用服務往往需要數分鐘,而 Docker 容器應用,由於直接運行於宿主內核,無需啟動完整的操作系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間
更高效的利用系統資源
由於容器不需要進行硬體虛擬以及運行完整操作系統等額外開銷,Docker 對系統資源的利用率更高。無論是應用執行速度、記憶體損耗或者文件存儲速度,都要比傳統虛擬機技術更高效
缺點
由於容器數量龐大,通過手動運維方式工作量比較大
與虛擬機比較
特性 | 容器 | 虛擬機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬碟使用 | MB | GB |
性能 | 接近原生 | 弱於 |
系統支持量 | 單機支持上千個容器 | 一般幾十個 |
管理成熟度 | 已k8s為代表 | 以OpenStack、vmware為代表 |
K8S部署
儘管Docker
提供了一種方便的容器化解決方案,但在進行大規模部署和管理時,會面臨大量的版本更新升級部署,以及高可用的管理等問題。
而Kubernetes
提供了更強大和全面的容器管理和編排功能,他能夠自動處理複雜的任務,如容器調度、擴縮容、服務發現和負載均衡等,簡化了部署和管理過程,同時提供了更好的可擴展性和可靠性,所以是現在各大公司採用的主流部署方式。
優點
應用自動化部署
只需要執行一個命令,就可以把服務啟動起來,而不用關心該部署到那個節點上。
彈性擴縮容
使用一個簡單的命令、控制台 或基於 CPU 記憶體使用情況自動對應用程式進行擴容或者縮容
灰度發佈
保證在應用版本升級時,對線上用戶無感知
多環境部署支持
支持公有雲,私有雲,混合雲,多重雲部署
可維護好
提供了專門的運維繫統界面,可以線上管理大規模應用,進行升級、回滾、監控等,比如 Rancher
、KubeSphere
缺點
K8s 系統架構比較複雜,對於初學者門檻有點高
運維方式
採用k8s進行容器管理,在發佈服務時,構建基礎容器鏡像,到鏡像倉庫,在對應環境訪問鏡像倉庫,拉取對應容器鏡像進行部署
以上我們介紹了物理機、虛擬機、容器化和K8s部署區別,我們可以根據自身的需求選擇最適合自己的部署方式,希望對你有所幫助。