Spring Cloud 學習筆記01----微服務簡介
簡介
Spring Cloud 是一個基于Spring Boot實現(xiàn)的微服務架構開發(fā)工具。它為微服務架構中設計的配置管理、服務治理、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態(tài)管理等操作提供了簡單的開發(fā)方式。
Spring Cloud 包括了多個子項目:
- Spring Cloud Config:配置管理工具,支持使用Git 存儲配置內(nèi)容,可以使用它實現(xiàn)應用配置的外部化存儲,并支持客戶端信息刷新。加密/解密配置內(nèi)容等。
- Spring Cloud Netflix: 核心組件,對多個Netflix OSS 開源套件進行整合。
- Eureka: 服務治理組件,包括服務注冊中心,服務注冊與發(fā)現(xiàn)機制的實現(xiàn)。
- Hystrix: 容錯管理組件,實現(xiàn)斷路器模式,幫助服務依賴中出現(xiàn)的延遲和為故障提供強大的容錯能力。
- Ribbon: 客戶端負載均衡的服務調(diào)用組件。
- Feign: 基于Ribbon和Hystrix的聲明式服務調(diào)用組件。
- Zuul: 網(wǎng)關組件,提供智能路由、訪問過濾等功能。
- Archaius: 外部化配置組件。
- Spring Cloud Bus: 事件、消息總線,用于傳播集群中的狀態(tài)變化或事件,已觸發(fā)后續(xù)的處理,比如用來動態(tài)刷新配置等。
- Spring Cloud Cluster: 針對Zookeeper、Redis、Hazelcatst、Consul的選舉算法和通用狀態(tài)模式的實現(xiàn)。
- Spring Cloud Stream: 通過Redis、Rabbit或者Kafka實現(xiàn)的消費微服務,可以通過簡單的聲明式模型來發(fā)送和接收消息。
- Spring Cloud ZooKeeper: 基于ZooKeeper的服務發(fā)現(xiàn)和配置管理組件。
…
微服務架構
簡單來說,微服務架構就是將應用從存儲開始垂直拆分成一系列小的web 服務,這些服務可以獨立的編譯及部署。服務之間通過各自暴露的Api 接口(諸如 RESTful API)相互通訊。
功能和使用場景
- 我們把整個系統(tǒng)根據(jù)業(yè)務拆分成幾個子系統(tǒng)
- 每個子系統(tǒng)可以部署多個應用,多個應用之間使用負載均衡
- 需要一個服務注冊中心,所有的服務都可以在注冊中心注冊,負載均衡也是通過注冊中心注冊的服務來使用一定的策略來實現(xiàn)。
- 所有的客戶端都通過同一個網(wǎng)關地址訪問后臺的服務,通過路由配置,網(wǎng)關來判斷 一個URL請求由哪個服務處理。請求轉發(fā)到服務上的時候也是使用負載均衡。
- 服務之間有時候也需要相互訪問,例如有一個用戶模塊,其他服務在處理一些業(yè)務的時候,要獲取用戶服務的用戶數(shù)據(jù)。
- 需要一個斷路器,及時處理服務調(diào)用的超時和錯誤,防止由于其中一個服務的問題導致整體系統(tǒng)的癱瘓。
- 還需要一個監(jiān)控功能,監(jiān)控每個服務調(diào)用花費的時間等。
設計原則
- 單一職責原則
- 服務自治原則
- 輕量級通信機制
- 微服務粒度
整體架構圖
架構圖說明
- Eureka 負責服務的注冊與發(fā)現(xiàn),很好地將各服務連接起來。
- Hystrix 負責監(jiān)控服務之間的調(diào)用情況,連續(xù)失敗多次進行熔斷保護。
- Hystrix dashboard,Turbine負責監(jiān)控Hystrix的熔斷情況并給予圖形化的展示
- Spring Cloud Config 提供了同一個的配置中心服務
- 當配置文件發(fā)生變化的時候,Spring Cloud Bus通知各服務去獲取罪行的配置信息
- 所有對外的請求和服務,我們都通過Zuul來進行轉發(fā),起到API網(wǎng)關的作用。
- 監(jiān)控我們使用Sleuth+Zipkin+SpringAdmin將所有的請求數(shù)據(jù)記錄下來,方便我們進行后續(xù)分析。
版本說明
由于Spring Cloud 不像Spring 社區(qū)其他的一些項目那樣相對獨立,它是一個擁有諸多子項目的大型綜合項目,可以說是對微服務架構解決方法的綜合套件組合,其包含的各個子項目也都獨立進行著內(nèi)容的更新與迭代,各自都維護著自己的發(fā)布版本號。因此每一個Spring Cloud的版本都會包含多個不同版本的子項目,為了管理每個版本的子項目清單,避免Spring Cloud的版本號與其子項目的版本號相混淆,沒有采用版本號的方式,而是通過命名的方式。
當一個版本的Spring Cloud 項目的發(fā)布內(nèi)容積累到一個臨界點或者一個嚴重的bug解決可用后,就會發(fā)布一個“service release ” 版本,簡稱SRX版本。其中X是一個遞增的數(shù)字,所以Brixton.SR5就是Brixton的第5個 Release版本。
引用
《Spring Cloud微服務實戰(zhàn)》
http://blog.didispace.com/spring-cloud-starter-dalston-1/作者:碼農(nóng)飛哥
微信公眾號:碼農(nóng)飛哥