1. 程式人生 > >(一)Spring Cloud 介紹 -- 筆記

(一)Spring Cloud 介紹 -- 筆記

實時微服務架構初期,需要被考慮的內容:

服務治理:阿里的Dubbo和噹噹再次擴充套件的DubboX、Netflix的Eureka、Apache的Consul等。
分散式配置管理:百度的Disconf、Netflix的Archaius、360的QConf、Spring Cloud的Config、淘寶的Diamond等。
批量任務:當擔的Elastic-Job、LinkedIn的Azkaban、Spring Cloud的Task等。
服務跟蹤:京東的Hydra、Spring Cloud的Sleuth、Twitter的Zipkin等。

簡介

Spring Cloud是一個基於Spring Boot實現的微服務框架開發工具。它為微服務架構中涉及的配置管理、服務治理、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。

Spring Cloud包含了很多子專案:

  • Spring Cloud Config:配置管理工具
  • Spring Cloud Netflix:核心元件,對多個Netflix開源套件進行整合。

    • Euraka:服務治理元件,包含服務註冊中心、服務註冊與發現機制的實現。
    • Hystrix:容錯管理元件,實現斷路器模式,幫助服務依賴中出現的延遲和為故障提供強大的容錯能力。
    • Ribbon:客戶端負載均衡的服務呼叫元件。
    • Feign:基於Ribbon和Hystrix的宣告式服務呼叫元件。
    • Zuul:閘道器元件,提供智慧路由、訪問過濾等功能。
    • Archaius:外部化配置元件。
  • Spring Cloud Bus:時間、訊息匯流排,用於傳播叢集中的狀態變化或事件,以觸發後續的處理,比如用來動態重新整理配置等。
  • Spring Cloud Cluster:針對ZooKeeper、Redis、Hazelcast、Consul的選舉演算法和通用狀態模式的實現。
  • Spring Cloud Cloudfoundry:與Pivotal Cloudfoundry的整合支援
  • Spring Cloud Consul:服務發現與配置管理工具。
  • Spring Cloud Stream:通過Redis、Rabbit或者Kafka實現的消費微服務,可以通過簡單的宣告式模型來發送和接收訊息。
  • Spring Cloud AWS:用於簡化整合Amazon Web Service的元件。
  • Spring Cloud Security:安全工具包,提供在Zuul代理中對OAuth2客戶端請求的中繼器。
  • Spring Cloud Sleuth:Spring Cloud應用的分散式跟蹤實現,可以完美整合Zipkin。
  • Spring Cloud ZooKeeper:基於ZooKeeper的服務發現與配置管理元件。
  • Spring Cloud Starters:Spring Cloud的基礎元件,它是基於Spring Boot風格專案的基礎依賴模組。
  • Spring Cloud CLI:用於在Groovy中快速建立Spring Cloud應用的Spring Boot CLI外掛。
  • ……

版本說明

版本名與版本號

Spring Cloud不像Spring社群其他一些專案那樣相對獨立,它是一個擁有諸多子專案的大型綜合專案,可以說是對微服務架構解決方案的綜合套件組合, 其包含的各個子專案也都獨立進行內容更新與迭代,各自都維護著自己的釋出版本號。為了管理每個版本的專案清單,避免Spring Cloud版本號與其子專案的版本號相混淆,沒有采用版本號的方式,而是通過命名的方式。

這些版本的名字採用了倫敦地鐵站的名字,根據字母表的順序來對應版本時間順序,比如最早的Release版本為Angel,第二個Release版本為Brixton… …

當一個版本的Spring Cloud專案的釋出內容積累到臨界點或者一個嚴重bug解決可用後,就會發佈一個“service releases”版本,簡稱SRX版本,其中X是一個遞增的數字,所以Brixton.SR5就是Brixton的第5個Release版本。

在使用Brixton版本的時候需要注意Spring Boot的版本,必須使用1.3.x版本,而不能使用1.4.x版本,否則會出現各種問題。若一定要使用Spring 1.4.x版本的話,必須將Spring Cloud版本升級到Canden版本,目前Camden已經發布Release版本,所以可以放心使用。Camden版本雖然可以相容Brixton版本的各種實現方法,但是再升級後會發現一些方法已經被標註為過期。