天天看點

Spring Cloud:面向應用層的雲架構解決方案

上期文章我們介紹了混合雲,以及在實際操作中我們常見的幾種混合雲模式。今天我們來聊一聊Spring Cloud如何解決應用層的雲架構問題。

對于Spring Cloud,你大概不會陌生,它跟Spring生态中的另一個開源項目Spring Boot,基本上已經成為國内絕大多數公司向微服務架構轉型時的首選開發架構。

Spring Boot可以支援快速開發單個微服務應用,Spring Cloud則提供一系列的服務治理架構,比如服務注冊、服務發現、動态路由、負載均衡以及熔斷等等能力,可以将一個個獨 立的微服務作為一個整體,進行很好的管理和維護。

從業界實際使用情況和回報來看,由于兩者完美的搭配,Spring Cloud和Spring Boot确實是可以通過相對較低的技術成本,讓開發人員友善快速地搭建起一套分布式應用系統,從 而進行高效的業務開發。

同時,優秀的服務治理能力,也為其後續在穩定性保障工作方面打下了不錯的基礎。

(注:因為Spring Cloud必須基于Spring Boot架構才能發揮它的治理能力,是以下面我們提到的Spring Cloud是預設包含了Spring Boot架構的。)

是以,通常我們更多地是把Spring Cloud作為微服務應用層面的開發架構,幫助我們提升開發效率。看起來,它貌似跟“雲”這個概念沒有什麼直接關系。

而實際上,在将應用與雲平台連接配接方面,Spring Cloud也發揮着非常核心的作用。這也是為什麼本期文章的标題沒有直接定義為微服務治理架構,而是面向應用層的雲架構。

下面我們具體來看看。

Spring Cloud架構中雲的影子

目前整個Spring生态是由Pivotal這家商業公司在主導,但是Pivotal更大的目标是要為客戶提供雲上的端到端的解決方案。

是以Pivotal最早提出了Cloud-Native(雲原生)的概念,或者說是一種理念,目的是幫企業提供雲上業務端到端的技術解決方案,全面提升軟體傳遞效率,降低運維成本。簡單來說,就 是除了業務解決方案和代碼,其它事情都可以交給平台處理。

基于這樣的理念,Pivotal打造了自己的雲原生解決方案PCF(Pivotal Cloud Foundry),包括多雲和跨雲平台的管理、監控、釋出,以及基礎的DB、緩存和消息隊列等等,一應 俱全。

我們可以看到,在PCF整體解決方案中,Spring生态是向使用者的業務應用層架構拓展的非常重要的一環,幫助其進行高效的業務開發,并提供後續的穩定性保障。

Spring Cloud:面向應用層的雲架構解決方案

是以,這個時候,Spring Cloud除了提供微服務治理能力之外,還成為了微服務應用與雲平台上各項基礎設施和基礎服務之間的紐帶,并在其中起到了承上啟下的關鍵作用。

至此,我們可以得出這樣一個判斷,也是本篇文章想傳遞的一個資訊:Spring Cloud不僅僅是微服務治了解決方案,它同時還是面向應用層的雲架構解決方案。

雖然Pivotal最早提出了雲原生的理念,也提供了PCF這樣的雲原生整體商業解決方案,但是從目前業界的實際應用情況來看,Spring Cloud這個局部解決方案的應用更為廣泛。

而且從圖中我們看到,其與AWS的深度整合,也正反映出目前Spring Cloud在整個業界的影響力和被應用的廣泛程度。

插句題外話。早期阿裡開源的Dubbo,其實是跟Spring Cloud類似的微服務架構,并且經過阿裡大規模的應用實踐,可以說是非常優秀的開源項目。早些年國内在選擇微服務架構 時,Dubbo基本是首選,但是近年來因為開源維護不力,很早停止了版本更新,導緻大量的使用者流失,促使使用者紛紛湧入Spring Cloud陣營。

而Spring Cloud經過近幾年的發展,深入了解使用者需求和痛點,不斷完善改進,早已蛻變成我們所說的應用層的雲架構,緊跟整個雲計算發展趨勢的大潮。

最近Dubbo重新開機開源維護,與阿裡雲EDAS産品體系整合,很大原因就是因為在使用者技術架構體系裡,缺少了Spring Cloud這樣的産品,再加上Dubbo原有的一些使用者基礎,重新開機維護無論從哪方面看都是值得的。但是需要多久才能重拾使用者的信心,就要看Dubbo的後續表現了。

以Spring Cloud為代表的雲原生模式也是目前業界的主流模式。雖然它可能以解決應用層面的問題為主,尚未與雲平台全面對接整合,不過它所帶動起來的雲原生的理念卻被業界越來越廣泛地接受。

同時,随着容器及編排技術的發展和成熟,就出現了另外一個雲原生的體系,且活躍程度非常高:它就是以Google為首的CNCF(Cloud Native Computing Foundation)。下面 我們一起看一下。

CNCF

CNCF設想中的雲原生分層架構示意圖:

Spring Cloud:面向應用層的雲架構解決方案

CNCF組織成立後,圈中大佬們紛紛加入,比如AWS、微軟、思科、Pivotal等等,國内的騰訊雲、阿裡雲和華為也參與其中,可見其影響力有多大。

CNCF的核心項目除了K8S外,還有Goggle的gRPC,Docker的ContainerD,CoreOS的Rkt等重量級開源項目。同時也有與Spring Cloud類似,但更加通用的微服務治理架構,如Linkerd和Envoy,它們被稱為Service Mesh(服務網格)。

這些項目的優勢在于,它們是與K8S內建和配套的,可以很便捷地應用于K8S生态中。雖然K8S自身也是支援服務發現、負載均衡這些基本的微服務治理的,但是在CNCF中,它顯得更加包容與開放,不斷吸引業界最佳實踐的開源産品加入,共同打造更加開放的生态。下圖為CNCF目前的項目。

Spring Cloud:面向應用層的雲架構解決方案

同時,因為目前K8S已實際上成為業界容器編排方面的标準,且被廣泛應用,是以各大雲廠商,無論公有雲和私有雲,都會主動支援K8S在雲計算體系中的落地。 是以,我們根本不用擔心K8S與雲平台上 的資源和各種服務的對接問題,而且它最終也會将應用與雲平台很好地連接配接起來,讓開發者能夠更加專注于業務開發。至于剩下的工作,則都交由平台去做。

目前,CNCF的各個項目社群非常活躍,以至于我們一提到雲原生,就會聯想到基于CNCF和K8S的生态體系。雖然Google和CNCF都不是雲原生的提出者,但目前看來,它們都是 雲原生的最佳實踐者。

可以預見的技術發展趨勢

我們可以看到,無論是Spring Cloud、CNCF、雲原生、還是K8S等等新技術或理念,究其根本,都是為了能夠更快更好地支援業務需求的快速實作。 從雲原生的理念中,我們可以看到,跟業務無直接關系且相對通用的技術在不斷地被标準化,而且标準化層面越來越高。

從最底層的硬體和網絡裝置,到上層資料庫、緩存、檔案存儲以及消息隊列等等基礎元件服務,再到Spring Cloud和Service Mesh這樣的應用層面的服務管理和治理能力,都正變 得越來越标準和通用。

技術每被标準化一層,原來繁瑣低效的工作就少一些,技術标準化的層面越高,技術門檻就會變得越低。我們可以作個大膽的預想:或許未來真的隻會有業務解決方案和業務代碼。