Spring Cloud面試題(2021最新版)

為什么需要學(xué)習(xí)Spring Cloud

不論是商業(yè)應(yīng)用還是用戶應(yīng)用姓迅,在業(yè)務(wù)初期都很簡單瓣俯,我們通常會(huì)把它實(shí)現(xiàn)為單體結(jié)構(gòu)的應(yīng)用夹抗。但是绳慎,隨著業(yè)務(wù)逐漸發(fā)展,產(chǎn)品思想會(huì)變得越來越復(fù)雜漠烧,單體結(jié)構(gòu)的應(yīng)用也會(huì)越來越復(fù)雜杏愤。這就會(huì)給應(yīng)用帶來如下的幾個(gè)問題:

  • 代碼結(jié)構(gòu)混亂:業(yè)務(wù)復(fù)雜,導(dǎo)致代碼量很大沽甥,管理會(huì)越來越困難声邦。同時(shí),這也會(huì)給業(yè)務(wù)的快速迭代帶來巨大挑戰(zhàn)摆舟;
  • 開發(fā)效率變低:開發(fā)人員同時(shí)開發(fā)一套代碼亥曹,很難避免代碼沖突。開發(fā)過程會(huì)伴隨著不斷解決沖突的過程恨诱,這會(huì)嚴(yán)重的影響開發(fā)效率媳瞪;
  • 排查解決問題成本高:線上業(yè)務(wù)發(fā)現(xiàn) bug,修復(fù) bug 的過程可能很簡單照宝。但是蛇受,由于只有一套代碼,需要重新編譯厕鹃、打包兢仰、上線乍丈,成本很高。

由于單體結(jié)構(gòu)的應(yīng)用隨著系統(tǒng)復(fù)雜度的增高把将,會(huì)暴露出各種各樣的問題轻专。近些年來,微服務(wù)架構(gòu)逐漸取代了單體架構(gòu)察蹲,且這種趨勢將會(huì)越來越流行请垛。Spring Cloud是目前最常用的微服務(wù)開發(fā)框架,已經(jīng)在企業(yè)級(jí)開發(fā)中大量的應(yīng)用洽议。

什么是Spring Cloud

Spring Cloud是一系列框架的有序集合宗收。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊亚兄、配置中心混稽、智能路由、消息總線儿捧、負(fù)載均衡荚坞、斷路器、數(shù)據(jù)監(jiān)控等菲盾,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動(dòng)和部署颓影。

Spring Cloud并沒有重復(fù)制造輪子,它只是將各家公司開發(fā)的比較成熟懒鉴、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來诡挂,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂临谱、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包璃俗。

設(shè)計(jì)目標(biāo)與優(yōu)缺點(diǎn)

設(shè)計(jì)目標(biāo)

協(xié)調(diào)各個(gè)微服務(wù),簡化分布式系統(tǒng)開發(fā)悉默。

優(yōu)缺點(diǎn)

微服務(wù)的框架那么多比如:dubbo城豁、Kubernetes,為什么就要使用Spring Cloud的呢抄课?

優(yōu)點(diǎn):

  • 產(chǎn)出于Spring大家族唱星,Spring在企業(yè)級(jí)開發(fā)框架中無人能敵,來頭很大跟磨,可以保證后續(xù)的更新间聊、完善
  • 組件豐富,功能齊全抵拘。Spring Cloud 為微服務(wù)架構(gòu)提供了非常完整的支持哎榴。例如、配置管理、服務(wù)發(fā)現(xiàn)尚蝌、斷路器迎变、微服務(wù)網(wǎng)關(guān)等;
  • Spring Cloud 社區(qū)活躍度很高飘言,教程很豐富氏豌,遇到問題很容易找到解決方案
  • 服務(wù)拆分粒度更細(xì),耦合度比較低热凹,有利于資源重復(fù)利用,有利于提高開發(fā)效率
  • 可以更精準(zhǔn)的制定優(yōu)化服務(wù)方案泪电,提高系統(tǒng)的可維護(hù)性
  • 減輕團(tuán)隊(duì)的成本般妙,可以并行開發(fā),不用關(guān)注其他人怎么開發(fā)相速,先關(guān)注自己的開發(fā)
  • 微服務(wù)可以是跨平臺(tái)的碟渺,可以用任何一種語言開發(fā)
  • 適于互聯(lián)網(wǎng)時(shí)代,產(chǎn)品迭代周期更短

缺點(diǎn):

  • 微服務(wù)過多厌漂,治理成本高诚卸,不利于維護(hù)系統(tǒng)
  • 分布式系統(tǒng)開發(fā)的成本高(容錯(cuò)习蓬,分布式事務(wù)等)對(duì)團(tuán)隊(duì)挑戰(zhàn)大

總的來說優(yōu)點(diǎn)大過于缺點(diǎn),目前看來Spring Cloud是一套非常完善的分布式框架绒极,目前很多企業(yè)開始用微服務(wù)、Spring Cloud的優(yōu)勢是顯而易見的蔬捷。因此對(duì)于想研究微服務(wù)架構(gòu)的同學(xué)來說垄提,學(xué)習(xí)Spring Cloud是一個(gè)不錯(cuò)的選擇。

Spring Cloud發(fā)展前景

Spring Cloud對(duì)于中小型互聯(lián)網(wǎng)公司來說是一種福音周拐,因?yàn)檫@類公司往往沒有實(shí)力或者沒有足夠的資金投入去開發(fā)自己的分布式系統(tǒng)基礎(chǔ)設(shè)施铡俐,使用Spring Cloud一站式解決方案能在從容應(yīng)對(duì)業(yè)務(wù)發(fā)展的同時(shí)大大減少開發(fā)成本。

同時(shí)妥粟,隨著近幾年微服務(wù)架構(gòu)和Docker容器概念的火爆审丘,也會(huì)讓Spring Cloud在未來越來越“云”化的軟件開發(fā)風(fēng)格中立有一席之地,尤其是在五花八門的分布式解決方案中提供了標(biāo)準(zhǔn)化的勾给、全站式的技術(shù)方案滩报,意義可能會(huì)堪比當(dāng)年Servlet規(guī)范的誕生,有效推進(jìn)服務(wù)端軟件系統(tǒng)技術(shù)水平的進(jìn)步锦秒。

整體架構(gòu)

主要項(xiàng)目

Spring Cloud的子項(xiàng)目露泊,大致可分成兩類,一類是對(duì)現(xiàn)有成熟框架"Spring Boot化"的封裝和抽象旅择,也是數(shù)量最多的項(xiàng)目惭笑;第二類是開發(fā)了一部分分布式系統(tǒng)的基礎(chǔ)設(shè)施的實(shí)現(xiàn),如Spring Cloud Stream扮演的就是kafka, ActiveMQ這樣的角色。

Spring Cloud Config

集中配置管理工具沉噩,分布式系統(tǒng)中統(tǒng)一的外部配置管理捺宗,默認(rèn)使用Git來存儲(chǔ)配置,可以支持客戶端配置的刷新及加密川蒙、解密操作蚜厉。

Spring Cloud Netflix

Netflix OSS 開源組件集成,包括Eureka畜眨、Hystrix昼牛、Ribbon、Feign康聂、Zuul等核心組件贰健。

  • Eureka:服務(wù)治理組件,包括服務(wù)端的注冊中心和客戶端的服務(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)求提供路由及過濾功能。

Spring Cloud Bus

用于傳播集群狀態(tài)變化的消息總線载庭,使用輕量級(jí)消息代理鏈接分布式系統(tǒng)中的節(jié)點(diǎn)看彼,可以用來動(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

Spring Cloud應(yīng)用程序的分布式請(qǐng)求鏈路跟蹤顽铸,支持使用Zipkin茁计、HTrace和基于日志(例如ELK)的跟蹤。

Spring Cloud Stream

輕量級(jí)事件驅(qū)動(dòng)微服務(wù)框架谓松,可以使用簡單的聲明式模型來發(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)求提供路由及過濾功能军洼。

Spring Cloud OpenFeign

基于Ribbon和Hystrix的聲明式服務(wù)調(diào)用組件,可以動(dòng)態(tài)創(chuàng)建基于Spring MVC注解的接口實(shí)現(xiàn)用于服務(wù)調(diào)用演怎,在Spring Cloud 2.0中已經(jīng)取代Feign成為了一等公民匕争。

Spring Cloud的版本關(guān)系

Spring Cloud是一個(gè)由許多子項(xiàng)目組成的綜合項(xiàng)目,各子項(xiàng)目有不同的發(fā)布節(jié)奏爷耀。為了管理Spring Cloud與各子項(xiàng)目的版本依賴關(guān)系甘桑,發(fā)布了一個(gè)清單,其中包括了某個(gè)Spring Cloud版本對(duì)應(yīng)的子項(xiàng)目版本歹叮。

為了避免Spring Cloud版本號(hào)與子項(xiàng)目版本號(hào)混淆跑杭,Spring Cloud版本采用了名稱而非版本號(hào)的命名,這些版本的名字采用了倫敦地鐵站的名字咆耿,根據(jù)字母表的順序來對(duì)應(yīng)版本時(shí)間順序艘蹋,例如Angel是第一個(gè)版本,Brixton是第二個(gè)版本票灰。

當(dāng)Spring Cloud的發(fā)布內(nèi)容積累到臨界點(diǎn)或者一個(gè)重大BUG被解決后,會(huì)發(fā)布一個(gè)"service releases"版本宅荤,簡稱SRX版本屑迂,比如Greenwich.SR2就是Spring Cloud發(fā)布的Greenwich版本的第2個(gè)SRX版本。目前Spring Cloud的最新版本是Hoxton冯键。

Spring Cloud和SpringBoot版本對(duì)應(yīng)關(guān)系

Spring Cloud和各子項(xiàng)目版本對(duì)應(yīng)關(guān)系

注意:Hoxton版本是基于SpringBoot 2.2.x版本構(gòu)建的惹盼,不適用于1.5.x版本。隨著2019年8月SpringBoot 1.5.x版本停止維護(hù)惫确,Edgware版本也將停止維護(hù)手报。

SpringBoot和SpringCloud的區(qū)別?

SpringBoot專注于快速方便的開發(fā)單個(gè)個(gè)體微服務(wù)改化。

SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架掩蛤,它將SpringBoot開發(fā)的一個(gè)個(gè)單體微服務(wù)整合并管理起來,

為各個(gè)微服務(wù)之間提供陈肛,配置管理揍鸟、服務(wù)發(fā)現(xiàn)、斷路器句旱、路由阳藻、微代理、事件總線谈撒、全局鎖腥泥、決策競選、分布式會(huì)話等等集成服務(wù)

SpringBoot可以離開SpringCloud獨(dú)立使用開發(fā)項(xiàng)目啃匿, 但是SpringCloud離不開SpringBoot 蛔外,屬于依賴的關(guān)系

SpringBoot專注于快速蛆楞、方便的開發(fā)單個(gè)微服務(wù)個(gè)體,SpringCloud關(guān)注全局的服務(wù)治理框架冒萄。

使用 Spring Boot 開發(fā)分布式微服務(wù)時(shí)臊岸,我們面臨以下問題

(1)與分布式系統(tǒng)相關(guān)的復(fù)雜性-這種開銷包括網(wǎng)絡(luò)問題,延遲開銷尊流,帶寬問題帅戒,安全問題。

(2)服務(wù)發(fā)現(xiàn)-服務(wù)發(fā)現(xiàn)工具管理群集中的流程和服務(wù)如何查找和互相交談崖技。它涉及一個(gè)服務(wù)目錄逻住,在該目錄中注冊服務(wù),然后能夠查找并連接到該目錄中的服務(wù)迎献。

(3)冗余-分布式系統(tǒng)中的冗余問題瞎访。

(4)負(fù)載平衡 --負(fù)載平衡改善跨多個(gè)計(jì)算資源的工作負(fù)荷,諸如計(jì)算機(jī)吁恍,計(jì)算機(jī)集群扒秸,網(wǎng)絡(luò)鏈路,中央處理單元冀瓦,或磁盤驅(qū)動(dòng)器的分布伴奥。

(5)性能-問題 由于各種運(yùn)營開銷導(dǎo)致的性能問題。

(6)部署復(fù)雜性-Devops 技能的要求翼闽。

服務(wù)注冊和發(fā)現(xiàn)是什么意思拾徙?Spring Cloud 如何實(shí)現(xiàn)?

當(dāng)我們開始一個(gè)項(xiàng)目時(shí)感局,我們通常在屬性文件中進(jìn)行所有的配置尼啡。隨著越來越多的服務(wù)開發(fā)和部署,添加和修改這些屬性變得更加復(fù)雜询微。有些服務(wù)可能會(huì)下降崖瞭,而某些位置可能會(huì)發(fā)生變化。手動(dòng)更改屬性可能會(huì)產(chǎn)生問題撑毛。

Eureka 服務(wù)注冊和發(fā)現(xiàn)可以在這種情況下提供幫助读恃。由于所有服務(wù)都在 Eureka 服務(wù)器上注冊并通過調(diào)用 Eureka 服務(wù)器完成查找,因此無需處理服務(wù)地點(diǎn)的任何更改和處理代态。

Spring Cloud 和dubbo區(qū)別?

(1)服務(wù)調(diào)用方式 dubbo是RPC springcloud Rest Api

(2)注冊中心,dubbo 是zookeeper springcloud是eureka寺惫,也可以是zookeeper

(3)服務(wù)網(wǎng)關(guān),dubbo本身沒有實(shí)現(xiàn),只能通過其他第三方技術(shù)整合蹦疑,springcloud有Zuul路由網(wǎng)關(guān)西雀,作為路由服務(wù)器,進(jìn)行消費(fèi)者的請(qǐng)求分發(fā),springcloud支持?jǐn)嗦菲髑复荩cgit完美集成配置文件支持版本控制艇肴,事物總線實(shí)現(xiàn)配置文件的更新與服務(wù)自動(dòng)裝配等等一系列的微服務(wù)架構(gòu)要素腔呜。

負(fù)載平衡的意義什么?

在計(jì)算中再悼,負(fù)載平衡可以改善跨計(jì)算機(jī)核畴,計(jì)算機(jī)集群,網(wǎng)絡(luò)鏈接冲九,中央處理單元或磁盤驅(qū)動(dòng)器等多種計(jì)算資源的工作負(fù)載分布谤草。負(fù)載平衡旨在優(yōu)化資源使用,最大化吞吐量莺奸,最小化響應(yīng)時(shí)間并避免任何單一資源的過載丑孩。使用多個(gè)組件進(jìn)行負(fù)載平衡而不是單個(gè)組件可能會(huì)通過冗余來提高可靠性和可用性。負(fù)載平衡通常涉及專用軟件或硬件灭贷,例如多層交換機(jī)或域名系統(tǒng)服務(wù)器進(jìn)程温学。

什么是 Hystrix?它如何實(shí)現(xiàn)容錯(cuò)甚疟?

Hystrix 是一個(gè)延遲和容錯(cuò)庫仗岖,旨在隔離遠(yuǎn)程系統(tǒng),服務(wù)和第三方庫的訪問點(diǎn)览妖,當(dāng)出現(xiàn)故障是不可避免的故障時(shí)箩帚,停止級(jí)聯(lián)故障并在復(fù)雜的分布式系統(tǒng)中實(shí)現(xiàn)彈性。

通常對(duì)于使用微服務(wù)架構(gòu)開發(fā)的系統(tǒng)黄痪,涉及到許多微服務(wù)。這些微服務(wù)彼此協(xié)作盔然。

思考以下微服務(wù)

假設(shè)如果上圖中的微服務(wù) 9 失敗了桅打,那么使用傳統(tǒng)方法我們將傳播一個(gè)異常。但這仍然會(huì)導(dǎo)致整個(gè)系統(tǒng)崩潰愈案。

隨著微服務(wù)數(shù)量的增加挺尾,這個(gè)問題變得更加復(fù)雜。微服務(wù)的數(shù)量可以高達(dá) 1000.這是 hystrix 出現(xiàn)的地方 我們將使用 Hystrix 在這種情況下的 Fallback 方法功能站绪。我們有兩個(gè)服務(wù) employee-consumer 使用由 employee-consumer 公開的服務(wù)遭铺。

簡化圖如下所示

現(xiàn)在假設(shè)由于某種原因,employee-producer 公開的服務(wù)會(huì)拋出異常恢准。我們在這種情況下使用 Hystrix 定義了一個(gè)回退方法魂挂。這種后備方法應(yīng)該具有與公開服務(wù)相同的返回類型。如果暴露服務(wù)中出現(xiàn)異常馁筐,則回退方法將返回一些值涂召。[

](http://mp.weixin.qq.com/s?__biz=MzIyNDU2ODA4OQ==&mid=2247485351&idx=2&sn=214225ab4345f4d9c562900cb42a52ba&chksm=e80db1d1df7a38c741137246bf020a5f8970f74cd03530ccc4cb2258c1ced68e66e600e9e059&scene=21#wechat_redirect)

什么是 Hystrix 斷路器?我們需要它嗎敏沉?

由于某些原因果正,employee-consumer 公開服務(wù)會(huì)引發(fā)異常炎码。在這種情況下使用Hystrix 我們定義了一個(gè)回退方法。如果在公開服務(wù)中發(fā)生異常秋泳,則回退方法返回一些默認(rèn)值潦闲。

如果 firstPage method() 中的異常繼續(xù)發(fā)生,則 Hystrix 電路將中斷迫皱,并且員工使用者將一起跳過 firtsPage 方法歉闰,并直接調(diào)用回退方法。斷路器的目的是給第一頁方法或第一頁方法可能調(diào)用的其他方法留出時(shí)間舍杜,并導(dǎo)致異承履龋恢復(fù)〖燃ǎ可能發(fā)生的情況是概龄,在負(fù)載較小的情況下,導(dǎo)致異常的問題有更好的恢復(fù)機(jī)會(huì) 饲握。

什么是 Netflix Feign私杜?它的優(yōu)點(diǎn)是什么?

Feign 是受到 Retrofit救欧,JAXRS-2.0 和 WebSocket 啟發(fā)的 java 客戶端聯(lián)編程序衰粹。

Feign 的第一個(gè)目標(biāo)是將約束分母的復(fù)雜性統(tǒng)一到 http apis,而不考慮其穩(wěn)定性笆怠。

在 employee-consumer 的例子中铝耻,我們使用了 employee-producer 使用 REST模板公開的 REST 服務(wù)。

但是我們必須編寫大量代碼才能執(zhí)行以下步驟

(1)使用功能區(qū)進(jìn)行負(fù)載平衡蹬刷。

(2)獲取服務(wù)實(shí)例瓢捉,然后獲取基本 URL。

(3)利用 REST 模板來使用服務(wù)办成。前面的代碼如下

[
復(fù)制代碼

](javascript:void(0);)

@Controller
public class ConsumerControllerClient {
@Autowired
private LoadBalancerClient loadBalancer;
public void getEmployee() throws RestClientException, IOException {
 ServiceInstance serviceInstance=loadBalancer.choose("employee-producer");
 System.out.println(serviceInstance.getUri());
 String baseUrl=serviceInstance.getUri().toString();
 baseUrl=baseUrl+"/employee";
 RestTemplate restTemplate = new RestTemplate();
 ResponseEntity<String> response=null;
 try{
  response=restTemplate.exchange(baseUrl,
     HttpMethod.GET, getHeaders(),String.class);
 }
 catch (Exception ex)
  {
  System.out.println(ex);
 }
 System.out.println(response.getBody());
}

[
復(fù)制代碼

](javascript:void(0);)

之前的代碼泡态,有像 NullPointer 這樣的例外的機(jī)會(huì),并不是最優(yōu)的迂卢。我們將看到如何使用 Netflix Feign 使呼叫變得更加輕松和清潔某弦。如果 Netflix Ribbon 依賴關(guān)系也在類路徑中,那么 Feign 默認(rèn)也會(huì)負(fù)責(zé)負(fù)載平衡而克。

什么是 Spring Cloud Bus靶壮?我們需要它嗎?

考慮以下情況:我們有多個(gè)應(yīng)用程序使用 Spring Cloud Config 讀取屬性员萍,而Spring Cloud Config 從 GIT 讀取這些屬性亮钦。

下面的例子中多個(gè)員工生產(chǎn)者模塊從 Employee Config Module 獲取 Eureka 注冊的財(cái)產(chǎn)。

如果假設(shè) GIT 中的 Eureka 注冊屬性更改為指向另一臺(tái) Eureka 服務(wù)器充活,會(huì)發(fā)生什么情況蜂莉。在這種情況下蜡娶,我們將不得不重新啟動(dòng)服務(wù)以獲取更新的屬性。

還有另一種使用執(zhí)行器端點(diǎn)/刷新的方式映穗。但是我們將不得不為每個(gè)模塊單獨(dú)調(diào)用這個(gè) url窖张。例如,如果 Employee Producer1 部署在端口 8080 上蚁滋,則調(diào)用 http:// localhost:8080 / refresh宿接。同樣對(duì)于 Employee Producer2 http://localhost:8081 / refresh 等等。這又很麻煩辕录。這就是 Spring Cloud Bus 發(fā)揮作用的地方睦霎。

Spring Cloud Bus 提供了跨多個(gè)實(shí)例刷新配置的功能。因此走诞,在上面的示例中副女,如果我們刷新 Employee Producer1,則會(huì)自動(dòng)刷新所有其他必需的模塊蚣旱。如果我們有多個(gè)微服務(wù)啟動(dòng)并運(yùn)行碑幅,這特別有用。這是通過將所有微服務(wù)連接到單個(gè)消息代理來實(shí)現(xiàn)的塞绿。無論何時(shí)刷新實(shí)例沟涨,此事件都會(huì)訂閱到偵聽此代理的所有微服務(wù),并且它們也會(huì)刷新异吻」埃可以通過使用端點(diǎn)/總線/刷新來實(shí)現(xiàn)對(duì)任何單個(gè)實(shí)例的刷新。[

](http://mp.weixin.qq.com/s?__biz=MzIyNDU2ODA4OQ==&mid=2247485351&idx=2&sn=214225ab4345f4d9c562900cb42a52ba&chksm=e80db1d1df7a38c741137246bf020a5f8970f74cd03530ccc4cb2258c1ced68e66e600e9e059&scene=21#wechat_redirect)

Spring Cloud斷路器的作用

當(dāng)一個(gè)服務(wù)調(diào)用另一個(gè)服務(wù)由于網(wǎng)絡(luò)原因或自身原因出現(xiàn)問題诀浪,調(diào)用者就會(huì)等待被調(diào)用者的響應(yīng) 當(dāng)更多的服務(wù)請(qǐng)求到這些資源導(dǎo)致更多的請(qǐng)求等待棋返,發(fā)生連鎖效應(yīng)(雪崩效應(yīng))

斷路器有完全打開狀態(tài):一段時(shí)間內(nèi) 達(dá)到一定的次數(shù)無法調(diào)用 并且多次監(jiān)測沒有恢復(fù)的跡象 斷路器完全打開 那么下次請(qǐng)求就不會(huì)請(qǐng)求到該服務(wù)

半開:短時(shí)間內(nèi) 有恢復(fù)跡象 斷路器會(huì)將部分請(qǐng)求發(fā)給該服務(wù),正常調(diào)用時(shí) 斷路器關(guān)閉

關(guān)閉:當(dāng)服務(wù)一直處于正常狀態(tài) 能正常調(diào)用

什么是Spring Cloud Config?

在分布式系統(tǒng)中笋妥,由于服務(wù)數(shù)量巨多,為了方便服務(wù)配置文件統(tǒng)一管理窄潭,實(shí)時(shí)更新春宣,所以需要分布式配置中心組件。在Spring Cloud中嫉你,有分布式配置中心組件spring cloud config 月帝,它支持配置服務(wù)放在配置服務(wù)的內(nèi)存中(即本地),也支持放在遠(yuǎn)程Git倉庫中幽污。在spring cloud config 組件中嚷辅,分兩個(gè)角色,一是config server距误,二是config client簸搞。

使用:

(1)添加pom依賴

(2)配置文件添加相關(guān)配置

(3)啟動(dòng)類添加注解@EnableConfigServer

什么是Spring Cloud Gateway?

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)限校驗(yàn)寺擂、限流控制等作用暇务。

使用了一個(gè)RouteLocatorBuilder的bean去創(chuàng)建路由,除了創(chuàng)建路由RouteLocatorBuilder可以讓你添加各種predicates和filters怔软,predicates斷言的意思垦细,顧名思義就是根據(jù)具體的請(qǐng)求的規(guī)則,由具體的route去處理挡逼,filters是各種過濾器括改,用來對(duì)請(qǐng)求做各種判斷和修改。

作者:ThinkWon
來源:https://thinkwon.blog.csdn.net/article/details/104397367

本文首發(fā)于公眾號(hào):Java版web項(xiàng)目挚瘟,歡迎關(guān)注獲取更多精彩內(nèi)容

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叹谁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乘盖,更是在濱河造成了極大的恐慌焰檩,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件订框,死亡現(xiàn)場離奇詭異析苫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)穿扳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門衩侥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矛物,你說我怎么就攤上這事茫死。” “怎么了履羞?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵峦萎,是天一觀的道長。 經(jīng)常有香客問我忆首,道長爱榔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任糙及,我火速辦了婚禮详幽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己唇聘,他們只是感情好版姑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雳灾,像睡著了一般漠酿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谎亩,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天炒嘲,我揣著相機(jī)與錄音,去河邊找鬼匈庭。 笑死夫凸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阱持。 我是一名探鬼主播夭拌,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼衷咽!你這毒婦竟也來了鸽扁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤镶骗,失蹤者是張志新(化名)和其女友劉穎桶现,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鼎姊,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骡和,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了相寇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慰于。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唤衫,靈堂內(nèi)的尸體忽然破棺而出婆赠,到底是詐尸還是另有隱情,我是刑警寧澤佳励,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布休里,位于F島的核電站,受9級(jí)特大地震影響植兰,放射性物質(zhì)發(fā)生泄漏份帐。R本人自食惡果不足惜璃吧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一楣导、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畜挨,春花似錦筒繁、人聲如沸噩凹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驮宴。三九已至,卻和暖如春呕缭,著一層夾襖步出監(jiān)牢的瞬間堵泽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工恢总, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迎罗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓片仿,卻偏偏與公主長得像纹安,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砂豌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 為什么需要學(xué)習(xí)Spring Cloud 不論是商業(yè)應(yīng)用還是用戶應(yīng)用厢岂,在業(yè)務(wù)初期都很簡單,我們通常會(huì)把它實(shí)現(xiàn)為單體結(jié)...
    非著名程序員i閱讀 189評(píng)論 0 0
  • 前言 Spring Cloud對(duì)于中小型互聯(lián)網(wǎng)公司來說是一種福音,因?yàn)檫@類公司往往沒有實(shí)力或者沒有足夠的資金投入去...
    程序媛馬小兮閱讀 1,167評(píng)論 0 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月娄涩,有人笑有人哭窗怒,有人歡樂有人憂愁,有人驚喜有人失落蓄拣,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,523評(píng)論 28 53
  • 信任包括信任自己和信任他人 很多時(shí)候扬虚,很多事情,失敗球恤、遺憾辜昵、錯(cuò)過,源于不自信咽斧,不信任他人 覺得自己做不成堪置,別人做不...
    吳氵晃閱讀 6,181評(píng)論 4 8
  • 怎么對(duì)待生活舀锨,它也會(huì)怎么對(duì)你 人都是哭著來到這個(gè)美麗的人間。每個(gè)人從來到塵寰到升入天堂宛逗,整個(gè)生命的歷程都是一本書坎匿,...
    靜靜在等你閱讀 4,957評(píng)論 1 6