Spring Cloud (一)概述

SpringCloud總體架構概覽

什麼是SpringCloud

目標

協調任何服務,簡化分佈式系統開發。git

簡介

構建分佈式系統不該該是複雜的,SpringCloud對常見的分佈式系統模式提供了簡單易用的編程模型,幫助開發者構建彈性、可靠、協調的應用程序。
SpringCloud是在SpringBoot的基礎上構建的,使開發者能夠輕鬆入門並快速提升工做效率。
SpringCloud爲開發人員提供了快速構建分佈式系統架構的工具,例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖定,領導選舉,分佈式會話,集羣狀態等。github

總體架構

來自Spring官網

SpringCloud的版本關係

SpringCloud是一個由許多子項目組成的綜合項目,各子項目有不一樣的發佈節奏。
爲了管理SpringCloud與各子項目的版本依賴關係,發佈了一個清單,其中包括了某個SpringCloud版本對應的子項目版本。
爲了不SpringCloud版本號與子項目版本號混淆,SpringCloud版本採用了名稱而非版本號的命名,這些版本的名字採用了倫敦地鐵站的名字,根據字母表的順序來對應版本時間順序,例如Angel是第一個版本, Brixton是第二個版本。
當SpringCloud的發佈內容積累到臨界點或者一個重大BUG被解決後,會發佈一個"service releases"版本,簡稱SRX版本,好比Greenwich.SR2就是SpringCloud發佈的Greenwich版本的第2個SRX版本。spring

SpringCloud子項目簡介

Spring Cloud Config

集中配置管理工具,分佈式系統中統一的外部配置管理,默認使用Git來存儲配置,能夠支持客戶端配置的刷新及加密、解密操做。編程

Spring Cloud Netflix

Netflix OSS 開源組件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心組件。安全

  • Eureka:服務治理組件,包括服務端的註冊中心和客戶端的服務發現機制;
  • Ribbon:負載均衡的服務調用組件,具備多種負載均衡調用策略;
  • Hystrix:服務容錯組件,實現了斷路器模式,爲依賴服務的出錯和延遲提供了容錯能力;
  • Feign:基於Ribbon和Hystrix的聲明式服務調用組件;
  • Zuul:API網關組件,對請求提供路由及過濾功能。

Spring Cloud Bus

用於傳播集羣狀態變化的消息總線,使用輕量級消息代理連接分佈式系統中的節點,能夠用來動態刷新集羣中的服務配置。架構

Spring Cloud Consul

基於Hashicorp Consul的服務治理組件。負載均衡

Spring Cloud Security

安全工具包,對Zuul代理中的負載均衡OAuth2客戶端及登陸認證進行支持。框架

Spring Cloud Sleuth

SpringCloud應用程序的分佈式請求鏈路跟蹤,支持使用Zipkin、HTrace和基於日誌(例如ELK)的跟蹤。運維

Spring Cloud Stream

輕量級事件驅動微服務框架,可使用簡單的聲明式模型來發送及接收消息,主要實現爲Apache Kafka及RabbitMQ。分佈式

Spring Cloud Task

用於快速構建短暫、有限數據處理任務的微服務框架,用於嚮應用中添加功能性和非功能性的特性。

Spring Cloud Zookeeper

基於Apache Zookeeper的服務治理組件。

Spring Cloud Gateway

API網關組件,對請求提供路由及過濾功能。

Spring Cloud OpenFeign

基於Ribbon和Hystrix的聲明式服務調用組件,能夠動態建立基於Spring MVC註解的接口實現用於服務調用,在SpringCloud 2.0中已經取代Feign成爲了一等公民。

Spring Cloud Alibaba概述

Spring Cloud Alibaba 致力於提供微服務開發的一站式解決方案。此項目包含開發分佈式應用微服務的必需組件,方便開發者經過 Spring Cloud 編程模型輕鬆使用這些組件來開發分佈式應用服務。

依託 Spring Cloud Alibaba,您只須要添加一些註解和少許配置,就能夠將 Spring Cloud 應用接入阿里微服務解決方案,經過阿里中間件來迅速搭建分佈式應用系統。

Github:https://github.com/alibaba/spring-cloud-alibaba

SpringCloud 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

Spring Cloud Alibaba版本

項目的版本號格式爲 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 版本號一致的版本:

  • 1.5.x 版本適用於 Spring Boot 1.5.x
  • 2.0.x 版本適用於 Spring Boot 2.0.x
  • 2.1.x 版本適用於 Spring Boot 2.1.x
  • 2.2.x 版本適用於 Spring Boot 2.2.x

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>
相關文章
相關標籤/搜索