SpringCloud微服務(wù)基礎(chǔ)簡(jiǎn)介
一、什么是Spring Cloud?
- SpringCloud 對(duì)常見(jiàn)的分布式系統(tǒng)模式提供了簡(jiǎn)單易用的編程模型,幫助開(kāi)發(fā)者構(gòu)建彈性、可靠、協(xié)調(diào)的應(yīng)用程序。
- SpringCloud 是在SpringBoot的基礎(chǔ)上構(gòu)建的,使開(kāi)發(fā)者可以輕松入門(mén)并快速提高工作效率。
- SpringCloud 提供了一套微服務(wù)解決方案,包括服務(wù)注冊(cè)與發(fā)現(xiàn),配置中心,全鏈路監(jiān)控,服務(wù)網(wǎng)關(guān),負(fù)載均衡,熔斷器等組件,除了基于NetFlix的開(kāi)源組件做高度抽象封裝之外,還有一些選型中立的開(kāi)源組件。
- SpringCloud 為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)架構(gòu)的工具,例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖定,領(lǐng)導(dǎo)選舉,分布式會(huì)話,集群狀態(tài)等。他們都可以用SpringBoot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
- SpringBoot 并沒(méi)有重復(fù)造輪子,它只是將目前各家公司開(kāi)發(fā)的比較成熟,經(jīng)得起實(shí)際考研的服務(wù)框架組合起來(lái),通過(guò)SpringBoot風(fēng)格進(jìn)行再封裝,屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開(kāi)發(fā)者留出了一套簡(jiǎn)單易懂易部署和易維護(hù)的分布式系統(tǒng)開(kāi)發(fā)工具包。
- SpringCloud 是分布式微服務(wù)架構(gòu)下的一站式解決方案,是各個(gè)微服務(wù)架構(gòu)落地技術(shù)的集合體,俗稱微服務(wù)全家桶。
二、Spring Cloud的架構(gòu)模式
三、Spring Boot與Spring Cloud的關(guān)系
- SpringBoot 專注于快速方便的開(kāi)發(fā)單個(gè)個(gè)體微服務(wù)。
- SpringCloud 是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架,它將SpringBoot開(kāi)發(fā)的一個(gè)個(gè)單體微服務(wù)整合并管理起來(lái),為各個(gè)微服務(wù)之間提供配置管理,服務(wù)發(fā)現(xiàn),斷路器,路由,微代理,事件總線,全局鎖,分布式會(huì)話等等集成服務(wù)。
- SpringBoot 可以離開(kāi) SpringClooud 獨(dú)立使用,但是 SpringCloud 離不開(kāi) SpringBoot,屬于依賴關(guān)系。
四、Spring Cloud與Dubbo的對(duì)比
- SpringCloud拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
- 雖然從一定程度上來(lái)說(shuō),后者犧牲了服務(wù)調(diào)用的性能,但也避免了上面提到的原生RPC帶來(lái)的問(wèn)題。而且REST相比RPC更為靈活,服務(wù)提供方和調(diào)用方的依賴只依靠一紙契約,不存在代碼級(jí)別的強(qiáng)依賴,這在強(qiáng)調(diào)快速演化的微服務(wù)環(huán)境下,顯得更加合適。
- Dubbo的定位是一款RPC框架,Spring Cloud的目標(biāo)是微服務(wù)架構(gòu)下的一站式解決方案。
五、Spring Cloud有哪些作用?
- Distributed/versioned configuration(分布式/版本控制配置).
- Service registration and discovery(服務(wù)注冊(cè)與發(fā)現(xiàn))
- Routing(路由)
- Service-to-service calls(服務(wù)到服務(wù)的調(diào)用)
- .Load balancing (負(fù)載均衡配置)
- Circuit Breakers(斷路器)
- Distributed messaging (分布式消息管理)
六、Spring Cloud的版本號(hào)
- SpringCloud是一個(gè)由許多子項(xiàng)目組成的綜合項(xiàng)目,各子項(xiàng)目有不同的發(fā)布節(jié)奏。
- 為了管理SpringCloud與各子項(xiàng)目的版本依賴關(guān)系,發(fā)布了一個(gè)清單,其中包括了某個(gè)SpringCloud版本對(duì)應(yīng)的子項(xiàng)目版本。
- 為了避免SpringCloud版本號(hào)與子項(xiàng)目版本號(hào)混淆,SpringCloud版本采用了名稱而非版本號(hào)的命名,這些版本的名字采用了倫敦地鐵站的名字,根據(jù)字母表的順序來(lái)對(duì)應(yīng)版本時(shí)間順序,例如Angel是第一個(gè)版本, Brixton是第二個(gè)版本。
- 當(dāng)SpringCloud的發(fā)布內(nèi)容積累到臨界點(diǎn)或者一個(gè)重大BUG被解決后,會(huì)發(fā)布一個(gè)"service releases"版本,簡(jiǎn)稱SRX版本,比如Greenwich.SR2就是SpringCloud發(fā)布的Greenwich版本的第2個(gè)SRX版本。
七、Spring Cloud包含的子項(xiàng)目
Spring Cloud Config
集中配置管理工具,分布式系統(tǒng)中統(tǒng)一的外部配置管理,默認(rèn)使用Git來(lái)存儲(chǔ)配置,可以支持客戶端配置的刷新及加密、解密操作。
Spring Cloud Netflix
Netflix OSS 開(kāi)源組件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心組件
Eureka
:服務(wù)治理組件,包括服務(wù)端的注冊(cè)中心和客戶端的服務(wù)發(fā)現(xiàn)機(jī)制;Ribbon
:負(fù)載均衡的服務(wù)調(diào)用組件,具有多種負(fù)載均衡調(diào)用策略;Hystrix
:服務(wù)容錯(cuò)組件,實(shí)現(xiàn)了斷路器模式,為依賴服務(wù)的出錯(cuò)和延遲提供了容錯(cuò)能力;Feign
:基于Ribbon和Hystrix的聲明式服務(wù)調(diào)用組件;Zuul
:API網(wǎng)關(guān)組件,對(duì)請(qǐng)求提供路由及過(guò)濾功能。
Spring Cloud Bus
用于傳播集群狀態(tài)變化的消息總線,使用輕量級(jí)消息代理鏈接分布式系統(tǒng)中的節(jié)點(diǎn),可以用來(lái)動(dòng)態(tài)刷新集群中的服務(wù)配置。
Spring Cloud Consul
基于Hashicorp Consul的服務(wù)治理組件。
Spring Cloud Security
安全工具包,對(duì)Zuul代理中的負(fù)載均衡OAuth2客戶端及登錄認(rèn)證進(jìn)行支持。
Spring Cloud Sleuth
SpringCloud應(yīng)用程序的分布式請(qǐng)求鏈路跟蹤,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟蹤。
Spring Cloud Stream
輕量級(jí)事件驅(qū)動(dòng)微服務(wù)框架,可以使用簡(jiǎn)單的聲明式模型來(lái)發(fā)送及接收消息,主要實(shí)現(xiàn)為Apache Kafka及RabbitMQ。
Spring Cloud Task
用于快速構(gòu)建短暫、有限數(shù)據(jù)處理任務(wù)的微服務(wù)框架,用于向應(yīng)用中添加功能性和非功能性的特性。
Spring Cloud Zookeeper
基于Apache Zookeeper的服務(wù)治理組件。
Spring Cloud Gateway
API網(wǎng)關(guān)組件,對(duì)請(qǐng)求提供路由及過(guò)濾功能。
Spring Cloud OpenFeign
基于Ribbon和Hystrix的聲明式服務(wù)調(diào)用組件,可以動(dòng)態(tài)創(chuàng)建基于Spring MVC注解的接口實(shí)現(xiàn)用于服務(wù)調(diào)用,在SpringCloud 2.0中已經(jīng)取代Feign成為了一等公民。
到此這篇關(guān)于SpringCloud微服務(wù)基礎(chǔ)簡(jiǎn)介的文章就介紹到這了,更多相關(guān)SpringCloud微服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用Spring Security實(shí)現(xiàn)用戶-角色-資源的權(quán)限控制
文章介紹了如何通過(guò)SpringSecurity實(shí)現(xiàn)用戶-角色-資源的權(quán)限管理,包括基于角色的請(qǐng)求控制、加載用戶角色信息、角色與資源的關(guān)聯(lián)等步驟,同時(shí),提供了一些測(cè)試場(chǎng)景,以驗(yàn)證權(quán)限控制是否正確,感興趣的朋友跟隨小編一起看看吧2024-10-10SpringBoot數(shù)據(jù)校驗(yàn)及多環(huán)境配置的問(wèn)題詳解
這篇文章主要介紹了SpringBoot數(shù)據(jù)校驗(yàn)及多環(huán)境配置,本文以SpringBoot-02-Config 項(xiàng)目為例,給大家詳細(xì)介紹,需要的朋友可以參考下2021-09-09Spring Boot項(xiàng)目中定制攔截器的方法詳解
這篇文章主要介紹了Spring Boot項(xiàng)目中定制攔截器的方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Java 數(shù)據(jù)類型及類型轉(zhuǎn)換的互相轉(zhuǎn)換實(shí)例代碼
這篇文章主要介紹了Java 數(shù)據(jù)類型及類型轉(zhuǎn)換的互相轉(zhuǎn)換實(shí)例代碼,需要的朋友可以參考下2020-10-10Java如何設(shè)置過(guò)期時(shí)間的map的幾種方法
本文主要介紹了Java如何設(shè)置過(guò)期時(shí)間的map的幾種方法,常見(jiàn)的解決方法有:ExpiringMap、LoadingCache及基于HashMap的封裝三種,下面就詳細(xì)的介紹一下,感興趣的可以了解下2022-03-03我總結(jié)的幾種@Transactional失效原因說(shuō)明
這篇文章主要是我總結(jié)的幾種@Transactional失效原因說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11java?數(shù)組越界判斷和獲取數(shù)組長(zhǎng)度的實(shí)現(xiàn)方式
這篇文章主要介紹了java?數(shù)組越界判斷和獲取數(shù)組長(zhǎng)度的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12idea修改maven模塊名稱還顯示老名稱問(wèn)題解決
本文主要介紹了idea修改maven模塊名稱還顯示老名稱問(wèn)題解決,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11JAVA實(shí)現(xiàn)掃描線算法(超詳細(xì))
掃描線算法就是從Ymin開(kāi)始掃描,然后構(gòu)建出NET,之后根據(jù)NET建立AET。接下來(lái)本文通過(guò)代碼給大家介紹JAVA實(shí)現(xiàn)掃描線算法,感興趣的朋友一起看看吧2019-10-10