Spring Cloud相關筆記以及面試題

2021-10-25 18:27:23 字數 3335 閱讀 8179

1. 什麼是 spring cloud?

spring cloud 是一系列框架的有序集合。它利用 spring boot 的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用 spring boot 的開發風格做到一鍵啟動和部署。

2. spring cloud 斷路器的作用是什麼?

當某個服務發生故障的時候,通過斷路器的故障監控,向呼叫方返回乙個錯誤響應,而不是長時間的等待,保證整個程式可以繼續服務。

3. spring cloud 的核心元件有哪些?

eureka:服務註冊於發現。

ribbon:實現負載均衡,從乙個服務的多台機器中選擇一台。

hystrix:提供執行緒池,不同的服務走不同的執行緒池,實現了不同服務呼叫的隔離,避免了服務雪崩的問題。

zuul:閘道器管理,由 zuul 閘道器**請求給對應的服務。

4. springcloud和dubbo

服務的呼叫方式dubbo使用的是rpc遠端呼叫,而springcloud使用的是 rest api,其實更符合微服務官方的定義

5. 你所知道的微服務技術棧?

維度(springcloud)

服務開發:springboot spring springmvc

服務配置與管理:netfix公司的archaiusm ,阿里的diamond

服務註冊與發現:eureka,zookeeper

服務呼叫:rest rpc grpc

服務熔斷器:hystrix

服務負載均衡:ribbon nginx

服務介面呼叫:fegin

訊息佇列:kafka rabbitmq activemq

服務配置中心管理:springcloudconfig

服務路由(api閘道器)zuul

事件訊息匯流排:springcloud bus

13. eureka自我保護機制是什麼?

當eureka server 節點在短時間內丟失了過多例項的連線時(比如網路故障或頻繁啟動關閉客戶端)節點會進入自我保護模式,保護註冊資訊,不再刪除註冊資料,故障恢復時,自動退出自我保護模式。

14. 什麼是ribbon?

ribbon是乙個負載均衡客戶端,可以很好的控制htt和tcp的一些行為。feign預設整合了ribbon。

15. 什麼是feigin?它的優點是什麼?

1.feign採用的是基於介面的註解

2.feign整合了ribbon,具有負載均衡的能力

3.整合了hystrix,具有熔斷的能力

使用:1.新增pom依賴。

2.啟動類新增@enablefeignclients

3.定義乙個介面@feignclient(name=「***」)指定呼叫哪個服務

ribbon和feign的區別?

1.ribbon都是呼叫其他服務的,但方式不同。

2.啟動類註解不同,ribbon是@ribbonclient feign的是@enablefeignclients

3.服務指定的位置不同,ribbon是在@ribbonclient註解上宣告,feign則是在定義抽象方法的介面中使用@feignclient宣告。

4.呼叫方式不同,ribbon需要自己構建http請求,模擬http請求然後使用resttemplate傳送給其他服務,步驟相當繁瑣。feign需要將呼叫的方法定義成抽象方法即可。

什麼是spring cloud bus?

spring cloud bus 將分布式的節點用輕量的訊息**連線起來,它可以用於廣播配置檔案的更改或者服務直接的通訊,也可用於監控。

如果修改了配置檔案,傳送一次請求,所有的客戶端便會重新讀取配置檔案。

使用:1.新增依賴

2.配置rabbimq

ribbon:

它的作用是負載均衡,ribbon的負載均衡預設使用的最經典的round robin輪詢演算法。就是如果發起10次請求,那就先讓你請求第1臺機器、然後是第2臺機器、。。。以此類推。

feign:

feign客戶端是乙個web宣告式http遠端呼叫工具,提供了介面和註解方式進行呼叫(用來呼叫其他服務)

feign的乙個關鍵機制就是使用了動態**。

首先,如果你對某個介面定義了@feignclient註解,feign就會針對這個介面建立乙個動態**

接著你要是呼叫那個介面,本質就是會呼叫 feign建立的動態**,這是核心中的核心

最後針對這個位址,發起請求、解析響應

例:訂單服務在乙個業務流程裡需要呼叫三個服務。積分服務不幸的掛了,每次訂單服務呼叫積分服務的時候,都會卡住幾秒鐘,然後丟擲—個超時異常。

hystrix是隔離、熔斷以及降級的乙個框架。啥意思呢?說白了,hystrix會搞很多個小小的執行緒池,比如訂單服務請求庫存服務是乙個執行緒池,請求倉儲服務是乙個執行緒池,請求積分服務是乙個執行緒池。每個執行緒池裡的執行緒就僅僅用於請求那個服務。

打個比方:現在很不幸,積分服務掛了,會咋樣?

這個時候如果別人請求訂單服務,訂單服務還是可以正常呼叫庫存服務扣減庫存,呼叫倉儲服務通知發貨。只不過呼叫積分服務的時候,每次都會報錯。但是如果積分服務都掛了,每次呼叫都要去卡住幾秒鐘幹啥呢?有意義嗎?當然沒有!所以我們直接對積分服務熔斷不就得了,比如在5分鐘內請求積分服務直接就返回了,不要去走網路請求卡住幾秒鐘,這個過程,就是所謂的隔離熔斷!那人家又說,兄弟,積分服務掛了你就熔斷,好歹你幹點兒什麼啊!別啥都不幹就直接返回啊?沒問題,咱們就來個降級:每次呼叫積分服務,你就在資料庫裡記錄一條訊息,說給某某使用者增加了多少積分,因為積分服務掛了,導致沒增加成功!這樣等積分服務恢復了,你可以根據這些記錄手工加一下積分。這個過程,就是所謂的降級。

呼叫方會針對被呼叫微服務設定呼叫超時時間,一旦超時就會進入熔斷邏輯,而這個故障指標資訊也會返回給hystrix元件,hystrix元件會根據熔斷情況判斷被調微服務的故障情況從而開啟熔斷器,之後所有針對該微服務的請求就會直接進入熔斷邏輯,直到被調微服務故障恢復,hystrix斷路器關閉為止。

SpringCloud配置相關筆記

意義 其他專案就不需要配公用的config配置檔案,本質上來說也是一種抽取,解耦的一種思想 spring 啟用的配置檔案 profiles類是配置檔案的轉換 profiles active dev name organization 這裡配置的就是serviceconfig cloud config...

SpringCloud相關學習

錯過了這一篇,你可能再也學不會 spring cloud 了!spring boot做為下一代 web 框架,spring cloud 作為最新最火的微服務的翹楚,你還有什麼理由拒絕。趕快上船吧,老船長帶你飛。終章不是最後一篇,它是乙個彙總,未來還會寫很多篇。案例全部採用spring boot 1....

SpringCloud相關問題

問題1 myservice子模組中pom檔案在引入了 com.alibaba.cloud spring cloud starter alibaba nacos discovery 之後就一直報錯?答 com.alibaba.cloud 錯誤 org.springframework.cloud 正確 ...