Spring Cloud 面試必知必會35個問,你能答上幾個?

1.什麼是SpringCloud?

Spring Cloud爲開發人員提供了工具,以快速構建分佈式系統中的一些常見模式(例如,配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉,分佈式會話,羣集狀態)。它們可以在任何分佈式環境中正常工作,包括開發人員自己的筆記本電腦,裸機數據中心以及Cloud Foundry等託管平臺。

2.什麼是微服務?

所謂的微服務是SOA架構下的最終產物,該架構的設計目標是爲了肢解業務,使得服務能夠獨立運行。微服務設計原則:

1、各司其職 。

2、服務高可用和可擴展性。

3.SpringCloud有哪些特徵?

Spring Cloud專注於爲典型的用例和可擴展性機制(包括其他用例)提供良好的開箱即用體驗。

  • 分佈式/版本化配置
  • 服務註冊和發現
  • 路由
  • 服務到服務的調用
  • 負載均衡
  • 斷路器
  • 全局鎖
  • 領導選舉和集羣狀態
  • 分佈式消息傳遞

4.SpringCloud核心組件?

Eureka : 註冊中心

Ribbon :客服端負載均衡

Hystrix : 服務容錯處理

Feign: 聲明式REST客戶端

Zuul : 服務網關

Config : 分佈式配置

5.SpringCloud基於什麼協議?

HTTP

6.SpringCloud和Dubbo區別?

image-20200429230443620

7.Eureka是什麼?

雲端服務發現,一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。

8.服務治理的基礎角色?

服務註冊中心:提供服務註冊與發現的能力。

服務提供者:提供服務的應用,會把自己提供的服務註冊到註冊中心。

服務消費者:服務的消費者,從註冊中心獲取服務列表。

9.什麼是服務續約?

在註冊完服務以後,服務提供者會維護一個心跳來向註冊中心證明自己還活着,以此防止被“剔除服務”。

10.什麼是服務下線?

當服務實例進行正常關閉時,會發送一個REST請求(我要下線了)給註冊中心,收到請求後,將該服務狀態設置下線(DOWN),並把這事件傳播出去。

11.什麼是失效剔除?

當服務非正常下線時,可能服務註冊中心沒有收到下線請求,註冊中心會創建一個定時任務(默認60s)將沒有在固定時間(默認90s)內續約的服務剔除掉。

12.什麼是自我保護機制?

在運行期間,註冊中心會統計心跳失敗比例在15分鐘之內是否低於85%,如果低於的情況,註冊中心會將當前註冊實例信息保護起來,不再刪除這些實例信息,當網絡恢復後,退出自我保護機制。

自我保護機制讓服務集羣更穩定、健壯。

13.Ribbon是什麼?

提供雲端負載均衡,有多種負載均衡策略可供選擇,可配合服務發現和斷路器使用。

14.Ribbon負載均衡的註解是?

@LoadBalanced

15.Ribbon負載均衡策略有哪些?

RandomRule : 隨機。

RoundRobinRule : 輪詢。

RetryRule : 重試。

WeightedResponseTimeRule : 權重。

ClientConfigEnabledRoundRobinRule : 一般不用,通過繼承該策略,默認的choose就實現了線性輪詢機制。可以基於它來做擴展。

BestAvailableRule : 通過便利負載均衡器中維護的所有服務實例,會過濾到故障的,並選擇併發請求最小的一個。

PredicateBasedRule : 先過濾清單,再輪詢。

AvailabilityFilteringRule :繼承了父類的先過濾清單,再輪詢。調整了算法。

ZoneAvoidanceRule : 該類也是PredicateBasedRule的子類,它可以組合過濾條件。以ZoneAvoidancePredicate爲主過濾條件,以AvailabilityPredicate爲次過濾條件。

16.什麼是服務熔斷?

服務熔斷的作用類似於我們家用的保險絲,當某服務出現不可用或響應超時的情況時,爲了防止整個系統出現雪崩,暫時停止對該服務的調用。

17.什麼是服務降級?

服務降級是當服務器壓力劇增的情況下,根據當前業務情況及流量對一些服務和頁面有策略的降級,以此釋放服務器資源以保證核心任務的正常運行。

18.什麼是Hystrix?

熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。

19.斷路器Hystrix的有哪些功能?

  • 通過第三方客戶端訪問依賴服務出現高延遲或者失敗時,爲系統提供保護和控制 。
  • 在複雜的分佈式系統中防止級聯失敗(服務雪崩效應) 。
  • 快速失敗 (Failfast) 同時能快速恢復。
  • 提供失敗回滾 (Fallback) 和優雅的服務降級機制。
  • 提供近實時的監控、 報警和運維控制手段。

20.Hystrix將遠程調用封裝到?

HystrixCommand 或者 HystrixObservableCommand對象中。

21.啓動熔斷降級服務的註解?

@EnableHystrix

22.什麼是Feign?

Feign是一種聲明式、模板化的HTTP客戶端。

23.Feign優點?

1.feign採用的是基於接口的註解。
2.feign整合了ribbon,具有負載均衡的能力。
3.整合了Hystrix,具有熔斷的能力。

24.什麼是Config?

配置管理工具包,讓你可以把配置放到遠程服務器,集中化管理集羣配置,目前支持本地存儲、Git以及Subversion。

25.Config組件中的兩個角色?

Config Server : 配置中心服務端。

Config Client : 配置中心客戶端。

26.什麼是Zuul?

Zuul 是在雲平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架。Zuul 相當於是設備和 Netflix 流應用的 Web 網站後端所有請求的前門。

27.使用Zuul的優點?

  • 方便監控。可以在微服務網管手機監控數據並將其推送到外部系統進行分析。
  • 方便認證。可在網關進行統一認證,然後在講請求轉發到後端服務。
  • 隱藏架構實現細節,提供統一的入口給客戶端請求,減少了客戶端和每個微服務的交互次數。
  • 可以統一處理切面任務,避免每個微服務自己開發,提升效率。
  • 高可用高伸縮性的服務,避免單點失效。

28.Zuul的核心是?

過濾器。

29.Zuul有幾種過濾器類型?分別是?

4種。

pre : 可以在請求被路由之前調用。

適用於身份認證的場景,認證通過後再繼續執行下面的流程。

route : 在路由請求時被調用。

適用於灰度發佈場景,在將要路由的時候可以做一些自定義的邏輯。

post :在 route 和 error 過濾器之後被調用。

這種過濾器將請求路由到達具體的服務之後執行。適用於需要添加響應頭,記錄響應日誌等應用場景。

error : 處理請求時發生錯誤時被調用。

在執行過程中發送錯誤時會進入 error 過濾器,可以用來統一記錄錯誤信息。

30.什麼是Sleuth?

日誌收集工具包,封裝了Dapper和log-based追蹤以及Zipkin和HTrace操作,爲SpringCloud應用實現了一種分佈式追蹤解決方案。

31.Sleuth幫助我們做了哪些工作?

  • 可以方便的瞭解到每個採樣的請求耗時,分析出哪些服務調用比較耗時。
  • 對於程序未捕捉的異常,可以在集成Zipkin服務頁面上看到。
  • 識別調用比較頻繁的服務,從而進行優化。

32.什麼是Bus?

事件、消息總線,用於在集羣(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。

33.eureka比zookeeper的優勢在?

A:高可用 C:一致性,P:分區容錯性

Zookeeper保證了CP,Eureka保證了AP。

Eureka可以很好的應對因網絡故障導致部分節點失去聯繫的情況,而不會像Zookeeper那樣使整個微服務癱瘓。

34.什麼是Stream?

數據流操作開發包,封裝了與Redis,Rabbit、Kafka等發送接收消息。

35.你還知道哪些微服務框架?

Dubbo Motan Tars gRPC Thrift

參考:

  • 《Spring Cloud微服務實戰》

  • 《Spring Cloud微服務全棧技術與案例解析》

  • 《Spring Cloud微服務架構開發實戰》

  • ​ https://spring.io/projects/spring-cloud

  • ​ https://www.springcloud.cc/

  • ​ 百度百科

文章持續更新中,⛽️。另外 博主整理 + 原創 15萬字面試題,包括17個專題。歡迎大家關注“Java小咖秀”回覆“面試”即可獲得Java小咖秀面試筆記.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章