【Spring Cloud Alibaba】初識Spring Cloud Alibaba

目錄

  • 回顧
    • 主流的微服務框架
    • 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的區別

回顧

主流的微服務框架

框架名稱說明
MotanMotan(茅臺)是新浪微博開源的RPC框架,官網:github.com/weibocom/motan
JSFJSF(京服)是京東的微服務組件。
MSEC毫秒服務引擎(MSEC, Mass Service Engine in Cluster)是騰訊的一個開源框架,適用于在廉價機器組成的集群上開發和運營分布式后臺服務。該項目集RPC、名字發現服務、負載均衡、業務監控、灰度發布、容量管理、日志管理、key-value存儲于一體,目的是提高開發與運營的效率和質量。
Dubbo阿里巴巴開源的RPC框架,后來加入Apache孵化器并成功畢業。新的名字為Apache Dubbo。
DubboX當當網基于Dubbo開源的PRC框架,后來并入Apache Dubbo。
Netflix OSSNetflix OSS是由Netflix公司開發的一套代碼框架,用于解決分布式系統的問題,如:服務注冊與發現、負載均衡、熔斷降級、限流、網關等。
Spring CloudSpring Cloud是由Pivotal公司開源的微服務架構,提供了微服務系統架構的一站式解決方案。它提供了微服務開發所需的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態管理等組件。
Spring Cloud NetflixSpring Cloud Netflix是Spring Boot和Netflix OSS在Spring Cloud規范下的集成。
Spring Cloud AlibabaSpring Cloud Alibaba 是阿里巴巴提供的微服務開發一站式解決方案,是阿里巴巴開源中間件與 Spring Cloud 體系的融合。Spring Cloud Alibaba 正式入駐Spring Cloud 官方孵化器,并順利畢業。
Spring Cloud 生態下中微服務整理Spring Cloud并沒有重復制造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
主流的微服務治理方案:Spring Cloud Netflix和Spring Cloud Alibaba
serviceCombServiceComb項目是華為開源的微服務框架,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的區別

SpringCloudSpringCloud 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還有待驗證
  1. 項目起源:Spring Cloud是由Pivotal團隊開發和維護的,而Spring Cloud Alibaba是由阿里巴巴團隊開發和維護的。

  2. 生態系統:Spring Cloud是一個完整的微服務框架,提供了一系列的組件和工具來構建和管理微服務。它涵蓋了服務發現、負載均衡、服務網關、配置管理等功能。而Spring Cloud Alibaba是基于Spring Cloud的增強版,提供了額外的組件和工具,如分布式事務、分布式鎖、消息隊列等,以滿足更復雜的微服務應用需求。

  3. 服務發現與注冊中心:Spring Cloud使用Netflix Eureka作為默認的服務發現和注冊中心,而Spring Cloud Alibaba使用Nacos作為默認的服務發現和注冊中心。Nacos相比Eureka更加強大和靈活,支持更多的功能和特性。

  4. 配置管理:Spring Cloud使用Spring Cloud Config來進行配置管理,而Spring Cloud Alibaba使用Nacos Config來進行配置管理。Nacos Config與Nacos的服務發現和注冊中心集成,可以實現統一的配置中心和服務發現。

  5. 分布式事務:Spring Cloud Alibaba提供了Seata分布式事務框架,可以方便地實現分布式事務管理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21522.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21522.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21522.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python—面向對象小解(6)-閉包、裝飾器

一、閉包 在Python中,閉包(closure)是一個函數對象,即使在其詞法作用域外被調用,它仍然能訪問該作用域內的變量。閉包通過“捕獲”周圍作用域的變量,保持這些變量的狀態,即使在外部函數已經返回…

干貨分享 | TSMaster 中 Hex 文件編輯器使用詳細教程

TSMaster 軟件的 Hex 文件編輯器提供了文件處理的功能,這一特性讓使用 TSMaster 軟件的用戶可以更便捷地對 Hex、bin、mot、s19 和 tsbinary 類型的文件進行處理。 本文重點講述 TSMaster 中 Hex 文件編輯器的使用方法,該編輯器能實現將現有的 Hex、bin、…

@vue-office/excel 解決移動端預覽excel文件觸發軟鍵盤

先直接上代碼 不耽誤大家時間 標明下插件庫 非常感謝作者提供預覽插件 vue-office/excel 只需要控制CSS :deep(.x-spreadsheet-overlayer) {.x-spreadsheet-selectors {display: none !important;} } :deep(.x-spreadsheet-bottombar) {li.active {user-select: none !import…

家政上門系統源碼,家政上門預約服務系統開發涉及的主要功能

家政上門預約服務系統開發是指建立一個在線平臺或應用程序,用于提供家政服務的預約和管理功能。該系統的目標是讓用戶能夠方便地預約各種家政服務,如保潔、家庭護理、月嫂、家電維修等,并實現服務供應商管理和訂單管理等功能。 以下是開發家政…

Windows API 速查

Windows API 函數大全 (推薦):https://blog.csdn.net/xiao_yi_xiao/article/details/121604742Windows API 在線參考手冊:http://www.office-cn.net/t/api/index.html?web.htmWindows 開發文檔 (官方):https://learn.microsoft.com/zh-cn/wi…

linux驅動學習(三)之uboot與內核編譯

需要板子一起學習的可以這里購買(含資料):點擊跳轉 GEC6818內核源碼下載:點擊跳轉 一、環境配置 由于GEC6818對應是64位系統,虛擬機中的linux系統也要是64位,比如:ubuntu16.04.rar …

Bee 支持 與 mybatis-plus 混用嗎?

Bee 支持 與 mybatis-plus 混用嗎? 你是在什么場景下要混用呢? mybatis-plus是基于mybatis. 而Bee本身就是一個ORM框架了. Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鴻蒙) Bee Bee支持的數據庫 1.MySQL 2.Oracle 3.SQL…

elasticsearch的常規操作--增刪改查和批量處理

1、_cat 查詢 GET /_cat/nodes: 查看所有節點 GET /_cat/health: 查看es 健康狀況 GET /_cat/master: 查看主節點 GET /_cat/indices:查看所有索引show databases; 2、索引一個文檔(保存) 保存一個數據&…

某紅書旋轉滑塊驗證碼分析與協議算法實現(高通過率)

文章目錄 1. 寫在前面2. 接口分析3. 驗證軌跡4. 算法還原 【🏠作者主頁】:吳秋霖 【💼作者介紹】:擅長爬蟲與JS加密逆向分析!Python領域優質創作者、CSDN博客專家、阿里云博客專家、華為云享專家。一路走來長期堅守并致…

力扣SQL50 學生們參加各科測試的次數 查詢 三表查詢

Problem: 1280. 學生們參加各科測試的次數 👨?🏫 參考題解 join等價于inner join,不用關聯條件的join等價于cross join Code select stu.student_id,stu.student_name, sub.subject_name,count(e.subject_name) attended_exams from Stud…

關于windosw打開安全中心空白的解決方案

關于windosw打開安全中心空白的解決方案 問題如下 問題如下 之后點擊一片空白 解決方案如下 按下WINR,輸入regedit回車找到路徑:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecurityHealthService”,然后雙擊右邊的“start”…

【最新鴻蒙應用開發】——關系型數據庫簡單上手(RDB)

關系型數據庫(RDB) 關系型數據庫(Relational Database,RDB)是一種基于關系模型來管理數據的數據庫。關系型數據庫基于SQLite組件提供了一套完整的對本地數據庫進行管理的機制,對外提供了一系列的增、刪、改…

【cocos sreator】判定多邊形和多邊形相交

核心代碼: cc.Intersection.polygonPolygon(points2, points) 拖拽物品拖到多個目標位置判定,取最近的: getTargetItem(collider2: cc.PolygonCollider, touchPos: cc.Vec2, targetRoot: cc.Node) {let length 99999;let target null;//col…

windows 下編譯 TessRact+leptonica 識別圖片文字

目錄 1、下載 2. 編譯基礎依賴庫 1.1 zlib 1.2 jpegsr9f 1.3 lpng1643 1.4 libgif 3. 編譯tifflib 4. 配置nasm到系統環境中 5. 編譯 libjpeg-turbo 6 編譯leptonica 7. 編譯tesseract 8. 測試驗證 1、下載 下載tesseract5.3.2 下載leptonica1.83.1 下載l…

1638. 統計只差一個字符的子串數目

題目 給你兩個字符串 s 和 t,請找出 s 中的非空子串的數目,這些子串滿足替換一個不同字符以后,是 t 串的子串。換言之,請你找到 s 和 t 串中恰好只有一個字符不同的子字符串對的數目。 一個子字符串是一個字符串中連續的字符。 …

【全開源】旅游門票預訂系統(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp開發的旅游門票預訂系統,支持景點門票、導游產品便捷預訂、美食打卡、景點分享、旅游筆記分享等綜合系統,提供前后臺無加密源碼,支持私有化部署。 ?便捷你的每一次出行🌍 🌟 輕松預訂…

PMP中的各種圖

單、雙代號網絡圖 區別 內容 箭線圖(ADM)-雙 箭線活動 節點依賴關系 箭線圖只能表示一種FS的關系 規劃和控制項目活動進度的項目 (建筑、軟件) 前導圖(PDM)-單 節點代表活動 前導圖法可以體現多種邏…

語義化版本控制:軟件工程的實用之道

語義化版本控制:軟件工程的實用之道 在軟件開發過程中,版本控制是確保項目穩定、有序進行的關鍵環節。隨著項目的發展,功能的增加、錯誤的修復以及API的修改變得日益頻繁。為了有效管理這些變化,并確保團隊成員、用戶以及依賴該軟…

Python中的上下文管理:深入探索contextlib模塊

Python中的上下文管理:深入探索contextlib模塊 在Python編程中,上下文管理器扮演著至關重要的角色,它們允許我們以一種非常優雅和高效的方式來管理資源,如文件操作、鎖的獲取與釋放等。contextlib模塊是Python標準庫中的一個模塊…

骨傳導藍牙耳機買哪款好?年度精選五款骨傳導藍牙耳機推薦

作為音樂愛好者的我,也一直在尋找一款好的骨傳導耳機,聽音樂對我來說不僅僅是一種消遣方式,更多是一種對生活、工作上壓力和困難的舒緩,所以今天給大家推薦幾款骨傳導耳機。今天推薦這幾款骨傳導耳機都是比較有性價比,…