Spring Cloud(一):Spring Cloud簡述
要了解Spring Cloud,先要對“微服務”這個概念有一定的瞭解。微服務這個名詞最早是由面向物件設計與分析專家Martin Fowler提出,他對微服務的理解如下:
簡而言之,微服務架構的風格,就是講單一程式開發成一個微服務,每個微服務執行在自己的程序當中,並使用輕量級機制通訊,通常是 HTTP RESTFUL API。這些服務圍繞業務能力來劃分構建的,並通過完全自動化部署機制來獨立部署。這些服務可以使用不同的程式語言,以及不同的資料儲存技術,以保證最低限度的集中式管理。
那麼,對於微服務,可以總結如下:
- 按業務劃分為一個獨立執行的程式,即服務單元。
- 服務之間通過HTTP協議相互通訊。
- 自動化部署。
- 可以用不同的程式語言
- 可以用不同的儲存技術
- 服務集中化管理
- 微服務是一個分散式系統
Spring Cloud 是基於Spring Boot的,繼承了Spring Boot的一些優點,約定大於配置。Spring Cloud的首要目標就是通過一系列開發元件和框架,幫助開發者快速搭建一個微服務系統。Spring Cloud是通過包裝其它技術框架來實現的,例如包裝開源的Netflix OSS元件,實現了一套通過註解,Java配置和基於模板開發的微服務框架。Spring Cloud提供了開發分散式微服務系統的一些常用元件,例如服務註冊和發現,配置中心,熔斷器,智慧路由,微代理,控制匯流排,全域性鎖,分散式會話等等。
常用元件:
1.服務註冊和發現元件Eureka
利用Eureka元件可以很輕鬆的實現服務的註冊和發現的功能,Eureka元件提供了服務的健康監測,以及友好頁面UI,另外,Spring Cloud也支援Consul和Zookeeper用於註冊和發現服務。
2.熔斷元件Hystrix
Hystrix是一個熔斷元件,除了基本的熔斷器功能外,還能夠實現服務降級,服務限流的功能。另外,Hystrix提供了熔斷器的健康監測,以及熔斷器健康資料的API介面。Hystrix Dashboard提供了單個服務熔斷器的健康狀態資料的介面展示功能,Hystrix Turbine提供了多個服務的熔斷器的健康狀態資料的介面展示功能。
3.負載均衡元件Ribbon
Ribbon是一個負載均衡元件,他通常和eureka,zuul,RestTemplate,Fegin配合使用。
4.路由閘道器Zuul
路由閘道器Zuul有智慧路由和過濾的功能,內部服務的API介面通過Zuul網關同一對外暴露,內部服務的API介面不直接暴露,防止了內部服務的敏感資訊對外暴露。
專案一覽表:
- Spring Cloud Config:服務配置中心,將所有的服務的配置檔案放到本地倉庫或者遠端倉庫。
- Spring Cloud Netflix:它是通過包裝Netflix公司的微服務元件實現的,也是Spring Cloud的核心元件,包括Eureka,Hystrix,Zuul,Archaius.
- Eureka:服務註冊和發現元件
- Hystrix:熔斷器元件
- Zuul:智慧路由閘道器元件
- Fegin:宣告式遠端排程元件
- Ribbon:負載均衡元件
- Archaius:配置管理API的元件
- Spring Cloud Bus:訊息匯流排元件
- Spring Cloud Sleuth:服務鏈路追蹤元件
- Spring Cloud Data Flow:大資料操作元件
- Spring Cloud Security:安全模組元件
- Spring Cloud Consul:該元件是Spring Cloud對Consul的封裝,和Eureka類似
- Spring Cloud Zookeeper:同上
- Spring Cloud Stream:資料流操作元件
- Spring Cloud CLI:該元件是對Spring Boot CLI的封裝,可以讓使用者通過命令列方式快速執行和搭建容器
- Spring Cloud Task:基於Spring Task,提供了任務排程和管理的功能
- Spring Cloud Connectors:用於Paas雲平臺連線到後端。