前言
前段時(shí)間因特殊原因,導(dǎo)致我們的面試連環(huán)炮斷更了,剛好上週一位老鐵去面試被問(wèn)到了Spring Cloud,然後結(jié)合他的回饋,今天我們繼續(xù)走起SpringCloud面試連環(huán)砲。
歡迎大家追蹤我:
#Spring Cloud核心知識(shí)總結(jié)
#下面是一張Spring Cloud核心元件關(guān)係圖:
從這張圖中,其實(shí)我們是可以獲取很多資訊的,希望大家細(xì)細(xì)品嚐。
以下是Spring Cloud Netflix
和Spring Cloud Alibaba
核心元件的總結(jié):
活不多說(shuō),我們直接開(kāi)始 Spring Cloud 連環(huán)砲。
連環(huán)炮走起
1、什麼是Spring Cloud ?
Spring cloud 流應(yīng)用程式啟動(dòng)器是基於 Spring Boot 的 Spring 整合應(yīng)用程序,提供與外部系統(tǒng)的整合。 Spring cloud Task,一個(gè)生命週期短暫的微服務(wù)框架,用於快速建立執(zhí)行有限資料處理的應(yīng)用程式。
2、什麼是微服務(wù)?
微服務(wù)架構(gòu)是一種架構(gòu)模式或說(shuō)是一種架構(gòu)風(fēng)格,它提倡將單一應(yīng)用程式劃分為一組小的服務(wù),每個(gè)服務(wù)運(yùn)行在其獨(dú)立的在自己的進(jìn)程中,服務(wù)之間相互協(xié)調(diào)、相互配合,為使用者提供最終價(jià)值。服務(wù)之間採(cǎi)用輕量級(jí)的通訊機(jī)制互相溝通(通常是基於HTTP的RESTful API),每個(gè)服務(wù)都圍繞著具體的業(yè)務(wù)進(jìn)行構(gòu)建,並且能夠被獨(dú)立的構(gòu)建在生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)避免統(tǒng)一的、集中式的服務(wù)管理機(jī)制,對(duì)具體的一個(gè)服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語(yǔ)言、工具對(duì)其進(jìn)行構(gòu)建,可以有一個(gè)非常輕量級(jí)的集中式管理來(lái)協(xié)調(diào)這些服務(wù),可以使用不同的語(yǔ)言來(lái)編寫(xiě)服務(wù),也可以使用不同的資料儲(chǔ)存。
通俗的來(lái)講:
微服務(wù)就是一個(gè)獨(dú)立的職責(zé)單一的服務(wù)應(yīng)用程式。在 intellij idea 工具裡面就是用maven開(kāi)發(fā)的一個(gè)個(gè)獨(dú)立的module,具體就是使用springboot 開(kāi)發(fā)的一個(gè)小的模組,處理單一專業(yè)的業(yè)務(wù)邏輯,一個(gè)模組只做一個(gè)事情。
微服務(wù)強(qiáng)調(diào)的是服務(wù)大小,關(guān)注的是某一點(diǎn),具體解決某一個(gè)問(wèn)題/落地對(duì)應(yīng)的一個(gè)服務(wù)應(yīng)用,可以看做是idea 裡面一個(gè) module。
3、Spring Cloud有什麼優(yōu)勢(shì)
#使用 Spring Boot 開(kāi)發(fā)分散式微服務(wù)時(shí),我們面臨以下問(wèn)題
與分散式系統(tǒng)相關(guān)的複雜性-這種開(kāi)銷包括網(wǎng)路問(wèn)題,延遲開(kāi)銷,頻寬問(wèn)題,安全問(wèn)題。 服務(wù)發(fā)現(xiàn)-服務(wù)發(fā)現(xiàn)工具管理群集中的流程和服務(wù)如何找出並互相交談。它涉及一個(gè)服務(wù)目錄,在該目錄中註冊(cè)服務(wù),然後能夠找到並連接到該目錄中的服務(wù)。 冗餘-分散式系統(tǒng)中的冗餘問(wèn)題。 負(fù)載平衡 --負(fù)載平衡改善跨多個(gè)計(jì)算資源的工作負(fù)荷,諸如計(jì)算機(jī),計(jì)算機(jī)集群,網(wǎng)絡(luò)鏈路,中央處理單元,或磁碟驅(qū)動(dòng)器的分佈。 效能-問(wèn)題 由於各種營(yíng)運(yùn)開(kāi)銷導(dǎo)致的效能問(wèn)題。 部署複雜性-Devops 技能的要求。
4、微服務(wù)之間如何獨(dú)立通訊的?
同步通訊:dobbo透過(guò)RPC 遠(yuǎn)端過(guò)程調(diào)用、springcloud透過(guò)REST ?介面json呼叫等。
非同步:訊息佇列,如:RabbitMq
、ActiveM
、Kafka
等訊息佇列。
5、 什麼是服務(wù)熔斷?什麼是服務(wù)降級(jí)?
熔斷機(jī)制是應(yīng)對(duì)雪崩效應(yīng)的一種微服務(wù)連結(jié)保護(hù)機(jī)制。當(dāng)某個(gè)微服務(wù)不可用或回應(yīng)時(shí)間太長(zhǎng)時(shí),會(huì)進(jìn)行服務(wù)降級(jí),進(jìn)而熔斷該節(jié)點(diǎn)微服務(wù)的調(diào)用,快速返回「錯(cuò)誤」的回應(yīng)訊息。當(dāng)偵測(cè)到該節(jié)點(diǎn)微服務(wù)呼叫響應(yīng)正常後恢復(fù)呼叫鏈路。在Spring Cloud框架裡熔斷機(jī)制透過(guò)Hystrix實(shí)現(xiàn),Hystrix會(huì)監(jiān)控微服務(wù)間呼叫的狀況,當(dāng)失敗的呼叫到一定閾值,缺省是5秒內(nèi)呼叫20次,如果失敗,就會(huì)啟動(dòng)熔斷機(jī)制。
服務(wù)降級(jí),一般是從整體負(fù)載考慮。就是當(dāng)某個(gè)服務(wù)熔斷之後,伺服器將不再被調(diào)用,此時(shí)客戶端可以自己準(zhǔn)備一個(gè)本地的fallback回調(diào),返回一個(gè)預(yù)設(shè)值。這樣做,雖然水平下降,但好歹可用,比直接掛掉強(qiáng)。
Hystrix
相關(guān)註解@EnableHystrix
:開(kāi)啟熔斷@HystrixCommand(fallbackMethod=”XXX”)
,宣告一個(gè)失敗回滾處理函數(shù)XXX
,當(dāng)被註解的方法執(zhí)行逾時(shí)(預(yù)設(shè)是1000毫秒),就會(huì)執(zhí)行fallback
函數(shù),傳回錯(cuò)誤提示。
6、 請(qǐng)說(shuō)Eureka和zookeeper 的差別?
Zookeeper保證了CP,Eureka保證了AP。
A:高可用
C:一致性
P:分割區(qū)容錯(cuò)性
1.當(dāng)向註冊(cè)中心查詢服務(wù)清單時(shí),我們可以容忍註冊(cè)中心返回的是幾分鐘以前的信息,但不能容忍直接down掉不可用。也就是說(shuō),服務(wù)註冊(cè)功能對(duì)高可用性要求比較高,但zk會(huì)出現(xiàn)這樣一種情況,當(dāng)master節(jié)點(diǎn)因?yàn)榫W(wǎng)路故障與其他節(jié)點(diǎn)失去聯(lián)繫時(shí),剩餘節(jié)點(diǎn)會(huì)重新選leader。問(wèn)題在於,選取leader時(shí)間過(guò)長(zhǎng),30 ~ 120s,且選取期間zk叢集都不可用,這樣就會(huì)導(dǎo)致選取期間註冊(cè)服務(wù)癱瘓。在雲(yún)端部署的環(huán)境下,因網(wǎng)路問(wèn)題使得zk叢集失去master節(jié)點(diǎn)是較大機(jī)率會(huì)發(fā)生的事,雖然服務(wù)能夠恢復(fù),但是漫長(zhǎng)的選取時(shí)間導(dǎo)致的註冊(cè)長(zhǎng)期不可用是不能容忍的。
2.Eureka保證了可用性,Eureka各個(gè)節(jié)點(diǎn)是平等的,幾個(gè)節(jié)點(diǎn)掛掉不會(huì)影響正常節(jié)點(diǎn)的工作,剩餘的節(jié)點(diǎn)仍然可以提供註冊(cè)和查詢服務(wù)。而Eureka的客戶端向某個(gè)Eureka註冊(cè)或發(fā)現(xiàn)時(shí)發(fā)生連線失敗,則會(huì)自動(dòng)切換到其他節(jié)點(diǎn),只要有一臺(tái)Eureka還在,就能保證註冊(cè)服務(wù)可用,只是查到的資訊可能不是最新的。除此之外,Eureka還有自我保護(hù)機(jī)制,如果在15分鐘內(nèi)超過(guò)85%的節(jié)點(diǎn)沒(méi)有正常的心跳,那麼Eureka就認(rèn)為客戶端與註冊(cè)中心發(fā)生了網(wǎng)路故障,此時(shí)會(huì)出現(xiàn)以下幾種情況:
①、Eureka不在從註冊(cè)清單中移除因?yàn)殚L(zhǎng)時(shí)間沒(méi)有收到心跳而應(yīng)該過(guò)期的服務(wù)。
②、Eureka仍然能夠接受新服務(wù)的註冊(cè)和查詢請(qǐng)求,但是不會(huì)被同步到其他節(jié)點(diǎn)上(即保證當(dāng)前節(jié)點(diǎn)仍然可用)
③、當(dāng)網(wǎng)路穩(wěn)定時(shí),目前實(shí)例新的註冊(cè)資訊會(huì)被同步到其他節(jié)點(diǎn)。
因此,Eureka可以很好的應(yīng)對(duì)因網(wǎng)路故障導(dǎo)致部分節(jié)點(diǎn)失去聯(lián)繫的情況,而不會(huì)像Zookeeper那樣使整個(gè)微服務(wù)癱瘓
7、 SpringBoot和SpringCloud的差別?
SpringBoot專注於快速方便的開(kāi)發(fā)單一個(gè)體微服務(wù)。
SpringCloud是專注於全局的微服務(wù)協(xié)調(diào)整理治理框架,它將SpringBoot開(kāi)發(fā)的一個(gè)個(gè)單體微服務(wù)整合並管理起來(lái),
為各個(gè)微服務(wù)之間提供,配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由、微代理、事件總線、全域鎖、決策競(jìng)選、分散式會(huì)話等等集成服務(wù)
SpringBoot可以離開(kāi)SpringCloud獨(dú)立使??用開(kāi)發(fā)項(xiàng)目, 但是SpringCloud離不開(kāi)SpringBoot ,屬於依賴的關(guān)係.
SpringBoot專注於快速、方便的開(kāi)發(fā)單一微服務(wù)個(gè)體,SpringCloud關(guān)注全局的服務(wù)治理框架。
8、負(fù)載平衡的意義什麼?
在計(jì)算中,負(fù)載平衡可以改善跨計(jì)算機(jī),計(jì)算機(jī)集群,網(wǎng)絡(luò)鏈接,中央處理單元或磁碟機(jī)等多種計(jì)算資源的工作負(fù)載分佈。負(fù)載平衡旨在優(yōu)化資源使用,最大化吞吐量,最小化回應(yīng)時(shí)間並避免任何單一資源 的過(guò)載。使用多個(gè)組件進(jìn)行負(fù)載平衡而不是單一組件可能會(huì)透過(guò)冗餘來(lái)提高可靠性和可用性。負(fù)載平衡通常涉及專用軟體或硬體,例如多層交換器或網(wǎng)域名稱系統(tǒng)伺服器進(jìn)程。
9、什麼是Hystrix?它如何實(shí)現(xiàn)容錯(cuò)?
Hystrix是一個(gè)延遲和容錯(cuò)庫(kù),旨在隔離遠(yuǎn)端系統(tǒng),服務(wù)和第三方程式庫(kù)的存取點(diǎn),當(dāng)出現(xiàn)故障是不可避免的故障時(shí),停止級(jí)聯(lián)故障並在複雜的分散式系統(tǒng)中實(shí)現(xiàn)彈性。
通常是使用微服務(wù)架構(gòu)開(kāi)發(fā)的系統(tǒng),涉及許多微服務(wù)。這些微服務(wù)彼此協(xié)作。
思考以下微服務(wù)

#假設(shè)如果上圖的微服務(wù)9失敗了,那麼使用傳統(tǒng)方法我們將傳播一個(gè)異常。但這仍然會(huì)導(dǎo)致整個(gè)系統(tǒng)崩潰。
隨著微服務(wù)數(shù)量的增加,這個(gè)問(wèn)題變得更加複雜。微服務(wù)的數(shù)量可以高達(dá)1000.這是hystrix出現(xiàn)的地方 我們將使用Hystrix在這種情況下的Fallback方法功能。我們有兩個(gè)服務(wù)employee-consumer使用由employee-consumer公開(kāi)的服務(wù)。
簡(jiǎn)化圖如下

#現(xiàn)在假設(shè)由於某種原因,employee-producer公開(kāi)的服務(wù)會(huì)拋出異常。我們?cè)谶@種情況下使用Hystrix定義了一個(gè)回退方法。這種後備方法應(yīng)該具有與公開(kāi)服務(wù)相同的回傳類型。如果暴露服務(wù)中出現(xiàn)異常,則回退方法將傳回一些值。
10、什麼是Hystrix斷路器?我們需要它嗎?
由於某些原因,employee-consumer公開(kāi)服務(wù)會(huì)引發(fā)例外狀況。在這種情況下使用Hystrix我們定義了一個(gè)回退方法。如果在公開(kāi)服務(wù)中發(fā)生異常,則回退方法會(huì)傳回一些預(yù)設(shè)值。
如果firstPage method() 中的例外狀況繼續(xù)發(fā)生,則Hystrix電路將中斷,並且員工使用者將一起跳過(guò)firtsPage方法,並直接呼叫回退方法。斷路器的目的是給第一頁(yè)方法或第一頁(yè)方法可能呼叫的其他方法留出時(shí)間,並導(dǎo)致異常恢復(fù)??赡馨l(fā)生的情況是,在負(fù)載較小的情況下,導(dǎo)致異常的問(wèn)題有更好的恢復(fù)機(jī)會(huì) 。
#11、說(shuō)RPC 的實(shí)作原理
首先需要有處理網(wǎng)路連線通訊的模組,負(fù)責(zé)連接建立、管理和訊息的傳輸。其次需要有編 解碼的模組,因?yàn)榫W(wǎng)路通訊都是傳輸?shù)淖止?jié)碼,需要將我們使用的物件序列化和反序列 化。剩下的就是客戶端和伺服器端的部分,伺服器端暴露要開(kāi)放的服務(wù)接口,客戶調(diào)用服 務(wù)接口的一個(gè)代理實(shí)現(xiàn),這個(gè)代理實(shí)現(xiàn)負(fù)責(zé)收集數(shù)據(jù)、編碼並傳輸給伺服器然後等待結(jié)果 返回。
12,eureka自我保護(hù)機(jī)制是什麼?
#當(dāng)Eureka Server 節(jié)點(diǎn)在短時(shí)間內(nèi)遺失了過(guò)多實(shí)例的連線時(shí)(例如網(wǎng)路故障或頻繁啟動(dòng)關(guān)閉客戶端)節(jié)點(diǎn)會(huì)進(jìn)入自我保護(hù)模式,保護(hù)註冊(cè)訊息,不再刪除註冊(cè)數(shù)據(jù),故障恢復(fù)時(shí),自動(dòng)退出自我保護(hù)模式。
13,什麼是Ribbon?
ribbon是一個(gè)負(fù)載平衡客戶端,可以很好的控制htt和tcp的一些行為。 feign預(yù)設(shè)整合了ribbon
。
14,什麼是 Netflix Feign?它的優(yōu)點(diǎn)是什麼?
Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 啟發(fā)的 java 用戶端聯(lián)編程式。
Feign 的第一個(gè)目標(biāo)是將約束分母的複雜性統(tǒng)一到 http apis,而不考慮其穩(wěn)定性。
特點(diǎn):
Feign 採(cǎi)用的是基於介面的註解 - ##Feign 整合了ribbon,具有負(fù)載平衡的能力
- 整合了Hystrix,具有熔斷的能力
- 添加pom依賴。
- 啟動(dòng)類別新增
@EnableFeignClients - #定義一個(gè)介面
@FeignClient(name=“xxx”) 指定呼叫哪個(gè)服務(wù)
1.Ribbon都是呼叫其他服務(wù)的,但方式不同。 2.啟動(dòng)類別註解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients 3.服務(wù)指定的位置不同,Ribbon是在@RibbonClient註解上聲明,F(xiàn)eign則是在定義抽象方法的介面中使用@FeignClient聲明。 4.呼叫方式不同,Ribbon需要自己建構(gòu)http請(qǐng)求,模擬http請(qǐng)求。
16、Spring Cloud 的核心元件有哪些?
Eureka:服務(wù)註冊(cè)於發(fā)現(xiàn)。 Feign:基於動(dòng)態(tài)代理機(jī)制,根據(jù)註解和選擇的機(jī)器,拼接請(qǐng)求 url 位址,發(fā)起請(qǐng)求。 Ribbon:實(shí)作負(fù)載平衡,從一個(gè)服務(wù)的多臺(tái)機(jī)器中選擇一臺(tái)。 Hystrix:提供執(zhí)行緒池,不同的服務(wù)走不同的執(zhí)行緒池,實(shí)現(xiàn)了不同服務(wù)呼叫的隔離,避免了服務(wù)雪崩的問(wèn)題。 Zuul:網(wǎng)關(guān)管理,由 Zuul 閘道轉(zhuǎn)送要求給對(duì)應(yīng)的服務(wù)。
17、說(shuō)說(shuō)Spring Boot和Spring Cloud的關(guān)係
Spring Boot是Spring推出用於解決傳統(tǒng)框架設(shè)定檔冗餘,組裝組件繁雜的基於Maven的解決方案,旨在快速建立單一微服務(wù) 而Spring Cloud專注於解決各個(gè)微服務(wù)之間的協(xié)調(diào)與配置,服務(wù)之間的通訊,熔斷,負(fù)載平衡等 技術(shù)維度並相同,並且Spring Cloud是依賴於Spring Boot的,而Spring Boot並不是依賴與Spring Cloud,甚至還可以和Dubbo進(jìn)行優(yōu)秀的整合開(kāi)發(fā)
總結(jié)
SpringBoot專注於快速方便的開(kāi)發(fā)單一個(gè)體的微服務(wù) SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架,整合並管理各個(gè)微服務(wù),為各個(gè)微服務(wù)之間提供,配置管理,服務(wù)發(fā)現(xiàn),斷路器,路由,事件匯流排等整合服務(wù) #Spring Boot不依賴Spring Cloud,Spring Cloud依賴於Spring Boot,屬於依賴關(guān)係 Spring Boot專注於快速,方便的開(kāi)發(fā)單一的微服務(wù)個(gè)體,Spring Cloud關(guān)注全局的服務(wù)治理框架
18、說(shuō)說(shuō)微服務(wù)之間是如何獨(dú)立通訊的?
遠(yuǎn)端過(guò)程呼叫(Remote Procedure Invocation)
也就是我們常說(shuō)的服務(wù)的註冊(cè)與發(fā)現(xiàn),直接透過(guò)遠(yuǎn)端過(guò)程呼叫來(lái)存取別的service。
優(yōu)點(diǎn):簡(jiǎn)單,常見(jiàn),因?yàn)闆](méi)有中間件代理,系統(tǒng)更簡(jiǎn)單
缺點(diǎn):只支援請(qǐng)求/回應(yīng)的模式,不支援別的,例如通知、請(qǐng)求/非同步回應(yīng)、發(fā)布/訂閱、發(fā)布/非同步回應(yīng),降低了可用性,因?yàn)榭蛻舳撕头?wù)端在請(qǐng)求過(guò)程中必須都是可用的。
訊息
使用非同步訊息來(lái)做服務(wù)間通訊。服務(wù)間透過(guò)訊息管道來(lái)交換訊息,從而通訊。
優(yōu)點(diǎn):把客戶端和服務(wù)端解耦,更鬆耦合,提高可用性,因?yàn)橛嵪⒅虚g件快取了訊息,直到消費(fèi)者可以消費(fèi), ? ? ? 支援很多通訊機(jī)制例如通知、請(qǐng)求/非同步回應(yīng)、發(fā)布/訂閱、發(fā)布/非同步回應(yīng)。
缺點(diǎn):訊息中間件有額外的複雜。
19、Spring Cloud如何實(shí)現(xiàn)服務(wù)的註冊(cè)?
#服務(wù)發(fā)佈時(shí),指定對(duì)應(yīng)的服務(wù)名,將服務(wù)註冊(cè)到註冊(cè)中心(Eureka 、Zookeeper)
。
註冊(cè)中心加上@EnableEurekaServer
,服務(wù)用@EnableDiscoveryClient
,然後用ribbon或feign進(jìn)行服務(wù)直接的呼叫發(fā)現(xiàn)。
此題偏向向?qū)崙?zhàn),就看你是不是背面試題的,沒(méi)有實(shí)戰(zhàn)的人是不知道的。
20、什麼是服務(wù)熔斷?
在複雜的分散式系統(tǒng)中,微服務(wù)之間的相互調(diào)用,有可能出現(xiàn)各種各樣的原因?qū)е路?wù)的阻塞,在高並發(fā)場(chǎng)景下,服務(wù)的阻塞意味著執(zhí)行緒的阻塞,導(dǎo)致目前執(zhí)行緒不可用,伺服器的執(zhí)行緒全部阻塞,導(dǎo)致伺服器崩潰,由於服務(wù)之間的呼叫關(guān)係是同步的,會(huì)對(duì)整個(gè)微服務(wù)系統(tǒng)造成服務(wù)雪崩
為了解決某個(gè)微服務(wù)的呼叫回應(yīng)時(shí)間過(guò)長(zhǎng)或不可用進(jìn)而佔(zhàn)用越來(lái)越多的系統(tǒng)資源引起雪崩效應(yīng)就需要進(jìn)行服務(wù)熔斷和服務(wù)降級(jí)處理。
所謂的服務(wù)熔斷指的是某個(gè)服務(wù)故障或異常一起類似顯示世界中的「保險(xiǎn)絲"當(dāng)某個(gè)異常條件被觸發(fā)就直接熔斷整個(gè)服務(wù),而不是一直等到此服務(wù)超時(shí)。
服務(wù)熔斷就是相當(dāng)於我們電閘的保險(xiǎn)絲,一旦發(fā)生服務(wù)雪崩的,就會(huì)熔斷整個(gè)服務(wù),通過(guò)維護(hù)一個(gè)自己的線程池,當(dāng)線程達(dá)到閾值的時(shí)候就啟動(dòng)服務(wù)降級(jí),如果其他請(qǐng)求繼續(xù)訪問(wèn)就直接回傳fallback的預(yù)設(shè)值
21、了解Eureka自我保護(hù)機(jī)制嗎?
當(dāng)Eureka Server 節(jié)點(diǎn)在短時(shí)間內(nèi)遺失了過(guò)多實(shí)例的連線時(shí)(例如網(wǎng)路故障或頻繁啟動(dòng)關(guān)閉客戶端)節(jié)點(diǎn)會(huì)進(jìn)入自我保護(hù)模式,保護(hù)註冊(cè)訊息,不再刪除註冊(cè)數(shù)據(jù),故障恢復(fù)時(shí),自動(dòng)退出自我保護(hù)模式。
22、熟悉Spring Cloud Bus 嗎?
#spring cloud bus 將分散式的節(jié)點(diǎn)用輕量級(jí)的訊息代理連接起來(lái),它可以用於廣播設(shè)定檔的變更或服務(wù)直接的通訊,也可用於監(jiān)控。如果修改了設(shè)定文件,發(fā)送一次請(qǐng)求,所有的客戶端就會(huì)重新讀取設(shè)定檔。
23、Spring Cloud 斷路器有什麼作用?
#當(dāng)一個(gè)服務(wù)呼叫另一個(gè)服務(wù)因?yàn)榫W(wǎng)路原因或自身原因出現(xiàn)問(wèn)題,呼叫者就會(huì)等待被呼叫者的回應(yīng),當(dāng)更多的服務(wù)請(qǐng)求到這些資源導(dǎo)致更多的請(qǐng)求等待,發(fā)生連鎖效應(yīng)(雪崩效應(yīng))。一段時(shí)間內(nèi) 達(dá)到一定的次數(shù)無(wú)法呼叫 並且多次監(jiān)控沒(méi)有恢復(fù)的跡象,這時(shí)候斷路器完全打開(kāi) 那麼下次請(qǐng)求就不會(huì)請(qǐng)求到該服務(wù)。
半開(kāi):短時(shí)間內(nèi) 有恢復(fù)跡象 斷路器會(huì)將部分請(qǐng)求發(fā)給該服務(wù),正常呼叫時(shí) 斷路器關(guān)閉。關(guān)閉:當(dāng)服務(wù)一直處?kù)墩顟B(tài) 能正常呼叫。
24、了解Spring Cloud Config 嗎?
#在分散式系統(tǒng)中,由於服務(wù)數(shù)量巨多,為了方便服務(wù)設(shè)定檔統(tǒng)一管理,即時(shí)更新,所以需要分散式配置中心元件。在Spring Cloud中,有分散式配置中心元件Spring Cloud Config
,它支援配置服務(wù)放在配置服務(wù)的記憶體中(即本地),也支援放在遠(yuǎn)端Git倉(cāng)庫(kù)中。
在Spring Cloud Config
元件中,分成兩個(gè)角色,一是config server,二是config client。
使用方式:
新增pom依賴 設(shè)定檔新增相關(guān)組態(tài) 啟動(dòng)類別新增註解@EnableConfigServer
#25、說(shuō)說(shuō)你對(duì)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)常見(jiàn)的功能有路由轉(zhuǎn)送、權(quán)限校驗(yàn)、限流控制等作用。
使用了一個(gè)RouteLocatorBuilder的bean去創(chuàng)建路由,除了創(chuàng)建路由RouteLocatorBuilder可以讓你添加各種predicates和filters,predicates斷言的意思,顧名思義就是根據(jù)具體的請(qǐng)求的規(guī)則,由具體的route去處理,filters是各種過(guò)濾器,用來(lái)對(duì)請(qǐng)求做各種判斷和修改。
參考;http://1pgqu.cn/M0NZo
#總結(jié)
Spring Cloud目前相當(dāng)?shù)幕馃?,也差不多是java開(kāi)發(fā)者必備技能之一了。面試的時(shí)候被問(wèn)到,那也是正常不過(guò)了,很多人可能用來(lái)很久,但是沒(méi)有去了解原理,面試照樣掛掉。背面試題,在很大層面上還是很有用的。但從長(zhǎng)遠(yuǎn)角度來(lái)說(shuō),希望大家更深層去學(xué)習(xí)、去實(shí)踐。只有自己真的掌握,那才叫NB。
以上是面試回饋 Spring Cloud 的25連環(huán)砲的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Spring Cloud目前相當(dāng)?shù)幕馃?,也差不多是java開(kāi)發(fā)者必備技能之一了。面試的時(shí)候被問(wèn)到,那也是正常不過(guò)了,很多人可能用來(lái)很久,但是沒(méi)有去了解原理,面試照樣掛掉。

SpringCloud和SpringBoot是目前Java領(lǐng)域中最熱門的開(kāi)源框架,它們分別提供了一套完善的微服務(wù)架構(gòu)和快速建立應(yīng)用程式的解決方案。本文將對(duì)它們的功能進(jìn)行比較,並給出選擇指南,以幫助讀者了解它們的優(yōu)勢(shì)和適用場(chǎng)景。 SpringBoot是一個(gè)用於開(kāi)發(fā)Java應(yīng)用程式的框架,它提供了一個(gè)簡(jiǎn)化的開(kāi)發(fā)流程,整合了大量常用的功能和元件,減少了開(kāi)發(fā)者的工作量

springcloud五大核心元件是:1、Eureka,實(shí)現(xiàn)服務(wù)治理;2、Ribbon,提供客戶側(cè)的軟體負(fù)載平衡演算法;3、Hystrix斷路器,防止一個(gè)應(yīng)用程式多次試圖執(zhí)行一個(gè)操作;4、Zuul,具有api網(wǎng)關(guān),路由,負(fù)載平衡等多種作用;5、Config,進(jìn)行設(shè)定管理。

SpringBootStarter是什麼? SpringBootStarter是在SpringBoot組件中被提出來(lái)的一種概念、簡(jiǎn)化了很多煩瑣的配置、透過(guò)引入各種SpringBootStarter包可以快速搭建出一個(gè)專案的腳手架。例如我們常用的一些:spring-boot-starter-web:spring-boot-starter-data-redis:spring-boot-starter-data-mongodb:spring-boot-starter-data-jpa:spring-b

近年來(lái),隨著雲(yún)端運(yùn)算和分散式架構(gòu)的興起,微服務(wù)架構(gòu)的應(yīng)用越來(lái)越廣泛。而SpringCloud和SpringBoot作為Java開(kāi)發(fā)中的兩個(gè)重要框架,對(duì)於微服務(wù)的實(shí)作起到了重要的作用。然而,許多人對(duì)於它們?cè)谖⒎?wù)領(lǐng)域的不同應(yīng)用方式仍有一定的疑惑。本文將從不同的角度來(lái)探索SpringCloud和SpringBoot在微服務(wù)中的應(yīng)用方式。首先,讓我們來(lái)了解Spri

場(chǎng)景描述在專案開(kāi)發(fā)的過(guò)程中,需要修改調(diào)試的時(shí)候偶每次都需要重啟專案浪費(fèi)時(shí)間,以下是我整理的兩種常用的兩種方式一修改啟動(dòng)配置方式(主要針對(duì)debug模式下)點(diǎn)擊啟動(dòng)設(shè)定=》editconfigrations…configration下面修改Updateclassesandresourceson'update'action:當(dāng)使用者主動(dòng)執(zhí)行更新的時(shí)候更新快速鍵:Ctrl+F9onframedeactication:在編輯視窗失去焦點(diǎn)的時(shí)

springcloud和springboot的區(qū)別:1、作用;2、使用方式;3、創(chuàng)作初衷;4、目的;5、整合性;6、擴(kuò)展性;7、複雜性;8、社群支援;9、安全;10 、部署和運(yùn)維。詳細(xì)介紹:1、作用,Spring Boot主要的作用是為微服務(wù)開(kāi)發(fā)提供一種快速的方式,簡(jiǎn)化配置文件,提高工作效率,而Spring Cloud則是一個(gè)綜合管理框架,用於給微服務(wù)提供一個(gè)綜合管理框架等等。

從架構(gòu)角度看SpringCloud與SpringBoot的差異引言:在當(dāng)今的網(wǎng)路時(shí)代,建構(gòu)分散式系統(tǒng)已經(jīng)成為了一種必要的需求。而SpringBoot和SpringCloud正是為了滿足這個(gè)需求而誕生的。儘管它們都是Spring框架所提供的解決方案,但從架構(gòu)角度來(lái)看,它們存在著一些重要的差異。本文將從架構(gòu)的角度出發(fā),對(duì)SpringBoot和SpringCl
