Spring Cloud的需求目標
微服務架構風格本質上是分佈式系統,爲了迎合這一潮流,Spring Cloud提供了一些分佈式系統常用的開發工具(或模式),使開發者可以方便的把這些模式應用於自己的微服務系統。Spring Cloud提供支持的微服務的模式包括:
- 開發模式:配置管理;異步消息
- 路由模式:服務註冊發現;服務路由
- 客戶端彈性模式:客戶端負載均衡;斷路器(Circuit breaker)、隔離(Bulkhead)、應急(Fallback)模式
- 日誌模式:日誌關聯
- 安全模式:認證、權限、憑證管理和傳播
還有一些常見的微服務模式,可以從其它軟件或者框架獲得支持:
- 日誌聚合模式:ELK軟件棧
- 調用鏈分析:Zipkin
- 服務監控:Prometheus,Zabbix
- 持續集成:Jenkins, Travis CI
- 基礎架構即代碼:Docker, Kubernetes
Spring Cloud架構總覽
上圖是一個使用了Spring Cloud的微服務架構,Spring Cloud的主要組件包括:
- Spring Cloud Config:支持分佈式系統中統一配置管理。
- Spring Cloud Netflix:通過自動配置、綁定到Spring環境和其它的Spring 編程模式,提供了Spring Boot應用和Netflix開源軟件(OSS)的集成。使用一些簡單的註解,即可快速地在你的應用裏添加經過戰鬥考驗的Netflix組件,以支持微服務中的通用模式:服務註冊發現(Eureka),斷路器、隔離、應急(Hystrix),服務路由(Zuul),客戶端負載均衡(Ribbon)。
- Spring Cloud Stream:支持在微服務中輕鬆繼承輕量級的消息處理,如RabbitMQ,Kafka。
- Spring Cloud Sleuth:提供了分佈式日誌關聯解決方案。
- Spirng Cloud Security:基於Spring Boot和Spring OAuth2提供的微服務安全方案,支持快速實現單點登錄(Single Sign On),令牌互換(Token Exchange)等常用的安全模式。
使用以上的組件即可滿足常見的微服務需求,此外,Spring Cloud還提供了以下組件:
- Spring Cloud Bus:支持連接微服務結點到輕量級消息代理(Message Broker),然後可用於廣播狀態變化(如配置變化)或其它的管理指令。
- Spring Cloud Consul:提供Spring Boot應用和Consul的集成。可以提供服務註冊發現,統一配置管理模式,作爲Eureka和Spring Cloud Config的替代。
- Spring Cloud Zookeeper:提供Spring Boot應用和Zookeeper的集成。可以提供服務註冊發現,統一配置管理模式,作爲Eureka和Spring Cloud Config的替代。
- Spring Cloud Contract:爲Spring應用提供消費者驅動契約(Consumer Driven Contract)和服務Schema的支持。
- Spring Cloud Vault:提供Spring Boot應用和HashiCorp Vault的集成。Vault爲密碼,app secret等祕密信息提供了安全的存取方案。
參考資料
1. Spring Microservices in Action
2. http://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html
3. https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do