目錄
- 回顧
- 主流的微服務框架
- Spring Cloud 版本簡介
- Spring Cloud以往的版本發布順序排列如下:
- 由停更引發的"升級慘案"
- 哪些Netflix組件被移除了?
- 替換方案
- 服務注冊中心:
- 服務調用:
- 負載均衡:
- 服務降級:
- 服務網關:
- 服務配置中心:
- 服務總線:
- Spring Cloud Alibaba
- Spring Cloud Alibaba的開源組件
- Spring Cloud Alibaba的優勢
- 阿里巴巴強大的技術輸出能力
- 集成Dubbo,利用Dubbo在微服務領域的超高人氣
- 云原生趨勢,集成阿里云商業化組件
- Spring Cloud Alibaba的功能
- Spring Cloud Alibaba的版本
- 畢業版本依賴關系
- 組件版本依賴關系
- SpringCloud與SpringCloud Alibaba的區別
回顧
主流的微服務框架
框架名稱 | 說明 |
---|---|
Motan | Motan(茅臺)是新浪微博開源的RPC框架,官網:github.com/weibocom/motan |
JSF | JSF(京服)是京東的微服務組件。 |
MSEC | 毫秒服務引擎(MSEC, Mass Service Engine in Cluster)是騰訊的一個開源框架,適用于在廉價機器組成的集群上開發和運營分布式后臺服務。該項目集RPC、名字發現服務、負載均衡、業務監控、灰度發布、容量管理、日志管理、key-value存儲于一體,目的是提高開發與運營的效率和質量。 |
Dubbo | 阿里巴巴開源的RPC框架,后來加入Apache孵化器并成功畢業。新的名字為Apache Dubbo。 |
DubboX | 當當網基于Dubbo開源的PRC框架,后來并入Apache Dubbo。 |
Netflix OSS | Netflix OSS是由Netflix公司開發的一套代碼框架,用于解決分布式系統的問題,如:服務注冊與發現、負載均衡、熔斷降級、限流、網關等。 |
Spring Cloud | Spring Cloud是由Pivotal公司開源的微服務架構,提供了微服務系統架構的一站式解決方案。它提供了微服務開發所需的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態管理等組件。 |
Spring Cloud Netflix | Spring Cloud Netflix是Spring Boot和Netflix OSS在Spring Cloud規范下的集成。 |
Spring Cloud Alibaba | Spring Cloud Alibaba 是阿里巴巴提供的微服務開發一站式解決方案,是阿里巴巴開源中間件與 Spring Cloud 體系的融合。Spring Cloud Alibaba 正式入駐Spring Cloud 官方孵化器,并順利畢業。 |
Spring Cloud 生態下中微服務整理 | Spring Cloud并沒有重復制造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。 主流的微服務治理方案:Spring Cloud Netflix和Spring Cloud Alibaba |
serviceComb | ServiceComb項目是華為開源的微服務框架,2017 年 11 月捐贈給 Apache 社區并啟動孵化。作為一站式微服務解決方案。 解決方案級,多語言、多通信協議、標準服務契約、事務最終一致性開源開放,擁抱SpringBoot、SpringCloud、ServiceMesh 等主流生態,低門檻準入,業務侵入度低,架構松耦合 國內政府部門有的會選擇華為云,使用ServiceComb開發可以快速優雅的部署到華為云的的pass平臺上 |
Spring Cloud 版本簡介
- Spring Cloud 是一套整合了各大公司開源技術的規范,而這些開源技術的版本由各個公司來維護的,每個子項目都維護了自己的發布版本,所以它不像傳統意義上的版本,而是采用了倫敦地鐵站的名字根據字母表的順序結合對應版本的時間順序來定義一個大版本。
- 官網:https://spring.io/projects/spring-cloud#learn
Spring Cloud以往的版本發布順序排列如下:
- Angel(安吉爾)–>Brixton(布里克斯頓)–>Camden(卡梅登)–>Dalston(達斯頓)–>Edgware(艾奇韋爾)–>Finchley(芬奇利)–>Greenwich(格林威治)–>Hoxton(霍克斯頓)
版本 | 說明 |
---|---|
SNAPSHOT | 代表快照,也就是未完成的意思 |
GA | 代表穩定版 |
RELEASE | 最終版本,沒有太大的問題。 |
SR | 正式發布版 |
RC | 候選發布版 ,就相當于留校察看,基本只修復比較嚴重的BUG |
PRE(M1、M2)里程碑版 | 主要是修復了一些BUG的版本,一個GA后通常有多個里程碑版 |
BUILD-XXX | 開發版,開發團隊內部使用,不是很穩定 |
- Spring Cloud所有的子項目都依賴Spring Boot框架,所以Spring Boot框架的版本號和Spring Cloud的版本號之間也存在依賴及兼容的關系,如下圖所示
由停更引發的"升級慘案"
- 2020-12-22日Spring官方博客宣布,Spring Cloud 2020.0.0正式發布。2020.0.0是第一個使用新的版本號命名方案的Spring Cloud發行版本。在此之前Spring Cloud使用英國倫敦地鐵站的命名方式來命名一個大版本。
- 更新版本沒有什么大驚小怪的,但是本次更新卻正式開啟了Spring Cloud Netflix體系的終結進程。Netflix公司是目前微服務落地中最成功的公司。它開源了諸如Eureka、Hystrix、Zuul、Feign、Ribbon等等廣大開發者所知微服務套件,統稱為Netflix OSS。在當時Netflix OSS成為微服務組件上事實的標準。
- 但是在2018年Netflix公司宣布其核心組件Hystrix、Ribbon、Zuul、Eureka等進入維護狀態,不再進行新特性開發,只修BUG。
- 這直接影響了Spring Cloud項目的發展路線,Spring 官方不得不采取了應對措施,在2019年的在 SpringOne 2019 大會中,Spring Cloud宣布 Spring Cloud Netflix項目進入維護模式,并在2020年移除相關的Netflix OSS組件。
哪些Netflix組件被移除了?
- 在目前最新的Spring Cloud 2020.0.0中僅僅剩下了Eureka,但是留給Eureka的時間也不多了。
- Feign雖然是Netflix公司開源的,但從9.x版本開始就移交給OpenFeign組織管理,不從屬于Netflix OSS范疇,應該陽壽未盡會繼續存在在Spring Cloud中
替換方案
- Netflix OSS的突生變故讓Spring官方感到“不能在一棵樹上吊死”。
- 在開發維護Spring Cloud相關的組件
- 比如負載均衡層Spring Cloud Loadbalancer、網關層Spring Cloud Gateway,引入了一些云廠商來分散風險,目前有:
- 微軟的Spring Cloud Azure
阿里的Spring Cloud Alibaba
- 亞馬遜的Spring Cloud for Amazon Web Services
- 谷歌云平臺的 Spring Cloud GCP
服務注冊中心:
- Eureka:官方停止更新,并且已經有更好的替代產品了,可以使用,但是官方已經不建議使用了(重度患者)。
- Zookeeper:某些老系統,以前是用的Zookeeper + Dubbo,后來做技術升級,結果發現Spring Cloud的Eureka停更了,然后就用了最少的技術切換,那么就用了Zookeeper做注冊中心。
- Consul:go語言開發的,也是一個優秀的服務注冊框架,但是使用量較少,風頭都被Nacos搶了。
- Nacos: 來自于Spring Cloud Alibaba,在企業中經過了百萬級注冊考驗的,不但可以完美替換Eureka,還能做其他組件的替換,所以強烈建議使用,是學習的重點。
服務調用:
- Feign:Netflix 公司產品,也停止更新了。
- OpenFeign: Spring社區等不了Netflix更新了,然后就自己做了一個組件,不用Feign了
負載均衡:
- Ribbon: 也進入了維護狀態,停止更新了,但是Spring官方還在使用(輕度患者)。
- LoadBalancer:Spring官方推出的一個新的組件,打算逐漸取代掉Ribbon,但是現在還處于萌芽狀態。
服務降級:
- Hystrix:官網不推薦使用,但是中國企業中還在大規模使用。
- Resilience4J:官網推薦使用,但是國內很少用這個。
- Sentienl: 來自于Spring Cloud Alibaba,在中國企業替換Hystrix的組件,國內強烈建議使用。
服務網關:
- Zuul:Netflix 公司產品,公司內部產生分歧,有的人想自己出一個Zuul2。
- Zuul2:也是Netflix 公司準備出的產品,但是由于內部分歧,所以Zuul2已經胎死腹中了。
- Gateway:Spring社區自己出的網關組件,官方隆重介紹和極度推薦的網關服務組件。
服務配置中心:
- Config:目前也在使用,風頭被Nacos搶了。
- Nacos:來自于Spring Cloud Alibaba,后來居上,把Config給替換了。
服務總線:
- Bus:Spring Cloud原生的服務總線組件,現在風頭也被Nacos搶了。
- Nacos:來自于Spring Cloud Alibaba,后來居上,把Bus給替換了。
Spring Cloud Alibaba
-
Spring Cloud Alibaba是阿里巴巴集團下的開源組件和云產品在Spring Cloud規范下的實現。
-
簡單地說,Spring Cloud Alibaba也是微服務開發一站式解決方案
-
2018年10月31日,Spring Cloud Alibaba正式入駐Spring Cloud 官方孵化器,并發布了第一個預覽版本。2019年8月1日在Alibaba倉庫發布第一個畢業版本。
官網:https://spring.io/projects/spring-cloud-alibaba -
Spring Cloud Alibaba主要為微服務開發提供一站式解決方案,使開發者通過Spring Cloud 編程模型輕松地解決微服務架構下的各類技術問題。
Spring Cloud Alibaba的開源組件
- Nacos:一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。
- Sentinel:把流量作為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
- RocketMQ:開源的分布式消息系統,基于高可用分布式集群技術,提供低延時的、高可靠的消息發布與訂閱服務。
- Dubbo:這個就不用多說了,在國內應用非常廣泛的一款高性能 Java RPC 框架。
- Seata:阿里巴巴開源產品,一個易于使用的高性能微服務分布式事務解決方案。
作為一家商業公司,阿里巴巴推出 Spring Cloud Alibaba,很大程度上市希望通過搶占開發者生態,來幫助推廣自家的云產品。所以在開源社區,夾帶了不少私貨,這部分組件的整體易用性和穩定性還是很高的。
- Alibaba Cloud ACM:一款在分布式架構環境中對應用配置進行集中管理和推送的應用配置中心產品。
- Alibaba Cloud OSS:阿里云對象存儲服務(Object Storage Service,簡稱 OSS),是阿里云提供的云存儲服務。
- Alibaba Cloud SchedulerX:阿里中間件團隊開發的一款分布式任務調度產品,提供秒級、精準的定時(基于 Cron 表達式)任務調度服務。
Spring Cloud Alibaba的優勢
阿里巴巴強大的技術輸出能力
- 阿里巴巴無疑是國內開源技術領域的最有影響力的公司之一,已經有Dubbo、Druid,FastJson等成功的開源組件
- 再加上阿里不遺余力的推廣,社區發展也非常快。
集成Dubbo,利用Dubbo在微服務領域的超高人氣
- Dubbo是國內應用最廣的分布式服務框架之一,基于Dubbo改造的Dubbox等也有很多公司在使用
- Spring Cloud Alibaba對Dubbo做了比較好的集成,可以吸引不少使用Dubbo的開發者。
云原生趨勢,集成阿里云商業化組件
- 云原生(Cloud Native)是今年技術領域特別熱門的一個詞,云原生是一種專門針對云上應用而設計的方法,用于構建和部署應用,以充分發揮云計算的優勢。
- Spring Cloud Alibaba 集成了阿里云的商業化組件,可以說天然支持云原生特性。
Spring Cloud Alibaba的功能
- Spring Cloud Alibaba是阿里巴巴結合自身的微服務實踐開源的微服務全家桶,其組件比Spring Cloud 中的組件更加好用和強大。并且對的Spring Cloud組件做了很好的兼容。
- 比如在Spirng Cloud Alibaba中依然可以使用Feign作為服務調用方式,使用Eureak做服務注冊發現等等。
- Spring Cloud Alibaba主要的功能如下:
功能 | 說明 |
---|---|
流控制和服務降級 | 支持WebServlet,WebFlux,OpenFeign,RestTemplate,Dubbo訪問限制和降級流的功能。它可以在運行時通過控制臺實時修改限制和降級流的規則,并且還支持監視限制和降級度量標準。 |
服務注冊和發現 | 可以注冊服務,并且客戶可以使用Spring托管的bean(自動集成功能區)發現實例。 |
分布式配置 | 支持分布式系統中的外部配置,配置更改時自動刷新。 |
Rpc服務 | 擴展Spring Cloud客戶端RestTemplate和OpenFeign以支持調用Dubbo RPC服務。 |
事件驅動 | 支持構建與共享消息系統連接的高度可擴展的事件驅動微服務。 |
分布式事務 | 支持高性能且易于使用的分布式事務解決方案。 |
阿里云對象存儲 | 大規模,安全,低成本,高度可靠的云存儲服務。支持隨時隨地在任何應用程序中存儲和訪問任何類型的數據。 |
阿里云SchedulerX | 準確,高度可靠,高可用性的計劃作業調度服務,響應時間在幾秒鐘內。 |
阿里云短信 | 阿里云短信服務覆蓋全球,提供便捷,高效,智能的通信功能,幫助企業快速聯系客戶。 |
Spring Cloud Alibaba的版本
- 版本:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明
畢業版本依賴關系
組件版本依賴關系
SpringCloud與SpringCloud Alibaba的區別
SpringCloud | SpringCloud Alibaba |
---|---|
SpringCloud是一個開源的微服務框架,基于SpringBoot進行開發和管理微服務 | SpringCloud Alibaba是基于SpringCloud的分支項目,主要針對阿里巴巴集團的需求進行定制開發 |
提供了豐富的組件和功能,如服務注冊與發現、負載均衡、熔斷、容錯、配置管理等 | 在SpringCloud的基礎上增加了一些阿里巴巴的組件和功能,如分布式事務、消息隊列、分布式鎖等 |
社區活躍,有大量的第三方插件和解決方案 | 社區相對較小,插件和解決方案較少 |
支持多種注冊中心,如Eureka、Consul、Zookeeper等 | 使用Nacos作為默認的注冊中心 |
支持多種API網關,如Zuul、Gateway等 | 使用Spring Cloud Gateway作為默認的API網關 |
可以與各種技術和框架進行集成,如SpringBoot、Netflix OSS、OpenFeign等 | 可以與阿里巴巴的中間件進行集成,如RocketMQ、Sentinel等 |
代碼質量較高,穩定性較好 | 由于是較新的項目,穩定性和可靠性較SpringCloud還有待驗證 |
-
項目起源:Spring Cloud是由Pivotal團隊開發和維護的,而Spring Cloud Alibaba是由阿里巴巴團隊開發和維護的。
-
生態系統:Spring Cloud是一個完整的微服務框架,提供了一系列的組件和工具來構建和管理微服務。它涵蓋了服務發現、負載均衡、服務網關、配置管理等功能。而Spring Cloud Alibaba是基于Spring Cloud的增強版,提供了額外的組件和工具,如分布式事務、分布式鎖、消息隊列等,以滿足更復雜的微服務應用需求。
-
服務發現與注冊中心:Spring Cloud使用Netflix Eureka作為默認的服務發現和注冊中心,而Spring Cloud Alibaba使用Nacos作為默認的服務發現和注冊中心。Nacos相比Eureka更加強大和靈活,支持更多的功能和特性。
-
配置管理:Spring Cloud使用Spring Cloud Config來進行配置管理,而Spring Cloud Alibaba使用Nacos Config來進行配置管理。Nacos Config與Nacos的服務發現和注冊中心集成,可以實現統一的配置中心和服務發現。
-
分布式事務:Spring Cloud Alibaba提供了Seata分布式事務框架,可以方便地實現分布式事務管理。