SpringCloud微服務基礎簡介
一、什么是Spring Cloud?
- SpringCloud 對常見的分布式系統(tǒng)模式提供了簡單易用的編程模型,幫助開發(fā)者構(gòu)建彈性、可靠、協(xié)調(diào)的應用程序。
- SpringCloud 是在SpringBoot的基礎上構(gòu)建的,使開發(fā)者可以輕松入門并快速提高工作效率。
- SpringCloud 提供了一套微服務解決方案,包括服務注冊與發(fā)現(xiàn),配置中心,全鏈路監(jiān)控,服務網(wǎng)關(guān),負載均衡,熔斷器等組件,除了基于NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件。
- SpringCloud 為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)架構(gòu)的工具,例如配置管理,服務發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖定,領(lǐng)導選舉,分布式會話,集群狀態(tài)等。他們都可以用SpringBoot的開發(fā)風格做到一鍵啟動和部署。
- SpringBoot 并沒有重復造輪子,它只是將目前各家公司開發(fā)的比較成熟,經(jīng)得起實際考研的服務框架組合起來,通過SpringBoot風格進行再封裝,屏蔽掉了復雜的配置和實現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂易部署和易維護的分布式系統(tǒng)開發(fā)工具包。
- SpringCloud 是分布式微服務架構(gòu)下的一站式解決方案,是各個微服務架構(gòu)落地技術(shù)的集合體,俗稱微服務全家桶。
二、Spring Cloud的架構(gòu)模式

三、Spring Boot與Spring Cloud的關(guān)系
- SpringBoot 專注于快速方便的開發(fā)單個個體微服務。
- SpringCloud 是關(guān)注全局的微服務協(xié)調(diào)整理治理框架,它將SpringBoot開發(fā)的一個個單體微服務整合并管理起來,為各個微服務之間提供配置管理,服務發(fā)現(xiàn),斷路器,路由,微代理,事件總線,全局鎖,分布式會話等等集成服務。
- SpringBoot 可以離開 SpringClooud 獨立使用,但是 SpringCloud 離不開 SpringBoot,屬于依賴關(guān)系。
四、Spring Cloud與Dubbo的對比

- SpringCloud拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
- 雖然從一定程度上來說,后者犧牲了服務調(diào)用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調(diào)用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調(diào)快速演化的微服務環(huán)境下,顯得更加合適。
- Dubbo的定位是一款RPC框架,Spring Cloud的目標是微服務架構(gòu)下的一站式解決方案。
五、Spring Cloud有哪些作用?
- Distributed/versioned configuration(分布式/版本控制配置).
- Service registration and discovery(服務注冊與發(fā)現(xiàn))
- Routing(路由)
- Service-to-service calls(服務到服務的調(diào)用)
- .Load balancing (負載均衡配置)
- Circuit Breakers(斷路器)
- Distributed messaging (分布式消息管理)
六、Spring Cloud的版本號
- SpringCloud是一個由許多子項目組成的綜合項目,各子項目有不同的發(fā)布節(jié)奏。
- 為了管理SpringCloud與各子項目的版本依賴關(guān)系,發(fā)布了一個清單,其中包括了某個SpringCloud版本對應的子項目版本。
- 為了避免SpringCloud版本號與子項目版本號混淆,SpringCloud版本采用了名稱而非版本號的命名,這些版本的名字采用了倫敦地鐵站的名字,根據(jù)字母表的順序來對應版本時間順序,例如Angel是第一個版本, Brixton是第二個版本。
- 當SpringCloud的發(fā)布內(nèi)容積累到臨界點或者一個重大BUG被解決后,會發(fā)布一個"service releases"版本,簡稱SRX版本,比如Greenwich.SR2就是SpringCloud發(fā)布的Greenwich版本的第2個SRX版本。

七、Spring Cloud包含的子項目
Spring Cloud Config
集中配置管理工具,分布式系統(tǒng)中統(tǒng)一的外部配置管理,默認使用Git來存儲配置,可以支持客戶端配置的刷新及加密、解密操作。
Spring Cloud Netflix
Netflix OSS 開源組件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心組件
Eureka:服務治理組件,包括服務端的注冊中心和客戶端的服務發(fā)現(xiàn)機制;Ribbon:負載均衡的服務調(diào)用組件,具有多種負載均衡調(diào)用策略;Hystrix:服務容錯組件,實現(xiàn)了斷路器模式,為依賴服務的出錯和延遲提供了容錯能力;Feign:基于Ribbon和Hystrix的聲明式服務調(diào)用組件;Zuul:API網(wǎng)關(guān)組件,對請求提供路由及過濾功能。
Spring Cloud Bus
用于傳播集群狀態(tài)變化的消息總線,使用輕量級消息代理鏈接分布式系統(tǒng)中的節(jié)點,可以用來動態(tài)刷新集群中的服務配置。
Spring Cloud Consul
基于Hashicorp Consul的服務治理組件。
Spring Cloud Security
安全工具包,對Zuul代理中的負載均衡OAuth2客戶端及登錄認證進行支持。
Spring Cloud Sleuth
SpringCloud應用程序的分布式請求鏈路跟蹤,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟蹤。
Spring Cloud Stream
輕量級事件驅(qū)動微服務框架,可以使用簡單的聲明式模型來發(fā)送及接收消息,主要實現(xiàn)為Apache Kafka及RabbitMQ。
Spring Cloud Task
用于快速構(gòu)建短暫、有限數(shù)據(jù)處理任務的微服務框架,用于向應用中添加功能性和非功能性的特性。
Spring Cloud Zookeeper
基于Apache Zookeeper的服務治理組件。
Spring Cloud Gateway
API網(wǎng)關(guān)組件,對請求提供路由及過濾功能。
Spring Cloud OpenFeign
基于Ribbon和Hystrix的聲明式服務調(diào)用組件,可以動態(tài)創(chuàng)建基于Spring MVC注解的接口實現(xiàn)用于服務調(diào)用,在SpringCloud 2.0中已經(jīng)取代Feign成為了一等公民。
到此這篇關(guān)于SpringCloud微服務基礎簡介的文章就介紹到這了,更多相關(guān)SpringCloud微服務內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java并發(fā)編程JUC CountDownLatch線程同步
這篇文章主要介紹CountDownLatch是什么、CountDownLatch 如何工作、CountDownLatch 的代碼例子來展開對java并發(fā)編程JUC CountDownLatch線程同步,需要的朋友可以參考下面文章內(nèi)容2021-09-09
Spring Boot + Thymeleaf + Activiti 快速開發(fā)平臺項目 附源碼
這篇文章主要介紹了Spring Boot + Thymeleaf + Activiti 快速開發(fā)平臺項目附源碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
springboot+vue實現(xiàn)SSE服務器發(fā)送事件的示例
本文介紹了使用Spring Boot和Vue實現(xiàn)服務器發(fā)送事件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-01-01
詳解java并發(fā)編程(2) --Synchronized與Volatile區(qū)別
這篇文章主要介紹了Synchronized與Volatile區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
解決java執(zhí)行cmd命令調(diào)用ffmpeg報錯Concat error - No such filter ''[0,0]
這篇文章主要介紹了java執(zhí)行cmd命令,調(diào)用ffmpeg報錯Concat error - No such filter '[0,0]'解決方法,本文通過截圖實例代碼說明給大家介紹的非常詳細,對大家的工作或?qū)W習有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
SpringBoot集成JWT實現(xiàn)登陸驗證的方法詳解
JSON?Web?Token(JWT)是一個開放的標準(RFC?7519),它定義了一個緊湊且自包含的方式,用于在各方之間以JSON對象安全地傳輸信息。本文將利用SpringBoot集成JWT實現(xiàn)登陸驗證,感興趣的可以了解一下2022-05-05
使用ServletInputStream()輸入流讀取圖片方式
這篇文章主要介紹了使用ServletInputStream()輸入流讀取圖片方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

