協調任何服務,簡化分佈式系統開發。git
構建分佈式系統不該該是複雜的,SpringCloud對常見的分佈式系統模式提供了簡單易用的編程模型,幫助開發者構建彈性、可靠、協調的應用程序。
SpringCloud是在SpringBoot的基礎上構建的,使開發者能夠輕鬆入門並快速提升工做效率。
SpringCloud爲開發人員提供了快速構建分佈式系統架構的工具,例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖定,領導選舉,分佈式會話,集羣狀態等。github
SpringCloud是一個由許多子項目組成的綜合項目,各子項目有不一樣的發佈節奏。
爲了管理SpringCloud與各子項目的版本依賴關係,發佈了一個清單,其中包括了某個SpringCloud版本對應的子項目版本。
爲了不SpringCloud版本號與子項目版本號混淆,SpringCloud版本採用了名稱而非版本號的命名,這些版本的名字採用了倫敦地鐵站的名字,根據字母表的順序來對應版本時間順序,例如Angel是第一個版本, Brixton是第二個版本。
當SpringCloud的發佈內容積累到臨界點或者一個重大BUG被解決後,會發佈一個"service releases"版本,簡稱SRX版本,好比Greenwich.SR2就是SpringCloud發佈的Greenwich版本的第2個SRX版本。spring
集中配置管理工具,分佈式系統中統一的外部配置管理,默認使用Git來存儲配置,能夠支持客戶端配置的刷新及加密、解密操做。編程
Netflix OSS 開源組件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心組件。安全
用於傳播集羣狀態變化的消息總線,使用輕量級消息代理連接分佈式系統中的節點,能夠用來動態刷新集羣中的服務配置。架構
基於Hashicorp Consul的服務治理組件。負載均衡
安全工具包,對Zuul代理中的負載均衡OAuth2客戶端及登陸認證進行支持。框架
SpringCloud應用程序的分佈式請求鏈路跟蹤,支持使用Zipkin、HTrace和基於日誌(例如ELK)的跟蹤。運維
輕量級事件驅動微服務框架,可使用簡單的聲明式模型來發送及接收消息,主要實現爲Apache Kafka及RabbitMQ。分佈式
用於快速構建短暫、有限數據處理任務的微服務框架,用於嚮應用中添加功能性和非功能性的特性。
基於Apache Zookeeper的服務治理組件。
API網關組件,對請求提供路由及過濾功能。
基於Ribbon和Hystrix的聲明式服務調用組件,能夠動態建立基於Spring MVC註解的接口實現用於服務調用,在SpringCloud 2.0中已經取代Feign成爲了一等公民。
Spring Cloud Alibaba 致力於提供微服務開發的一站式解決方案。此項目包含開發分佈式應用微服務的必需組件,方便開發者經過 Spring Cloud 編程模型輕鬆使用這些組件來開發分佈式應用服務。
依託 Spring Cloud Alibaba,您只須要添加一些註解和少許配置,就能夠將 Spring Cloud 應用接入阿里微服務解決方案,經過阿里中間件來迅速搭建分佈式應用系統。
Github:https://github.com/alibaba/spring-cloud-alibaba
Spring Cloud的幾大痛點
Spring Cloud Alibaba的優點
SpringCloud Alibaba技術的搭配方案
描述 | Spring Cloud | Spring Cloud Alibaba | 組合選用 |
---|---|---|---|
服務發現組件 | Eureka(中止維護)服務發現組件 | Nacos 註冊中心 | Spring Cloud Alibaba - Nacos |
配置中心組件 | Spring Cloud Config 配置中心 | Nacos 配置中心 | Spring Cloud Alibaba - Nacos |
斷路保護組件 | Hystrix 斷路保護 | Sentinel 服務容錯 | Spring Cloud Alibaba - Sentinel |
鏈路追蹤組件 | Sleuth 調用鏈監控 | / | Spring Cloud - Sleuth |
負載均衡組件 | Ribbon | / | Spring Cloud - Ribbon |
遠程調用組件 | OpenFeign (HTTP+JSON) | Dubbo(RPC框架) | Spring Cloud - OpenFeign |
分佈式事務 | / | Seata 分佈式事務 | Spring Cloud Alibaba - Seata |
API 網關 | Gateway | / | Spring Cloud - Gateway |
項目的版本號格式爲 x.x.x 的形式,其中 x 的數值類型爲數字,從 0 開始取值,且不限於 0~9 這個範圍。項目處於孵化器階段時,第一位版本號固定使用 0,即版本號爲 0.x.x 的格式。
因爲 Spring Boot 1 和 Spring Boot 2 在 Actuator 模塊的接口和註解有很大的變動,且 spring-cloud-commons 從 1.x.x 版本升級到 2.0.0 版本也有較大的變動,所以阿里採起跟 SpringBoot 版本號一致的版本:
Spring Cloud Alibaba 版本和Spring Cloud 和Spring Boot 版本兼容性列表
Spring Cloud 版本 | Spring Cloud Alibaba 版本 | Spring Boot 版本 |
---|---|---|
Spring Cloud Hoxton.SR3 | 2.2.x.RELEASE | 2.2.x.RELEASE |
Spring Cloud Greenwich | 2.1.x.RELEASE | 2.1.x.RELEASE |
Spring Cloud Finchley | 2.0.x.RELEASE | 2.0.x.RELEASE |
Spring Cloud Edgware | 1.5.x.RELEASE | 1.5.x.RELEASE |
咱們採用Spring Cloud Hoxton.SR3
, Spring Cloud Alibaba 2.2.0.RELEASE
, Spring Boot 2.2.6 RELEASE
Spring Cloud Alibaba依賴
<dependencyManagement> <dependencies> <!-- Spring Cloud Alibaba 依賴 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>