微服務部署方案詳解 -圖文全面總結-
大家好,我是 mikechen。
微服務部署方案是微服務非常重要的環節,也是大型架構的核心技能,下面詳解 4 種常見的微服務部署方案 @mikechen
微服務實例部署
微服務實例部署:這種部署模式,每個微服務實例運行在獨立的端口上,並且多個服務實例,可以部署在同一個主機上。
如下圖所示:
每個微服務實例,擁有獨立的運行時環境,每個服務可以獨立管理其依賴的庫、框架、和配置........ 等等。
這些服務實例,雖然共用同一個主機,它們之間的資源、和運行環境是完全隔離的。
每個微服務實例由其獨立的代碼庫構建、和部署,這使得開發、測試、和部署,都可以獨立進行。
以及,每個服務可以根據需求獨立擴展、更新和管理,提供了極大的靈活性。
以上,都是該模式的優點,但也有它的缺點。
比如:即使多個實例共享同一主機,仍然會消耗更多的資源,因爲各自獨立的運行環境,而消耗較多的資源。
微服務容器部署
微服務容器化部署,是現代應用程序開發、和運維的重要升級。
微服務容器化部署,將每個微服務打包成一個獨立的容器,從而提供更好的隔離性、可移植性、和可擴展性。
如下圖所示:
容器化是一種將應用程序,及其依賴項打包在一起的技術,確保應用程序可以在任何環境中一致地運行。
非常類似我們生活中的 “集裝箱” 場景,如下圖所示:
每個集裝箱是一個獨立的單元,貨物之間互不影響,即使裝載了不同種類的貨物,也不會相互污染、或發生衝突。
而容器,在軟件開發中,容器也是一種標準化的單元,包含了應用程序、及其所有依賴項。
容器是一種輕量級、獨立的可執行包,它包含了:運行軟件所需的一切,包括:代碼、運行時、系統工具、系統庫... 等。
容器相比於傳統虛擬機更輕量,能夠高效利用主機的 CPU、內存。。。。。等資源。
爲什麼容器更高效,原因很簡單:就是容器共享操作系統內核,但每個容器仍然保持自身的運行時環境,這大大減少了資源開銷。
微服務 Serverless 部署
微服務的 Serverless 部署,結合了微服務架構的靈活性、和 Serverless 的高效運維特點,使得應用開發、和運維更加簡化和經濟。
Serverless 部署的核心思想:是通過雲服務提供商提供的按需運行、自動擴展、和按使用付費的計算模型。
在 Serverless 架構中,基礎設施的管理,完全由雲服務提供商負責。
包括:計算資源的分配、負載均衡、擴展 / 和故障恢復。。。等等。
開發者不再需要手動配置、和維護服務器、虛擬機、或容器集羣,顯著減少了運維複雜度。
如下圖所示:
微服務的 Serverless 部署,使微服務的部署和運行變得更加高效、靈活、和經濟。
比如:Serverless 模型中的微服務部署,是基於實際使用的計算時間、和資源來計費的。
當函數不被調用時,不會產生任何費用,這種付費方式大幅降低了應用程序的運營成本,特別是在流量不穩定或低使用率的場景中。
微服務容器編排部署
微服務容器編排部署,就是使用編排器(如:Kubernetes、Docker Swarm... 等)管理、和部署微服務。
如下圖所示:
編排器負責:微服務的自動化部署、擴展、負載均衡、健康檢查、和故障恢復。
比如:Kubernetes 是最廣泛使用的容器編排平臺,提供了豐富的功能和強大的生態系統。
它能夠管理大規模的容器化應用,包括:服務發現、負載均衡、自動擴展、滾動更新、資源調度、和監控... 等等。
優點:
高度自動化,支持大規模微服務的管理、和部署;
提供完善的服務發現、和負載均衡機制;
容易實現彈性伸縮、和容錯。
缺點:
學習曲線陡峭,配置、和維護成本較高;
依賴編排器,可能增加系統複雜性。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/8LcKdbQ5TVi6pyLbcsRSrQ