更新時間:2021-12-28 10:45:05 來源:動力節(jié)點 瀏覽1577次
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風格做到一鍵啟動和部署。Spring Cloud并沒有重復制造輪子,它只是將各家公司開發(fā)的比較成熟、經(jīng)得起實際考驗的服務(wù)框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護的分布式系統(tǒng)Java開發(fā)工具包。
Spring cloud 流應(yīng)用程序啟動器是基于 Spring Boot 的 Spring 集成應(yīng)用程序,提供與外部系統(tǒng)的集成。Spring cloud Task,一個生命周期短暫的微服務(wù)框架,用于快速構(gòu)建執(zhí)行有限數(shù)據(jù)處理的應(yīng)用程序。
使用 Spring Boot 開發(fā)分布式微服務(wù)時,我們面臨以下問題
(1)與分布式系統(tǒng)相關(guān)的復雜性-這種開銷包括網(wǎng)絡(luò)問題,延遲開銷,帶寬問題,安全問題。
(2)服務(wù)發(fā)現(xiàn)-服務(wù)發(fā)現(xiàn)工具管理群集中的流程和服務(wù)如何查找和互相交談。它涉及一個服務(wù)目錄,在該目錄中注冊服務(wù),然后能夠查找并連接到該目錄中的服務(wù)。
(3)冗余-分布式系統(tǒng)中的冗余問題。
(4)負載平衡 --負載平衡改善跨多個計算資源的工作負荷,諸如計算機,計算機集群,網(wǎng)絡(luò)鏈路,中央處理單元,或磁盤驅(qū)動器的分布。
(5)性能-問題 由于各種運營開銷導致的性能問題。
(6)部署復雜性-Devops 技能的要求。
當我們開始一個項目時,我們通常在屬性文件中進行所有的配置。隨著越來越多的服務(wù)開發(fā)和部署,添加和修改這些屬性變得更加復雜。有些服務(wù)可能會下降,而某些位置可能會發(fā)生變化。手動更改屬性可能會產(chǎn)生問題。 Eureka 服務(wù)注冊和發(fā)現(xiàn)可以在這種情況下提供幫助。由于所有服務(wù)都在 Eureka 服務(wù)器上注冊并通過調(diào)用 Eureka 服務(wù)器完成查找,因此無需處理服務(wù)地點的任何更改和處理。
(1)服務(wù)調(diào)用方式 dubbo是RPC springcloud Rest Api
(2)注冊中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper
(3)服務(wù)網(wǎng)關(guān),dubbo本身沒有實現(xiàn),只能通過其他第三方技術(shù)整合,springcloud有Zuul路由網(wǎng)關(guān),作為路由服務(wù)器,進行消費者的請求分發(fā),springcloud支持斷路器,與git完美集成配置文件支持版本控制,事物總線實現(xiàn)配置文件的更新與服務(wù)自動裝配等等一系列的微服務(wù)架構(gòu)要素。
SpringBoot專注于快速方便的開發(fā)單個個體微服務(wù)。
SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架,它將SpringBoot開發(fā)的一個個單體微服務(wù)整合并管理起來,
為各個微服務(wù)之間提供,配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等集成服務(wù)
SpringBoot可以離開SpringCloud獨立使用開發(fā)項目, 但是SpringCloud離不開SpringBoot ,屬于依賴的關(guān)系.
SpringBoot專注于快速、方便的開發(fā)單個微服務(wù)個體,SpringCloud關(guān)注全局的服務(wù)治理框架。
在計算中,負載平衡可以改善跨計算機,計算機集群,網(wǎng)絡(luò)鏈接,中央處理單元或磁盤驅(qū)動器等多種計算資源的工作負載分布。負載平衡旨在優(yōu)化資源使用,最大化吞吐量,最小化響應(yīng)時間并避免任何單一資源的過載。使用多個組件進行負載平衡而不是單個組件可能會通過冗余來提高可靠性和可用性。負載平衡通常涉及專用軟件或硬件,例如多層交換機或域名系統(tǒng)服務(wù)器進程。
當一個服務(wù)調(diào)用另一個服務(wù)由于網(wǎng)絡(luò)原因或自身原因出現(xiàn)問題,調(diào)用者就會等待被調(diào)用者的響應(yīng) 當更多的服務(wù)請求到這些資源導致更多的請求等待,發(fā)生連鎖效應(yīng)(雪崩效應(yīng))
斷路器有完全打開狀態(tài):一段時間內(nèi) 達到一定的次數(shù)無法調(diào)用 并且多次監(jiān)測沒有恢復的跡象 斷路器完全打開 那么下次請求就不會請求到該服務(wù)
半開:短時間內(nèi) 有恢復跡象 斷路器會將部分請求發(fā)給該服務(wù),正常調(diào)用時 斷路器關(guān)閉
關(guān)閉:當服務(wù)一直處于正常狀態(tài) 能正常調(diào)用
在分布式系統(tǒng)中,由于服務(wù)數(shù)量巨多,為了方便服務(wù)配置文件統(tǒng)一管理,實時更新,所以需要分布式配置中心組件。在Spring Cloud中,有分布式配置中心組件spring cloud config ,它支持配置服務(wù)放在配置服務(wù)的內(nèi)存中(即本地),也支持放在遠程Git倉庫中。在spring cloud config 組件中,分兩個角色,一是config server,二是config client。
使用:
(1)添加pom依賴
(2)配置文件添加相關(guān)配置
(3)啟動類添加注解@EnableConfigServer
Spring Cloud Gateway是Spring Cloud官方推出的第二代網(wǎng)關(guān)框架,取代Zuul網(wǎng)關(guān)。網(wǎng)關(guān)作為流量的,在微服務(wù)系統(tǒng)中有著非常作用,網(wǎng)關(guān)常見的功能有路由轉(zhuǎn)發(fā)、權(quán)限校驗、限流控制等作用。
使用了一個RouteLocatorBuilder的bean去創(chuàng)建路由,除了創(chuàng)建路由RouteLocatorBuilder可以讓你添加各種predicates和filters,predicates斷言的意思,顧名思義就是根據(jù)具體的請求的規(guī)則,由具體的route去處理,filters是各種過濾器,用來對請求做各種判斷和修改。