国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringCloud最新最全面試題

這篇具有很好參考價(jià)值的文章主要介紹了SpringCloud最新最全面試題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、簡(jiǎn)單說(shuō)一說(shuō)什么是微服務(wù)?

二、微服務(wù)有哪些優(yōu)缺點(diǎn)?

三、微服務(wù)、分布式、集群的區(qū)別?

四、什么是Eureka?

五、Eureka有那兩大組件?

六、actuator是什么?

七、Discovery是什么?

八、什么是Eureka的自我保護(hù)機(jī)制?

九、微服務(wù)有很多注冊(cè)中心組件,說(shuō)說(shuō)你知道的有哪些?并說(shuō)出他們的區(qū)別?

十、什么是Ribbon?

十一、剛才你提到了RestTemplate,那么RestTemplate有什么常用的方法嗎?

十二、Ribbon有哪些負(fù)載規(guī)則?

十三、Ribbon默認(rèn)的輪詢規(guī)則的原理是什么?

十四、什么是OpenFeign?它能干什么?

十五、Feign和OpenFeign兩者區(qū)別?

十六、Ribbon與Feign的區(qū)別?

十七、簡(jiǎn)單講一講OpenFeign的超時(shí)控制?

十八、什么是OpenFeign日志增強(qiáng)?

十九、講一講Hystrix是什么?有什么作用?

二十、請(qǐng)你分別說(shuō)一說(shuō)服務(wù)降級(jí)和服務(wù)熔斷的概念

二十一、服務(wù)熔斷重要的三個(gè)參數(shù)是什么?

二十二、Hystrix有哪些常用注解?

二十三、Hystrix組件有個(gè)Dashboard,你了解過(guò)嗎?

二十四、GateWay是什么?

二十五、SpringCloud Gateway與Zuul的區(qū)別?

二十六、能簡(jiǎn)單講一講GateWay的非阻塞異步模型嗎?

二十七、GateWay有三個(gè)核心概念,你知道是什么嗎?

二十八、GateWay常用的Predicate斷言有哪些?

二十九、GateWay中自定義全局過(guò)濾器如何實(shí)現(xiàn)?

三十、SpringCloud Config是什么?有什么用處?

三十一、SpringCloud中,使用過(guò)全局事件總線bus嗎?如果使用過(guò)請(qǐng)簡(jiǎn)單的談一談

三十二、SpringCloud中,使用過(guò)Stream消息驅(qū)動(dòng)嗎?如果使用過(guò)請(qǐng)簡(jiǎn)單的談一談

三十三、假如說(shuō)我們的分布式項(xiàng)目鏈路很多,有很多節(jié)點(diǎn),那么如何跟蹤這些鏈路呢?

三十四、除了Eureka、Zookeeper、Consul,你還知道什么服務(wù)注冊(cè)中心的組件嗎?

三十五、你剛剛提到Nacos,那與其它幾種注冊(cè)中心組件有什么區(qū)別嗎?

三十六、Hystrix與Sentinel有什么區(qū)別嗎?

三十七、簡(jiǎn)單說(shuō)一說(shuō)Sentinel都有哪些流控規(guī)則?


一、簡(jiǎn)單說(shuō)一說(shuō)什么是微服務(wù)?

微服務(wù)架構(gòu)是一種架構(gòu)風(fēng)格,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),每個(gè)服務(wù)運(yùn)行在其獨(dú)立的自己的進(jìn)程中,服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值。服務(wù)之間采用輕量級(jí)的通信機(jī)制互相溝通(通常是基于HTTP的RESTful API)。

舉個(gè)簡(jiǎn)單例子來(lái)說(shuō),我們以前都是單一的Web項(xiàng)目,包含著比如訂單功能、支付功能、物流功能、日志功能等。但微服務(wù)是要你將這些功能按業(yè)務(wù)進(jìn)行拆分,每個(gè)功能是一個(gè)SpringBoot項(xiàng)目,每個(gè)項(xiàng)目互相通信。

二、微服務(wù)有哪些優(yōu)缺點(diǎn)?

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

  1. 每個(gè)服務(wù)足夠內(nèi)聚,足夠小,代碼容易理解這樣能聚焦一個(gè)指定的業(yè)務(wù)功能或業(yè)務(wù)需求。
  2. 開(kāi)發(fā)簡(jiǎn)單、開(kāi)發(fā)效率提高,一個(gè)服務(wù)可能就是專一的只干一件事。
  3. 微服務(wù)能夠被小團(tuán)隊(duì)單獨(dú)開(kāi)發(fā),這個(gè)小團(tuán)隊(duì)是2到5人的開(kāi)發(fā)人員組成。
  4. 微服務(wù)是松稠合的,是有功能意義的服務(wù),無(wú)論是在開(kāi)發(fā)階段或部署階段都是獨(dú)立的。
  5. 微服務(wù)能使用不同的語(yǔ)言開(kāi)發(fā)。
  6. 易于和第三方集成,微服務(wù)允許容易且靈活的方式集成自動(dòng)部署,通過(guò)持續(xù)集成工具,如Jenkins,Hudson,bamboo。
  7. 微服務(wù)易于被一個(gè)開(kāi)發(fā)人員理解,修改和維護(hù),這樣小團(tuán)隊(duì)能夠更關(guān)注自己的工作成果。無(wú)需通過(guò)合作才能體現(xiàn)價(jià)值。
  8. 微服務(wù)允許你利用融合最新技術(shù)。
  9. 微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會(huì)和HTML、CSS或其他界面組件混合。
  10. 每個(gè)微服務(wù)都有自己的存儲(chǔ)能力,可以有自己的數(shù)據(jù)庫(kù),也可以有統(tǒng)一數(shù)據(jù)庫(kù)。

缺點(diǎn):

  1. 開(kāi)發(fā)人員要處理分布式系統(tǒng)的復(fù)雜性。
  2. 多服務(wù)運(yùn)維難度,隨著服務(wù)的增加,運(yùn)維的壓力也在增大。
  3. 系統(tǒng)部署依賴。
  4. 服務(wù)間通信成本。
  5. 數(shù)據(jù)一致性。
  6. 系統(tǒng)集成測(cè)試。
  7. 性能監(jiān)控......

三、微服務(wù)、分布式、集群的區(qū)別?

分布式:一個(gè)業(yè)務(wù)分拆多個(gè)子業(yè)務(wù),部署在不同的服務(wù)器上。

集群:同一個(gè)業(yè)務(wù),部署在多個(gè)服務(wù)器上。

去飯店吃飯就是一個(gè)完整的業(yè)務(wù),飯店的廚師、配菜師、傳菜員、服務(wù)員就是分布式;廚師、配菜師、傳菜員和服務(wù)員都不止一個(gè)人,這就是集群;分布式就是微服務(wù)的一種表現(xiàn)形式,分布式是部署層面,微服務(wù)是設(shè)計(jì)層面。

四、什么是Eureka?

在服務(wù)注冊(cè)與發(fā)現(xiàn)中,有一個(gè)注冊(cè)中心。當(dāng)服務(wù)器啟動(dòng)的時(shí)候,會(huì)把當(dāng)前自己服務(wù)器的信息比如服務(wù)地址通訊地址等以別名方式注冊(cè)到注冊(cè)中心上。另一方(消費(fèi)者服務(wù)提供者),以該別名的方式去注冊(cè)中心上獲取到實(shí)際的服務(wù)通訊地址,然后再實(shí)現(xiàn)本地RPC調(diào)用RPC遠(yuǎn)程調(diào)用框架核心設(shè)計(jì)思想:在于注冊(cè)中心,因?yàn)槭褂米?cè)中心管理每個(gè)服務(wù)與服務(wù)之間的一個(gè)依賴關(guān)系(服務(wù)治理概念)。在任何RPC遠(yuǎn)程框架中,都會(huì)有一個(gè)注冊(cè)中心存放服務(wù)地址相關(guān)信息(接口地址)。

Eureka說(shuō)白了就是服務(wù)注冊(cè)中心,我們都知道微服務(wù)架構(gòu)會(huì)有很多Module項(xiàng)目,眾多的項(xiàng)目需要一個(gè)管家去管理,每個(gè)項(xiàng)目都要去Eureka中注冊(cè),由Eureka去統(tǒng)籌管理眾多的項(xiàng)目。

我們發(fā)現(xiàn)哪怕不加服務(wù)注冊(cè)中心,我們的消費(fèi)端也能調(diào)用數(shù)據(jù)提供端完成功能,但怕就怕在量變引起質(zhì)變。比如一個(gè)病人去私人醫(yī)院一對(duì)一的找大夫咨詢,這時(shí)倒不用中間隔這一個(gè)門診,直接去就行了。但如果病人多了,我想知道今天還有沒(méi)有剩號(hào)和余號(hào),我們需要監(jiān)控流量的管控,那么這些東西我們是不是需要一個(gè)門診來(lái)咨詢。我們得知道今天有什么專家坐診,這個(gè)專家現(xiàn)在有沒(méi)有余號(hào)了,這都需要門診來(lái)咨詢。

五、Eureka有那兩大組件?

Eureka Server和EurekaClient。

六、actuator是什么?

如圖,在Eureka中暴露了IP地址。

SpringCloud最新最全面試題,SpringCloud,Java基礎(chǔ)面試題,spring cloud,spring,后端,面試,最全

actuator的作用就是把Eureka頁(yè)面中暴露的IP地址換成你指定的名字,具有信息保護(hù)的作用。

七、Discovery是什么?

消費(fèi)端可以通過(guò)Discovery來(lái)獲取生產(chǎn)者端的一些信息,比如IP、端口、服務(wù)ID等。

八、什么是Eureka的自我保護(hù)機(jī)制?

一句話總結(jié):某時(shí)刻某一個(gè)微服務(wù)不可用 ,Eureka不會(huì)立刻清理,依舊會(huì)對(duì)該微服務(wù)的信息進(jìn)行保存。

默認(rèn)情況下,如果EurekaServer在一定時(shí)間內(nèi)沒(méi)有接收到某個(gè)微服務(wù)實(shí)例的心跳,EurekaServer將會(huì)注銷該實(shí)例(默認(rèn)90秒)。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)生(延時(shí)、卡頓、擁擠)時(shí),微服務(wù)與EurekaServer之間無(wú)法正常通信,以上行為可能變得非常危險(xiǎn)了——因?yàn)槲⒎?wù)本身其實(shí)是健康的,此時(shí)本不應(yīng)該注銷這個(gè)微服務(wù)。Eureka通過(guò)“自我保護(hù)模式”來(lái)解決這個(gè)問(wèn)題——當(dāng)EurekaServer節(jié)點(diǎn)在短時(shí)間內(nèi)丟失過(guò)多客戶端時(shí)(可能發(fā)生了網(wǎng)絡(luò)分區(qū)故障),那么這個(gè)節(jié)點(diǎn)就會(huì)進(jìn)入自我保護(hù)模式。

自我保護(hù)機(jī)制:默認(rèn)情況下EurekaClient定時(shí)向EurekaServer端發(fā)送心跳包

如果Eureka在server端在一定時(shí)間內(nèi)(默認(rèn)90秒)沒(méi)有收到EurekaClient發(fā)送心跳包,便會(huì)直接從服務(wù)注冊(cè)列表中剔除該服務(wù),但是在短時(shí)間( 90秒中)內(nèi)丟失了大量的服務(wù)實(shí)例心跳,這時(shí)候Eurekaserver會(huì)開(kāi)啟自我保護(hù)機(jī)制,不會(huì)剔除該服務(wù)(該現(xiàn)象可能出現(xiàn)在如果網(wǎng)絡(luò)不通但是EurekaClient為出現(xiàn)宕機(jī),此時(shí)如果換做別的注冊(cè)中心如果一定時(shí)間內(nèi)沒(méi)有收到心跳會(huì)將剔除該服務(wù),這樣就出現(xiàn)了嚴(yán)重失誤,因?yàn)榭蛻舳诉€能正常發(fā)送心跳,只是網(wǎng)絡(luò)延遲問(wèn)題,而保護(hù)機(jī)制是為了解決此問(wèn)題而產(chǎn)生的)。

它的設(shè)計(jì)哲學(xué)就是寧可保留錯(cuò)誤的服務(wù)注冊(cè)信息,也不盲目注銷任何可能健康的服務(wù)實(shí)例。一句話講解:好死不如賴活著。

九、微服務(wù)有很多注冊(cè)中心組件,說(shuō)說(shuō)你知道的有哪些?并說(shuō)出他們的區(qū)別?

注冊(cè)中心組件有Eureka、Zookeeper、Consul等。

區(qū)別是:

SpringCloud最新最全面試題,SpringCloud,Java基礎(chǔ)面試題,spring cloud,spring,后端,面試,最全

Eureka具有自我保護(hù)機(jī)制,當(dāng)你某個(gè)服務(wù)宕機(jī)時(shí),我不會(huì)立即把你干掉,會(huì)保留一段時(shí)間,保證了高可用性AP。

而Zk和Consul都是只要服務(wù)一宕機(jī),立馬把你干掉,頭也不回,所以保證了CP。

十、什么是Ribbon?

Ribbon是基于Netflix Ribbon實(shí)現(xiàn)的一套客戶端負(fù)載均衡的工具。

簡(jiǎn)單的說(shuō),Ribbon是Netflix發(fā)布的開(kāi)源項(xiàng)目,主要功能是提供客戶端的軟件負(fù)載均衡算法服務(wù)調(diào)用。

一句話解釋Ribbon,就是?負(fù)載均衡 + RestTemplate調(diào)用。

十一、剛才你提到了RestTemplate,那么RestTemplate有什么常用的方法嗎?

(1)getForObject方法/getForEntity方法(GET請(qǐng)求方法)。

getForObject():返回對(duì)象為響應(yīng)體中數(shù)據(jù)轉(zhuǎn)化成的對(duì)象,基本上可以理解為Json。

getForEntity():返回對(duì)象為ResponseEntity對(duì)象,包含了響應(yīng)中的一些重要信息,比如響應(yīng)頭、響應(yīng)狀態(tài)碼、響應(yīng)體等。

(2)postForObject方法/postForEntity方法(POST請(qǐng)求方法)。

十二、Ribbon有哪些負(fù)載規(guī)則?

1、RoundRobinRule 輪詢。

2、RandomRule 隨機(jī)。

3、RetryRule 先按照RoundRobinRule的策略獲取服務(wù),如果獲取服務(wù)失敗則在指定時(shí)間內(nèi)會(huì)進(jìn)行重試,獲取可用的服務(wù)。

4、WeightedResponseTimeRule 對(duì)RoundRobinRule的擴(kuò)展,響應(yīng)速度越快的實(shí)例選擇權(quán)重越大,越容易被選擇。

5、BestAvailableRule 會(huì)先過(guò)濾掉由于多次訪問(wèn)故障而處于斷路器跳閘狀態(tài)的服務(wù),然后選擇一個(gè)并發(fā)量最小的服務(wù)。

6、AvailabilityFilteringRule 先過(guò)濾掉故障實(shí)例,再選擇并發(fā)較小的實(shí)例。

7、ZoneAvoidanceRule 默認(rèn)規(guī)則,復(fù)合判斷server所在區(qū)域的性能和server的可用性選擇服務(wù)器。

十三、Ribbon默認(rèn)的輪詢規(guī)則的原理是什么?

默認(rèn)負(fù)載輪訓(xùn)算法rest接口第幾次請(qǐng)求數(shù) % 服務(wù)器集群總數(shù)量 = 實(shí)際調(diào)用服務(wù)器位置下標(biāo),每次服務(wù)重啟動(dòng)后rest接口計(jì)數(shù)從1開(kāi)始。

我們的客戶端現(xiàn)有2臺(tái)機(jī)器,我們是第一次請(qǐng)求,那么按公式算就是1%2=1。

十四、什么是OpenFeign?它能干什么?

Feign是一個(gè)聲明式WebService客戶端。使用Feign能讓編寫(xiě)Web Service客戶端更加簡(jiǎn)單。它的使用方法是定義一個(gè)服務(wù)接口然后在上面添加注解Feign也支持可拔插式的編碼器和解碼器。Spring Cloud對(duì)Feign進(jìn)行了封裝,使其支持了SpringMVC標(biāo)準(zhǔn)注解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支持負(fù)載均衡。

前面在使用Ribbon+RestTemplate時(shí),利用RestTemplate對(duì)http請(qǐng)求的封裝處理,形成了一套模版化的調(diào)用方法。但是在實(shí)際開(kāi)發(fā)中,由于對(duì)服務(wù)依賴的調(diào)用可能不止一處,往往一個(gè)接口會(huì)被多處調(diào)用,所以通常都會(huì)針對(duì)每個(gè)微服務(wù)自行封裝一些客戶端類來(lái)包裝這些依賴服務(wù)的調(diào)用。所以,F(xiàn)eign在此基礎(chǔ)上做了進(jìn)一步封裝,由他來(lái)幫助我們定義和實(shí)現(xiàn)依賴服務(wù)接口的定義。在Feign的實(shí)現(xiàn)下,我們只需創(chuàng)建一個(gè)接口并使用注解的方式來(lái)配置它(以前是Dao接口上面標(biāo)注Mapper注解,現(xiàn)在是一個(gè)微服務(wù)接口上面標(biāo)注一個(gè)Feign注解即可),即可完成對(duì)服務(wù)提供方的接口綁定,簡(jiǎn)化了使用Spring cloud Ribbon時(shí),自動(dòng)封裝服務(wù)調(diào)用客戶端的開(kāi)發(fā)量。而OpenFeign在Feign的基礎(chǔ)上又增加了對(duì)springmvc注解的支持。

十五、Feign和OpenFeign兩者區(qū)別?

Feign是Spring Cloud組件中的一個(gè)輕量級(jí)RESTful的HTTP服務(wù)客戶端。Feign內(nèi)置了Ribbon,用來(lái)做客戶端負(fù)載均衡,去調(diào)用服務(wù)注冊(cè)中心的服務(wù)。Feign的使用方式是:使用Feign的注解定義接口,調(diào)用這個(gè)接口,就可以調(diào)用服務(wù)注冊(cè)中心的服務(wù)。

OpenFeign是Spring Cloud在Feign的基礎(chǔ)上支持了SpringMVC的注解,如@RequesMapping等等。OpenFeign的@Feignclient可以解析SpringMvc的@RequestMapping注解下的接口,并通過(guò)動(dòng)態(tài)代理的方式產(chǎn)生實(shí)現(xiàn)類,實(shí)現(xiàn)類中做負(fù)載均衡并調(diào)用其他服務(wù)。

<dependency> <groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-feign</artifactId>

</dependency>

<dependency> <groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

十六、Ribbon與Feign的區(qū)別?

1、Ribbon和Feign都是調(diào)用其他服務(wù)的,但方式不同。

2、啟動(dòng)類注解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients。

3、服務(wù)指定的位置不同,Ribbon是在@RibbonClient注解上聲明,F(xiàn)eign則是在定義抽象方法的接口中使用@FeignClient聲明。

4、調(diào)用方式不同,Ribbon需要自己構(gòu)建http請(qǐng)求,模擬http請(qǐng)求然后使用RestTemplate發(fā)送給其他服務(wù),步驟相當(dāng)繁瑣。Feign需要將調(diào)用的方法定義成抽象方法即可。

十七、簡(jiǎn)單講一講OpenFeign的超時(shí)控制?

我們?cè)谑褂肙penFeign進(jìn)行調(diào)用接口時(shí),如果因?yàn)槟承┰?,調(diào)用時(shí)間過(guò)長(zhǎng),會(huì)導(dǎo)致報(bào)錯(cuò)。

OpenFeign默認(rèn)等待1秒鐘,超過(guò)后報(bào)錯(cuò)。也就是說(shuō)如果你調(diào)用接口總共花了3秒時(shí)間,超過(guò)1秒不返回直接就報(bào)錯(cuò)了。為了避免這樣的情況,有時(shí)候我們需要設(shè)置Feign客戶端的超時(shí)控制。

十八、什么是OpenFeign日志增強(qiáng)?

說(shuō)白了就是對(duì)Feign接口的調(diào)用情況進(jìn)行監(jiān)控和輸出

有以下四種日志級(jí)別:

NONE:默認(rèn)的,不顯示任何日志。

BASIC:僅記錄請(qǐng)求方法、URL、響應(yīng)狀態(tài)碼及執(zhí)行時(shí)間。

HEADERS:除了BASIC中定義的信息之外,還有請(qǐng)求和響應(yīng)的頭信息。

FULL:除了HEADERS中定義的信息之外,還有請(qǐng)求和響應(yīng)的正文及元數(shù)據(jù)。

十九、講一講Hystrix是什么?有什么作用?

在復(fù)雜分布式體系結(jié)構(gòu)中的應(yīng)用程序有數(shù)十個(gè)依賴關(guān)系,每個(gè)依賴關(guān)系在某些時(shí)候?qū)⒉豢杀苊獾厥 ?/p>

多個(gè)微服務(wù)之間調(diào)用的時(shí)候,假設(shè)微服務(wù)A調(diào)用微服務(wù)B和微服務(wù)C,微服務(wù)B和微服務(wù)C又調(diào)用其它的微服務(wù),這就是所謂的“扇出”。如果扇出的鏈路上某個(gè)微服務(wù)的調(diào)用響應(yīng)時(shí)間過(guò)長(zhǎng)或者不可用,對(duì)微服務(wù)A的調(diào)用就會(huì)占用越來(lái)越多的系統(tǒng)資源,進(jìn)而引起系統(tǒng)崩潰,所謂的“雪崩效應(yīng)”。

而Hystrix是一個(gè)用于處理分布式系統(tǒng)的延遲容錯(cuò)的開(kāi)源庫(kù),在分布式系統(tǒng)里,許多依賴不可避免的會(huì)調(diào)用失敗,比如超時(shí)、異常等,Hystrix能夠保證在一個(gè)依賴出問(wèn)題的情況下,不會(huì)導(dǎo)致整體服務(wù)失敗,避免級(jí)聯(lián)故障,以提高分布式系統(tǒng)的彈性

"斷路器”本身是一種開(kāi)關(guān)裝置,當(dāng)某個(gè)服務(wù)單元發(fā)生故障之后,通過(guò)斷路器的故障監(jiān)控(類似熔斷保險(xiǎn)絲),向調(diào)用方返回一個(gè)符合預(yù)期的、可處理的備選響應(yīng)(FallBack),而不是長(zhǎng)時(shí)間的等待或者拋出調(diào)用方無(wú)法處理的異常,這樣就保證了服務(wù)調(diào)用方的線程不會(huì)被長(zhǎng)時(shí)間、不必要地占用,從而避免了故障在分布式系統(tǒng)中的蔓延,乃至雪崩。

二十、請(qǐng)你分別說(shuō)一說(shuō)服務(wù)降級(jí)和服務(wù)熔斷的概念

服務(wù)降級(jí):服務(wù)器忙,請(qǐng)稍后再試,不讓客戶端等待并立刻返回一個(gè)友好提示,調(diào)用備選fallback方法。比如程序運(yùn)行導(dǎo)常(數(shù)組下標(biāo)越界、除數(shù)分母為0)、超時(shí)等會(huì)觸發(fā)降級(jí)。

服務(wù)熔斷:類比保險(xiǎn)絲達(dá)到最大服務(wù)訪問(wèn)后,直接拒絕訪問(wèn),拉閘限電,然后調(diào)用服務(wù)降級(jí)的方法并返回友好提示。服務(wù)熔斷也是一種服務(wù)降級(jí)方式。

1、調(diào)用失敗會(huì)觸發(fā)降級(jí),而降級(jí)會(huì)調(diào)用fallback方法。

2、但無(wú)論如何降級(jí)的流程一定會(huì)先調(diào)用正常方法再調(diào)用fallback方法。

3、假如單位時(shí)間內(nèi)調(diào)用失敗次數(shù)過(guò)多,也就是降級(jí)次數(shù)過(guò)多,則觸發(fā)熔斷。

4、熔斷以后就會(huì)跳過(guò)正常方法直接調(diào)用fallback方法。

5、所謂“熔斷后服務(wù)不可用”就是因?yàn)樘^(guò)了正常方法直接執(zhí)行fallback。

二十一、服務(wù)熔斷重要的三個(gè)參數(shù)是什么?

1、快照時(shí)間窗:斷路器確定是否打開(kāi)需要統(tǒng)計(jì)一些請(qǐng)求和錯(cuò)誤數(shù)據(jù),而統(tǒng)計(jì)的時(shí)間范圍就是快照時(shí)間窗,默認(rèn)為最近的10秒。

2、請(qǐng)求總數(shù)閥值:在快照時(shí)間窗內(nèi),必須滿足請(qǐng)求總數(shù)閥值才有資格熔斷。默認(rèn)為20,意味著在10秒內(nèi),如果該hystrix命令的調(diào)用次數(shù)不足20次,即使所有的請(qǐng)求都超時(shí)或其他原因失敗,斷路器都不會(huì)打開(kāi)。

3、錯(cuò)誤百分比閥值:當(dāng)請(qǐng)求總數(shù)在快照時(shí)間窗內(nèi)超過(guò)了閥值,比如發(fā)生了30次調(diào)用,如果在這30次調(diào)用中,有15次發(fā)生了超時(shí)異常,也就是超過(guò)50%的錯(cuò)誤百分比,在默認(rèn)設(shè)定50%閥值情況下,這時(shí)候就會(huì)將斷路器打開(kāi)。

二十二、Hystrix有哪些常用注解?

@HystrixCommand、@EnableHystrix、@DefaultProperties

二十三、Hystrix組件有個(gè)Dashboard,你了解過(guò)嗎?

Dashboard是Dashboard組件的圖形化頁(yè)面,Hystrix會(huì)持續(xù)地記錄所有通過(guò)Hystrix發(fā)起的請(qǐng)求的執(zhí)行信息,并以統(tǒng)計(jì)報(bào)表和圖形的形式展示給用戶,包括每秒執(zhí)行多少請(qǐng)求多少成功,多少失敗等。

二十四、GateWay是什么?

Gateway是在Spring生態(tài)系統(tǒng)之上構(gòu)建的API網(wǎng)關(guān)服務(wù),基于Spring 5,Spring Boot 2和Project Reactor等技術(shù)。

Gateway旨在提供一種簡(jiǎn)單而有效的方式來(lái)對(duì)API進(jìn)行路由,以及提供一些強(qiáng)大的過(guò)濾器功能,例如:熔斷、限流、重試等。

SpringCloud Gateway是基于WebFlux框架實(shí)現(xiàn)的,而WebFlux框架底層則使用了高性能的Reactor模式通信框架Netty。

二十五、SpringCloud Gateway與Zuul的區(qū)別?

(1)Zuul 1.x使用的是傳統(tǒng)的Serviet IO處理模型。而Gateway使用的是異步非阻塞模型,效率很高。在性能方面,根據(jù)官方提供的基準(zhǔn)測(cè)試,Spring Cloud Gateway的RPS(每秒請(qǐng)求數(shù))是Zuul的1.6倍。

(2)Gateway還支持WebSocket,并且與Spring緊密集成擁有更好的開(kāi)發(fā)體驗(yàn)。

二十六、能簡(jiǎn)單講一講GateWay的非阻塞異步模型嗎?

Zuul1.x模型

Springcloud中所集成的Zuul版本,采用的是Tomcat容器,使用的是傳統(tǒng)的Serviet IO處理模型。

該模型的缺點(diǎn)是:

Servlet是一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)IO模型,當(dāng)請(qǐng)求進(jìn)入Servlet container時(shí),Servlet container就會(huì)為其綁定一個(gè)線程,在并發(fā)不高的場(chǎng)景下這種模型是適用的。但是一旦高并發(fā)(如抽風(fēng)用Jmeter壓),線程數(shù)量就會(huì)上漲,而線程資源代價(jià)是昂貴的(上線文切換,內(nèi)存消耗大)嚴(yán)重影響請(qǐng)求的處理時(shí)間。在一些簡(jiǎn)單業(yè)務(wù)場(chǎng)景下,不希望為每個(gè)request分配一個(gè)線程,只需要1個(gè)或幾個(gè)線程就能應(yīng)對(duì)極大并發(fā)的請(qǐng)求,這種業(yè)務(wù)場(chǎng)景下servlet模型沒(méi)有優(yōu)勢(shì)。

所以Zuul 1.X是基于servlet之上的一個(gè)阻塞式處理模型,即Spring實(shí)現(xiàn)了處理所有request請(qǐng)求的一個(gè)servlet (DispatcherServlet)并由該servlet阻塞式處理處理。所以SpringCloud Zuul無(wú)法擺脫servlet模型的弊端。

Gateway模型

傳統(tǒng)的Web框架,比如說(shuō): Struts2,SpringMVC等都是基于Servlet APl與Servlet容器基礎(chǔ)之上運(yùn)行的。

但是在Servlet3.1之后有了異步非阻塞的支持。而WebFlux是一個(gè)典型非阻塞異步的框架,它的核心是基于Reactor的相關(guān)API實(shí)現(xiàn)的。相對(duì)于傳統(tǒng)的web框架來(lái)說(shuō),它可以運(yùn)行在諸如Netty,Undertow及支持Servlet3.1的容器上。非阻塞式+函數(shù)式編程(Spring 5必須讓你使用Java 8)。

Spring WebFlux是Spring 5.0 引入的新的響應(yīng)式框架,區(qū)別于Spring MVC,它不需要依賴Servlet APl,它是完全異步非阻塞的,并且基于Reactor來(lái)實(shí)現(xiàn)響應(yīng)式流規(guī)范。

二十七、GateWay有三個(gè)核心概念,你知道是什么嗎?

1、Route(路由) - 路由是構(gòu)建網(wǎng)關(guān)的基本模塊,它由ID,目標(biāo)URI,一系列的斷言和過(guò)濾器組成,如斷言為true則匹配該路由。

2、Predicate(斷言) - 參考的是Java8的java.util.function.Predicate,開(kāi)發(fā)人員可以匹配HTTP請(qǐng)求中的所有內(nèi)容(例如請(qǐng)求頭或請(qǐng)求參數(shù)),如果請(qǐng)求與斷言相匹配則進(jìn)行路由。

3、Filter(過(guò)濾) - 指的是Spring框架中GatewayFilter的實(shí)例,使用過(guò)濾器,可以在請(qǐng)求被路由前或者之后對(duì)請(qǐng)求進(jìn)行修改。

舉例:我去醫(yī)院看牙科(請(qǐng)求),門衛(wèi)大爺(Filter過(guò)濾)說(shuō)不管你要看什么,必須先做核酸。當(dāng)我做完核酸后門衛(wèi)大爺讓我進(jìn)去了。這時(shí)我拿著手機(jī)上的掛號(hào)信息與醫(yī)院的掛號(hào)信息相匹配(Predicate斷言),匹配上了我可以找大夫看病了(路由)。

二十八、GateWay常用的Predicate斷言有哪些?

After:比如在某段時(shí)間后才可以執(zhí)行路由。這個(gè)After大多用在維護(hù)開(kāi)服時(shí)間,比如游戲準(zhǔn)備22年10月1日開(kāi)服,那用After可以設(shè)置此時(shí)間之后的路由才好使。

Before:與After異曲同工。

Between:在兩個(gè)時(shí)間段內(nèi)才可執(zhí)行路由。

Cookie:通過(guò)Cookie值去匹配。

Header:根據(jù)請(qǐng)求頭信息來(lái)進(jìn)行匹配。

二十九、GateWay中自定義全局過(guò)濾器如何實(shí)現(xiàn)?

主要實(shí)現(xiàn)兩個(gè)接口:

  • GlobalFilter
  • Ordered

三十、SpringCloud Config是什么?有什么用處?

config是分布式配置中心,分布式系統(tǒng)面臨的問(wèn)題是,微服務(wù)意味著要將單體應(yīng)用中的業(yè)務(wù)拆分成一個(gè)個(gè)子服務(wù),每個(gè)服務(wù)的粒度相對(duì)較小,因此系統(tǒng)中會(huì)出現(xiàn)大量的服務(wù)。由于每個(gè)服務(wù)都需要必要的配置信息才能運(yùn)行,所以一套集中式的、動(dòng)態(tài)的配置管理設(shè)施是必不可少的。

比如你現(xiàn)在有40個(gè)微服務(wù)都用的一個(gè)叫test的數(shù)據(jù)庫(kù),如果我們修改了數(shù)據(jù)庫(kù)的名字,那還要每個(gè)微服務(wù)的配置文件都改一遍嗎,所以我們需要Config進(jìn)行集中式管理。

三十一、SpringCloud中,使用過(guò)全局事件總線bus嗎?如果使用過(guò)請(qǐng)簡(jiǎn)單的談一談

bus一般配合config進(jìn)行使用,config配置中心具有一個(gè)痛點(diǎn),就是當(dāng)你改了配置文件,你需要一個(gè)個(gè)的手動(dòng)去通知到下面的服務(wù),這樣很麻煩。而bus就輕松的解決了這點(diǎn),Spring Cloud Bus目前支持RabbitMQ和Kafka。

ConfigClient實(shí)例都會(huì)監(jiān)聽(tīng)MQ中同一個(gè)topic(默認(rèn)是Spring Cloud Bus)。當(dāng)一個(gè)服務(wù)刷新數(shù)據(jù)的時(shí)候,它會(huì)把這個(gè)信息放入到Topic中,這樣其它監(jiān)聽(tīng)同一Topic的服務(wù)就能得到通知,然后去更新自身的配置。

三十二、SpringCloud中,使用過(guò)Stream消息驅(qū)動(dòng)嗎?如果使用過(guò)請(qǐng)簡(jiǎn)單的談一談

常見(jiàn)MQ(消息中間件):

  • ActiveMQ
  • RabbitMQ
  • RocketMQ
  • Kafka

有沒(méi)有一種新的技術(shù)誕生,讓我們不再關(guān)注具體MQ的細(xì)節(jié),我們只需要用一種適配綁定的方式,自動(dòng)的給我們?cè)诟鞣NMQ內(nèi)切換。(類似于Hibernate)

Cloud Stream是什么?屏蔽底層消息中間件的差異,降低切換成本,統(tǒng)一消息的編程模型。

其實(shí)Hibernate就是這個(gè)意思,我們不用關(guān)心它用的是oracle還是mysql,它給我們提供了session.create(),我們用就好了,不用關(guān)心具體的語(yǔ)法,我們也不可能所有數(shù)據(jù)庫(kù)都精通。

比方說(shuō)我們用到了RabbitMQ和Kafka,由于這兩個(gè)消息中間件的架構(gòu)上的不同,像RabbitMQ有exchange,kafka有Topic和Partitions分區(qū)。

這些中間件的差異性導(dǎo)致我們實(shí)際項(xiàng)目開(kāi)發(fā)給我們?cè)斐闪艘欢ǖ睦_,我們?nèi)绻昧藘蓚€(gè)消息隊(duì)列的其中一種,后面的業(yè)務(wù)需求,我想往另外一種消息隊(duì)列進(jìn)行遷移,這時(shí)候無(wú)疑就是一個(gè)災(zāi)難性的,一大堆東西都要重新推倒重新做,因?yàn)樗覀兊南到y(tǒng)耦合了,這時(shí)候Spring Cloud Stream給我們提供了—種解耦合的方式。

三十三、假如說(shuō)我們的分布式項(xiàng)目鏈路很多,有很多節(jié)點(diǎn),那么如何跟蹤這些鏈路呢?

使用SpringCloud Sleuth技術(shù)。在微服務(wù)框架中,一個(gè)由客戶端發(fā)起的請(qǐng)求在后端系統(tǒng)中會(huì)經(jīng)過(guò)多個(gè)不同的的服務(wù)節(jié)點(diǎn)調(diào)用來(lái)協(xié)同產(chǎn)生最后的請(qǐng)求結(jié)果,每一個(gè)前段請(qǐng)求都會(huì)形成一條復(fù)雜的分布式服務(wù)調(diào)用鏈路,鏈路中的任何一環(huán)出現(xiàn)高延時(shí)或錯(cuò)誤都會(huì)引起整個(gè)請(qǐng)求最后的失敗。通過(guò)Sleuth技術(shù)可以通過(guò)頁(yè)面來(lái)對(duì)各個(gè)節(jié)點(diǎn)鏈路進(jìn)行跟蹤,哪個(gè)節(jié)點(diǎn)出了問(wèn)題,都會(huì)有所展現(xiàn)。

三十四、除了Eureka、Zookeeper、Consul,你還知道什么服務(wù)注冊(cè)中心的組件嗎?

知道,還有阿里出的Nacos。Nacos就是注冊(cè)中心+配置中心的組合 -> Nacos = Eureka+Config+Bus??梢蕴娲鶨ureka做服務(wù)注冊(cè)中心,還可以替代Config做服務(wù)配置中心。

三十五、你剛剛提到Nacos,那與其它幾種注冊(cè)中心組件有什么區(qū)別嗎?

SpringCloud最新最全面試題,SpringCloud,Java基礎(chǔ)面試題,spring cloud,spring,后端,面試,最全

?Nacos支持AP和CP模式的切換。

三十六、Hystrix與Sentinel有什么區(qū)別嗎?

首先它們倆都相當(dāng)于斷路器的作用,用來(lái)服務(wù)降級(jí)、服務(wù)熔斷、流量控制等功能。

區(qū)別在于:

????????Hystrix

????????????????需要我們程序員自己手工搭建監(jiān)控平臺(tái)。

????????????????沒(méi)有一套web界面可以給我們進(jìn)行更加細(xì)粒度化得配置流控、速率控制、服務(wù)熔斷、服務(wù)降級(jí)。

????????Sentinel

????????????????單獨(dú)一個(gè)組件,可以獨(dú)立出來(lái)。

????????????????直接界面化的細(xì)粒度統(tǒng)一配置。

三十七、簡(jiǎn)單說(shuō)一說(shuō)Sentinel都有哪些流控規(guī)則?

(1)QPS:當(dāng)每秒超過(guò)設(shè)定的QPS就會(huì)失敗。

(2)線程數(shù):表示一個(gè)時(shí)間段只能有1個(gè)(自己隨便設(shè)定)線程數(shù)訪問(wèn)。

(3)關(guān)聯(lián):當(dāng)關(guān)聯(lián)的資源達(dá)到閾值時(shí),就限流自己。當(dāng)與A關(guān)聯(lián)的資源B達(dá)到閾值時(shí),就限流A自己。B惹事,A掛了。

(4)預(yù)熱:一個(gè)系統(tǒng)最怕平常訪問(wèn)量是0,然后突然一秒鐘那一瞬間訪問(wèn)量是10萬(wàn),這時(shí)候就不太好了,應(yīng)該先預(yù)熱一下。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-653410.html

到了這里,關(guān)于SpringCloud最新最全面試題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 史上最全網(wǎng)絡(luò)安全面試題匯總

    史上最全網(wǎng)絡(luò)安全面試題匯總

    最近有不少小伙伴跑來(lái)咨詢: 想找網(wǎng)絡(luò)安全工作,應(yīng)該要怎么進(jìn)行技術(shù)面試準(zhǔn)備? 工作不到 2 年,想跳槽看下機(jī)會(huì),有沒(méi)有相關(guān)的面試題呢? 為了更好地幫助大家高薪就業(yè),今天就給大家分享一份網(wǎng)絡(luò)安全工程師面試題,希望它們能夠幫助大家在面試中,少走一些彎路、更

    2024年02月07日
    瀏覽(25)
  • 2023版一線大廠Java面試八股文(最新版)1000+ 面試題附答案詳解,最全面詳細(xì)

    2023版一線大廠Java面試八股文(最新版)1000+ 面試題附答案詳解,最全面詳細(xì)

    我的回答是: 很有必要 。你可以討厭這種模式,但你一定要去背,因?yàn)椴槐衬憔瓦M(jìn)不了大廠?,F(xiàn)如今,Java 面試的本質(zhì)就是八股文,把八股文面試題背好,面試才有可能表現(xiàn)好。金九銀十招聘黃金季已經(jīng)來(lái)臨!大家在考研和找工作中糾結(jié)的時(shí)候,不妨先看一下面試題,畢竟我

    2024年02月08日
    瀏覽(33)
  • 網(wǎng)絡(luò)安全面試題大全(整理版)300+面試題附答案詳解,最全面詳細(xì)

    網(wǎng)絡(luò)安全面試題大全(整理版)300+面試題附答案詳解,最全面詳細(xì)

    隨著國(guó)家政策的扶持,網(wǎng)絡(luò)安全行業(yè)也越來(lái)越為大眾所熟知,想要進(jìn)入到網(wǎng)絡(luò)安全行業(yè)的人也越來(lái)越多。 為了拿到心儀的Offer之外,除了學(xué)好網(wǎng)絡(luò)安全知識(shí)以外,還要應(yīng)對(duì)好企業(yè)的面試。 作為一個(gè)安全老鳥(niǎo),工作這么多年,面試過(guò)很多人也出過(guò)很多面試題目,也在網(wǎng)上收集了

    2024年02月08日
    瀏覽(29)
  • 網(wǎng)絡(luò)安全面試題大全(整理版)500+面試題附答案詳解,最全面詳細(xì),看完穩(wěn)了

    網(wǎng)絡(luò)安全面試題大全(整理版)500+面試題附答案詳解,最全面詳細(xì),看完穩(wěn)了

    隨著國(guó)家政策的扶持,網(wǎng)絡(luò)安全行業(yè)也越來(lái)越為大眾所熟知,想要進(jìn)入到網(wǎng)絡(luò)安全行業(yè)的人也越來(lái)越多。 為了拿到心儀的Offer之外,除了學(xué)好網(wǎng)絡(luò)安全知識(shí)以外,還要應(yīng)對(duì)好企業(yè)的面試。 作為一個(gè)安全老鳥(niǎo),工作這么多年,面試過(guò)很多人也出過(guò)很多面試題目,也在網(wǎng)上收集了

    2024年02月09日
    瀏覽(27)
  • Go語(yǔ)言最全面試題,拿offer全靠它,附帶免積分下載pdf

    Go語(yǔ)言最全面試題,拿offer全靠它,附帶免積分下載pdf

    面試題文檔下鏈接點(diǎn)擊這里免積分下載 go語(yǔ)言入門到精通點(diǎn)擊這里免積分下載 new的作用是初始化一個(gè)內(nèi)置類型的指針new函數(shù)是內(nèi)建函數(shù),函數(shù)定義: func new(Type) *Type ?使用new函數(shù)來(lái)分配空間 ?傳遞給new函數(shù)的是一個(gè)類型,而不是一個(gè)值 ?返回值是指向這個(gè)新分配的地址的指

    2024年02月09日
    瀏覽(22)
  • 前端2023最全面試題(javaScript、typeScript、vue2、vue3、html、css、uniapp、webpack、vite、react)

    答案:JavaScript中的閉包是一種函數(shù),它有權(quán)訪問(wèn)其詞法環(huán)境的變量和其它函數(shù)。這意味著,即使其包含它的函數(shù)已經(jīng)執(zhí)行完畢,其詞法環(huán)境仍然存在,因此可以訪問(wèn)其作用域內(nèi)的變量。 答案:回調(diào)函數(shù)是在某個(gè)特定事件之后執(zhí)行的函數(shù)。在JavaScript中,通常使用回調(diào)函數(shù)來(lái)處

    2024年02月06日
    瀏覽(34)
  • 【JaveWeb教程】(26) Mybatis基礎(chǔ)操作(新增、修改、查詢、刪除) 詳細(xì)代碼示例講解(最全面)

    【JaveWeb教程】(26) Mybatis基礎(chǔ)操作(新增、修改、查詢、刪除) 詳細(xì)代碼示例講解(最全面)

    學(xué)習(xí)完mybatis入門后,我們繼續(xù)學(xué)習(xí)mybatis基礎(chǔ)操作。 需求說(shuō)明: 根據(jù)資料中提供的《tlias智能學(xué)習(xí)輔助系統(tǒng)》頁(yè)面原型及需求,完成員工管理的需求開(kāi)發(fā)。 通過(guò)分析以上的頁(yè)面原型和需求,我們確定了功能列表: 查詢 根據(jù)主鍵ID查詢 條件查詢 新增 更新 刪除 根據(jù)主鍵ID刪除

    2024年01月17日
    瀏覽(92)
  • 2023金九銀十Java面試八股文大全1200道面試題附答案詳解,最全面詳細(xì)

    2023金九銀十Java面試八股文大全1200道面試題附答案詳解,最全面詳細(xì)

    我的回答是: 很有必要 。你可以討厭這種模式,但你一定要去背,因?yàn)椴槐衬憔瓦M(jìn)不了大廠?,F(xiàn)如今,Java 面試的本質(zhì)就是八股文,把八股文面試題背好,面試才有可能表現(xiàn)好。金九銀十招聘黃金季已經(jīng)來(lái)臨!大家在考研和找工作中糾結(jié)的時(shí)候,不妨先看一下面試題,畢竟我

    2024年02月13日
    瀏覽(99)
  • ChatGPT百科全書(shū)(全網(wǎng)最全面)

    ChatGPT百科全書(shū)(全網(wǎng)最全面)

    ChatGPT是一款先進(jìn)的自然語(yǔ)言處理(NLP)模型,由OpenAI開(kāi)發(fā)和維護(hù)。它基于OpenAI的第四代生成預(yù)訓(xùn)練Transformer(GPT-4)架構(gòu),旨在通過(guò)深度學(xué)習(xí)技術(shù)理解和生成人類語(yǔ)言。ChatGPT可以與用戶進(jìn)行自然、流暢的交流,為各種場(chǎng)景提供智能問(wèn)答和文本生成能力。 GPT-4架構(gòu)繼承了GPT-3的

    2024年02月05日
    瀏覽(20)
  • JMeter安裝配置及使用說(shuō)明【最全面】

    JMeter安裝配置及使用說(shuō)明【最全面】

    Apache JMeter是Apache組織開(kāi)發(fā)的基于Java的壓力測(cè)試工具,它可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M繁重的負(fù)載來(lái)測(cè)試它們的強(qiáng)度或分析不同壓力類型下的整體性能。 目錄 JMeter安裝配置 下載安裝 JMeter參數(shù)配置 默認(rèn)配置 ?內(nèi)存配置 JMeter運(yùn)行 常用組件介紹 全局設(shè)置 HTTP Cookie管理器

    2024年02月15日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包