<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
很多公司由於歷史原因,都會有自研的RPC框架。
尤其是在2015-2017期間,Spring Cloud剛剛面世,Dubbo停止維護多年,很多公司在設計自己的RPC框架時,都會基於Spring Cloud做二次開發。並且會大量使用Spring Cloud Netflix相關的模組與程式碼。
因此,我們去梳理一下Spring Cloud的前世今生,以及未來雲原生髮展的趨勢,可以給這些RPC框架的演進帶來一些啟發。
Spring Cloud 自 2015 年 3 月推出之後,很快就在 Java 微服務生態中,成為開發人員的首選技術棧。
Spring Cloud 在 Spring Boot 的基礎上,保留 Java 開發習慣,加入分散式特性,提供了一系列通用工具來幫助開發者在分散式系統裡快速構建一些常見模式,現在已成為使用範圍最廣的微服務架構之一。
Spring Cloud提供了微服務開發所需的設定管理、服務發現、斷路器、智慧路由、叢集狀態管理等元件。最重要的是,跟Spring Boot框架一起使用的話,會讓你開發微服務架構非常方便。
Spring Cloud本身不是新的框架,它是一系列框架的有機組合,利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發。
注意,並非所有元件都由Spring提供,Netflix扮演了重要的角色。註冊中心Eureka、熔斷器Hystrix、負載均衡元件Ribbon、閘道器Zuul等重要元件均由Netflix提供,主要貢獻來自 Netflix OSS。
由於Netflix在開源投入上的策略調整,Eureka、Hystrix、Ribbon 相繼宣佈停止維護,社群上人心惶惶,因為當時絕大部分開發者認為 Spring Cloud = Spring Cloud Netflix。
但實際上 Spring Cloud 是一套規範,這套規範並不是只有 Netflix OSS,還有 Spring Cloud Alibaba,Spring Cloud Zookeeper,Spring Cloud Consul,Spring Cloud Kubernetes 這些實現,最近騰訊也開源了Spring Cloud Tencent(暫時還沒有進入Spring Cloud 官方社群)。
Spring Cloud Alibaba(後面簡稱SCA) 是目前國內Spring Cloud最活躍、元件最多,也是最容易替代 Spring Cloud Netflix 的實現。
下面張圖對相關功能和元件的對映關係表達得比較清晰了。
(來源:
https://www.oschina.net/question/4489239_2321891)
我們可以看到,SCA對Spring Cloud的實現,採用了幾個目前非常熱門的專案,基本上可以做到快速接入,穩定使用。
不過這裡有個地方需要注意,從SCA 的2.2.7-RELEASE版本後,不再支援dubbo的快速接入了,而是直接使用了Spring Cloud的原生呼叫方式(OpenFeign和RestTemplate)。
為什麼呢?查了下issue找到了社群相關討論
https://github.com/alibaba/spring-cloud-alibaba/issues/2398。
總結起來有幾點原因:
Dubbo自身生態非常成熟,一般不需要跟Spring Cloud混用,一般是二選一。尤其是Dubbo 3.x後支援了Mesh,通過rest方式呼叫完全可以自成體系。
Spring Cloud Tencent(後面簡稱SCT)是騰訊最近開源的SC實現框架,專案地址
https://github.com/Tencent/spring-cloud-tencent。
這是一整套自研的元件,以騰訊雲polaris為核心,實現 註冊中心、設定中心、服務路由、限流 等等。
目前相對來說騰訊集團內部使用較多,外界案例較少。
Spring Cloud Netflix雖然不再維護,但是Spring Cloud依然火熱,SCA目前看可能會成為國內最佳實現選擇。
首先,Spring Cloud認為自己還是比較符合雲原生的
from https://github.com/spring-cloud/spring-cloud-commons:
Cloud Native is a style of application development that encourages easy adoption of best practices in the areas of continuous delivery and value-driven development. A related discipline is that of building 12-factor Applications, in which development practices are aligned with delivery and operations goals — for instance, by using declarative programming and management and monitoring. Spring Cloud facilitates these styles of development in a number of specific ways. The starting point is a set of features to which all components in a distributed system need easy access.
但是Spring Cloud 和目前最火熱的雲原生Service Mesh體系還是有非常大的差異。
可以從以下四個方面的對比
(表格來源:
https://medium.com/codex/a-spring-cloud-compatible-service-mesh-6ce58c571012)
前面談到了,Spring Cloud體系實際上是定義了一套程式設計模型(規範),包括服務註冊發現、負載均衡、熔斷降級等等。
但是這裡有些內容是否可以應用無關,下沉到基礎設施中?
在雲原生環境下,是可以的。
也就是Spring Cloud定義的部分規範,其實在雲原生環境下可能略顯冗餘了,Service Mesh可以做到應用無關。
當然,Spring Cloud能做到Service Mesh做不到的一些事情,比如 介面級別的治理、更細粒度的鏈路追蹤 等等。
另外,跨語言也是Service Mesh的一大殺器。
雲原生環境下,容器化執行,多雲部署,使得微服務不在關注到底是什麼技術棧,python、c++、Nodejs都可以非常容易在雲原生環境下執行。
但是Spring Cloud只適合java生態,並且侵入到java應用程式程式碼中,對於多語言是比較無力的。(其實這裡也是 容器化 後,對java語言統治力的一種衝擊)
從成熟度來說,Service Mesh的istio + envoy的組合目前已經不少大中廠的實踐案例,但是跟Spring Cloud比起來,還是差不少。
2022 年 9 月 24 日,由雲原生社群主辦的第一屆 Service Mesh Summit 在上海成功舉辦,從大會內容上,我們可以看到,Service Mesh在 易用性、通用性、學習成本上,都還是比較高的。
市場在關注服務網格時更加得理性,而服務網格本身也更加“務實”,以實現快速平穩落地為出發點,解決落地過程中的各種問題,比如效能、資源佔用、跨叢集、多協定支援、功能擴充套件等等。解決這些問題,或者堅持在 Istio/Envoy 體系上繼續優化;或者轉投其他的實現,更換資料面代理,如 MOSN、Pipy、APISIX、Linkerd Proxy;再或者引入其他的技術來解決,如 eBPF、WASM、RDMA、DPDK 等等。
目前java為主的微服務體系還是比較完整的,所以即使使用了k8s,也可以僅僅把k8s用作容器編排,不需要對接istio的服務治理能力。
Spring Cloud全家桶肯定能滿足java體系下的微服務一站式設計與實現,這點毋庸置疑。
當然,問題主要還是在雲原生下,多語言的治理能力會有所缺失。
另外,流量管理上,和knative、seldon等平臺打通會比較麻煩,它們都是直接對接istio進行流量管理的。
Mesh體系下,由於天然支援HTTP呼叫,因此Spring Cloud的呼叫接入還是比較方便的,也有Spring Cloud Kubernetes專案做了註冊中心的打通。
核心的痛點在於對統一控制面的服務治理的接入。
對於Spring Cloud來說,就是要實現Proxyless體系,但是目前官方社群沒有看到這方面的特別探索。
倒是Spring Cloud Alibaba的服務治理元件Sentinel有一些變化。
Sentinel 的歷史
另外,Sentinel 社群正在將流量治理相關標準抽出到 OpenSergo 標準中,Sentinel 作為流量治理標準實現。有關 Sentinel 流控降級與容錯 spec 的最新進展,請參考 opensergo-specification。
但是sentinel重點還是關注容錯能力,路由能力是缺失的。
所以,只能繼續關注OpenSergo會怎麼補齊這塊能力了。
與Spring Cloud體系一樣聞名的Dubbo體系,我們已經可以看到dubbo 3.x從 Mesh 到 Proxyless 對雲原生的全面擁抱。
不僅從服務註冊發現模型上做了徹底改變(介面級別變成了應用級別),也在治理能力上對接xds。
dubbo 3.1.0作為一個重要的里程碑已經正式釋出
也許跟隨 Dubbo的腳步,可能可以更穩步走向雲原生。
到此這篇關於SpringCloud怎麼邁向雲原生?的文章就介紹到這了,更多相關SpringCloud雲原生內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45