SpringCloud微服務基礎簡介
一、什麼是Spring Cloud?
- SpringCloud 對常見的分佈式系統模式提供瞭簡單易用的編程模型,幫助開發者構建彈性、可靠、協調的應用程序。
- SpringCloud 是在SpringBoot的基礎上構建的,使開發者可以輕松入門並快速提高工作效率。
- SpringCloud 提供瞭一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除瞭基於NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件。
- SpringCloud 為開發人員提供瞭快速構建分佈式系統架構的工具,例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖定,領導選舉,分佈式會話,集群狀態等。他們都可以用SpringBoot的開發風格做到一鍵啟動和部署。
- SpringBoot 並沒有重復造輪子,它隻是將目前各傢公司開發的比較成熟,經得起實際考研的服務框架組合起來,通過SpringBoot風格進行再封裝,屏蔽掉瞭復雜的配置和實現原理,最終給開發者留出瞭一套簡單易懂易部署和易維護的分佈式系統開發工具包。
- SpringCloud 是分佈式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體,俗稱微服務全傢桶。
二、Spring Cloud的架構模式
三、Spring Boot與Spring Cloud的關系
- SpringBoot 專註於快速方便的開發單個個體微服務。
- SpringCloud 是關註全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,為各個微服務之間提供配置管理,服務發現,斷路器,路由,微代理,事件總線,全局鎖,分佈式會話等等集成服務。
- SpringBoot 可以離開 SpringClooud 獨立使用,但是 SpringCloud 離不開 SpringBoot,屬於依賴關系。
四、Spring Cloud與Dubbo的對比
- SpringCloud拋棄瞭Dubbo的RPC通信,采用的是基於HTTP的REST方式。
- 雖然從一定程度上來說,後者犧牲瞭服務調用的性能,但也避免瞭上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調用方的依賴隻依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。
- Dubbo的定位是一款RPC框架,Spring Cloud的目標是微服務架構下的一站式解決方案。
五、Spring Cloud有哪些作用?
- Distributed/versioned configuration(分佈式/版本控制配置).
- Service registration and discovery(服務註冊與發現)
- Routing(路由)
- Service-to-service calls(服務到服務的調用)
- .Load balancing (負載均衡配置)
- Circuit Breakers(斷路器)
- Distributed messaging (分佈式消息管理)
六、Spring Cloud的版本號
- SpringCloud是一個由許多子項目組成的綜合項目,各子項目有不同的發佈節奏。
- 為瞭管理SpringCloud與各子項目的版本依賴關系,發佈瞭一個清單,其中包括瞭某個SpringCloud版本對應的子項目版本。
- 為瞭避免SpringCloud版本號與子項目版本號混淆,SpringCloud版本采用瞭名稱而非版本號的命名,這些版本的名字采用瞭倫敦地鐵站的名字,根據字母表的順序來對應版本時間順序,例如Angel是第一個版本, Brixton是第二個版本。
- 當SpringCloud的發佈內容積累到臨界點或者一個重大BUG被解決後,會發佈一個”service releases”版本,簡稱SRX版本,比如Greenwich.SR2就是SpringCloud發佈的Greenwich版本的第2個SRX版本。
七、Spring Cloud包含的子項目
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成為瞭一等公民。
到此這篇關於SpringCloud微服務基礎簡介的文章就介紹到這瞭,更多相關SpringCloud微服務內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 關於SpringCloud的微服務以及組件詳解
- SpringCloud超詳細講解微服務網關Gateway
- 聊聊SpringCloud和SpringCloudAlibaba的區別
- 基於springboot服務間Feign調用超時的解決方案
- 如何解決springcloud feign 首次調用100%失敗的問題