Spring Cloud微服務架構進階》——3Spring Cloud的基礎:Spring Boot">《Spring Cloud微服務架構進階》——3Spring Cloud的基礎:Spring Boot
764
2025-03-31
1.2 微服務架構的流派
常見的微服務架構方案有四種,分別是ZeroC IceGrid、基于消息隊列、Docker Swarm和Spring Cloud。下面分別介紹這四種方案。
1. ZeroC IceGrid
ZeroC IceGrid是基于RPC框架Ice發展而來的一種微服務架構,Ice不僅僅是一個RPC框架,它還為網絡應用程序提供了一些補充服務。Ice是一個全面的RPC框架,支持C++、C#、Java、JavaScript、Python等語言。IceGrid具有定位、部署和管理Ice服務器的功能,具有良好的性能與分布式能力,下面具體介紹IceGrid的功能。
Ice的DNS。DNS用于將域名信息映射到具體的IP地址,通過域名得到該域名對應的IP地址的過程叫做域名解析。IceGrid為Ice提供了類似的服務:它允許Ice客戶端通過簡單的名稱來查找Ice對象。Ice客戶端可以通過提供此對象的完整尋址信息來訪問服務器中的Ice對象,例如chatRoom1:ssl -h demo.zeroc.com -p 10000。這樣的硬編碼雖然很簡單,但缺乏靈活性。因為需要為Ice服務器(本例中端口為10000)選擇一個固定的端口號,因此將Ice服務器移到不同的主機上需要更新其客戶端。
IceGrid提供了對這種尋址信息使用符號名稱的選項,例如chatRoom1@chatRoomHost。當Ice客戶端嘗試訪問chatRoomHost中的對象時,它會要求IceGrid提供與此符號名稱關聯的實際地址。例如,IceGrid返回-h demo.zeroc.com -p 65431,客戶端就可以直接并透明地連接到服務器。IceGrid架構如圖1-2所示。
圖1-2 IceGrid架構圖
服務器部署。若直接通過IP地址+端口號的方式,當Ice客戶端嘗試連接到未運行的服務器時,連接將會失敗。通過符號或間接尋址,IceGrid有機會檢查目標服務器是否正在運行,并在服務器未運行時啟動或重新啟動服務器。可以配置IceGrid以各種方式啟動服務器:手動(通過管理命令)、按需(無論何時請求服務器)和IceGrid始終保持服務器運行。
服務器的復制。IceGrid允許部署同一服務器的多個副本,并可以配置IceGrid將符號名稱解析到此服務器副本的策略。可以在所有副本中對客戶端進行負載平衡,或者使用主備配置,客戶端只要保持可用狀態,就使用主備配置。
管理和監控。IceGrid的管理工具可以完全控制已部署的應用程序。諸如啟動服務器或修改配置設置等活動只需單擊鼠標即可。圖1-3為IceGrid管理工具的界面。
IceGrid當前最新的版本為3.7.1,在3.6版本之后增加了容器化的運行方式。總的來說,IceGrid作為微服務架構早期的實踐方案,其流行時間并不是很久,當前國內選用這種微服務架構方案的公司非常少。
2.基于消息隊列
在微服務架構的定義中講到,各個微服務之間使用“輕量級”的通信機制。所謂輕量級,是指通信協議與語言無關、與平臺無關。微服務之間的通信方式有兩種:同步和異步。同步方式有RPC,REST等;除了標準的基于同步通信方式的微服務架構外,還有基于消息隊列異步方式通信的微服務架構。
圖1-3 IceGrid Admin
在基于消息隊列的微服務架構方式中,微服務之間采用發布消息與監聽消息的方式來實現服務之間的交互。圖1-4是一個簡單的電商系統中商品服務、用戶服務、訂單服務和庫存服務之間的交互示意圖,可以看到消息中間件(MQ)是關鍵,它負責連通各個微服務,承擔了整個系統互聯互通的重任。
基于消息隊列的微服務架構是全異步通信模式的一種設計,各個組件之間沒有直接的耦合關系,也不存在服務接口與服務調用的說法,服務之間通過消息來實現彼此的通信與業務流程的驅動。基于消息隊列的微服務架構應用的案例并不多,更多地體現為一種與業務相關的設計經驗,每個公司都有不同的實現方式,缺乏公認的設計思路與參考架構,也沒有形成一個知名的開源平臺。因此,如要實施這種微服務架構,需要項目組自己從零開始去設計實現一個微服務架構基礎平臺,這可能會造成項目的成本較高且風險較大,決策之前需要進行全盤思考與客觀評價。
3. Docker Swarm
Swarm項目是Docker公司發布的三劍客中的一員,用來提供容器集群服務,目的是更好地幫助用戶管理多個Docker Engine,方便用戶使用。通過把多個Docker Engine聚集在一起,形成一個大的Docker Engine,對外提供容器的集群服務。同時這個集群對外提供Swarm API,用戶可以像使用Docker Engine一樣使用Docker集群。
如圖1-5所示Docker三劍客包括:Machine、Compose和Swarm。通過Machine可以在不同云平臺上創建包含docker-engine的主機。Machine通過driver機制,支持多個平臺的docker-engine環境的部署。Swarm將每一個主機上的docker-engine管理起來,對外提供容器集群服務。Compose項目主要用來提供基于容器的應用的編排。用戶通過yaml文件描述由多個容器組成的應用,然后由Compose解析yaml文件,調用Docker API,在Swarm集群上創建對應的容器。Swarm集群結構如圖1-6所示。
圖1-5 Docker三劍客
圖1-6 Docker Swarm結構
從圖1-6中我們看到一個Swarm集群中有兩種角色的節點:
Manager:負責集群的管理、集群狀態的維持及將任務(Task)調度到工作節點上等。
Worker:承載運行在Swarm集群中的容器實例,每個節點主動匯報其上運行的任務并維持同步狀態。
Docker Swarm對外提供Docker API,自身輕量,學習成本、二次開發成本都比較低,是一個插件式框架。從功能上講,Swarm是類似于Google開源的Kubernetes微服務架構平臺的一個產品。
4. Spring Cloud
Spring Cloud是一個基于Spring Boot實現的云應用開發工具,是一系列框架的集合,當添加這些工具庫到應用后會增強應用的行為。Spring Boot秉持約定優于配置的思想,因此可以利用這些組件基本的默認行為來快速入門,并在需要的時候可以配置或擴展,以創建自定義解決方案。
Spring Cloud利用Spring Boot的開發便利性,巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以基于Spring Boot組件進行開發,做到一鍵啟動和部署。Spring Cloud并沒有重復制造輪子,它只是將目前比較成熟、經得起實際考驗、優秀的開源服務框架組合起來,通過Spring Boot進行封裝,屏蔽掉復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
以下為Spring Cloud的核心功能:
分布式/版本化配置
服務注冊和發現
服務路由
服務和服務之間的調用
負載均衡
斷路器
分布式消息傳遞
還有很多基礎的功能沒有列出,每個功能對應Spring Cloud中的一個組件,包括 Spring Cloud Config、Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius …)、Spring Cloud Bus等組件。
微服務 Kubernetes Spring Cloud Spring
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。