在講能不能替換之前,我們先看看 Spring Cloud 是什麽 ?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring Cloud並沒有重復制造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,透過Spring Boot風格進行再封裝遮蔽掉了復雜的配置和實作原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
我們可以看出,Spring Cloud 是一套微服務框架,和部署形態無關,事實上,你的整個Spring Cloud 是完全可以部署到Kubernetes中。
然後我們再看下, sidecar+kubernetes 架構 是否就是Istio之類的Service Mesh ?
我覺得包括Service Mesh,但絕不僅於此。sidecar+kubernetes 架構 真正應該是mecha架構。如下圖:
透過上圖我們可以清晰看出,未來的sidecar 不僅僅包括envoy,同時包括其他公共業務邏輯的模組,例如dapr。
那麽接下我們看看能不能完全取代?
首先我們看看Istio等Service Mesh能解決什麽?
透過負載均衡、服務間的身份驗證、監控等方法,Istio 可以輕松地建立一個已經部署了服務的網路,而服務的程式碼只需很少更改甚至無需更改。透過在整個環境中部署一個特殊的 sidecar 代理為服務添加 Istio 的支持,而代理會攔截微服務之間的所有網路通訊,然後使用其控制平面的功能來配置和管理 Istio,這包括:
我們可以看出,Service Mesh 已經提供了大部份Spring Cloud 提供的功能了。諸如服務發現註冊、配置中心、負載均衡、斷路器、數據監控等。
但是訊息匯流排之類的偏業務的功能,Service Mesh 並不能解決。此時Dapr出場了。
Dapr是一個開源,可移植的,事件驅動的執行時,使開發人員可以輕松構建在雲和邊緣上執行的彈性,微服務架構的無狀態和有狀態應用程式。 Dapr包含所有程式語言和開發人員框架,並簡化了構建應用程式(例如電子商務範例)的過程。
Dapr 提供了一些常用的業務相關的功能塊。比如:
看到這裏,我們基本上可以得出,Dapr 側重於業務功能。
所以 sidecar+kubernetes 形態的mecha架構完全可以取代Spring Cloud。 而且具備更多優勢: