軟體工程的基石:Docker,撐起千萬級別伺服器的絕對基石,基礎介紹

2024/04/29閱讀時間約 3 分鐘

軟體工程的基石:Docker,這個名詞或許對於很多新手都很陌生,但他卻決定了上百萬名工程師能順利交付程式碼,甚至這項技術也可以說他撐起千萬級別伺服器的絕對基石

為什麼需要 Docker?

讓我們來看一個還蠻經典的例子:
老板:「為什麼程式碼在公司伺服器上炸了?!」
工程師:「可是它在我的電腦上運行得很好啊!」
老板:「可是伺服器炸了!!!」

這種問題的一個常見原因是工程師使用的電腦與伺服器的作業系統不同,導致相容性問題。

而 Docker是怎麼解決這個問題的呢?
Docker 有一個概念就是「容器 Container」,其實就是在電腦當中模擬出虛擬電腦出來,讓這個虛擬電腦來運行程式。
他允許程式運行在這個隔離的空間,這種隔離讓開發和生產環境的一致性得以保證,大幅降低出錯的可能性。

另一個關鍵概念是「映像檔 Image」,這相當於容器的藍圖。
映像檔包含了應用運行所需的一切資源,從操作系統到應用配置。
當建立容器時,Docker 會根據這份藍圖來創造一個完全相同的運行環境。

一台電腦可以同時運行多個容器,而這些容器彼此獨立且互不干擾。


在理解了 Docker 的容器概念,我們來研究一下

Docker 是如何支撐起千萬級用戶流量的伺服器的。

首先有個重點需要去知道,Docker 實際上僅是一個容器化技術
可以將服務打包成一個能隨時部署的寶可夢球(? ​

為了支撐起巨大的流量我們會使用其它工具
比如說 Kubernetes(簡稱 k8s) 或 Docker Swarm 來做到大型服務需要的兩個重大功能
負載平衡與無縫更新


什麼是負載平衡

為了應付大量人流,用上性能越好的伺服器能同時服務更多人
但隨著用戶增加,即使是最頂尖的設備也可能會達到極限。
而且前期可能沒那麼多錢購置頂尖伺服器
那⋯科技不夠,人數來湊
通常大公司會讓多台電腦同時運行同個服務
平均分散壓力這時候,容器化技術就派上用場了。
當用戶量少時,可以只運行少數幾個容器;
當用戶激增時,可以迅速擴展到更多的容器來應對需求。
此外,Docker 的映像檔技術保證了部署的快速與一致性,使得伺服器能夠在幾秒鐘內啟動新的容器,靈活應對流量波動。這種快速部署的能力尤其適合處理瞬間的高流量事件。


什麼是負載平衡

無縫更新指的是在不中斷服務的情況下更新應用
其實原理很簡單,我們知道伺服器中會同時有好幾個容器在運作
那就先讓一個容器下線更新,其他容器維持舊版本運作,等更新完畢在上線換其他容器更新,便能達成永遠有 working 的容器服務使用者


然而正如我剛剛所提到 Docker 只是容器化技術,他只能把服務包成一個容器
也就是說 Docker 只要涉及到多個容器的處理,那就已經超過 Docker 的管轄範疇了


這時候就該 k8s 和 Docker Swarm 上場了!

他們都是一種容器編排平台,能夠支援自動部署、無縫更新、負載平衡的管理

你可以想像成容器們的主管。

k8s 的設計目標是提高大規模應用的可擴展性和容錯性。

然而,k8s 的設置和運維成本相對較高,可能不適合中小新創或企業。

Docker Swarm 則是 Docker 自家的容器編排工具,對已熟悉 Docker 的團隊,有著相對低的成本。




0會員
3內容數
Ray 貓 - 全端網頁工程師、遊戲開發師 這邊會分享一些科技相關、視覺藝術、前端的最新資訊 - 台灣大學課程網全端工程師 Ziphus 獨立開發者 - 喜歡挑戰也喜歡冒險 電子郵件 [email protected]
留言0
查看全部
發表第一個留言支持創作者!
從 Google News 追蹤更多 vocus 的最新精選內容