剛去面試Spring Cloud 問了我35個問題,所有分享出來!

對於目前來講,微服務已是程序員必會的技能之一了。Spring Cloud 做爲一個優質的微服務框架,已經被不少公司使用。如下小編給你們整理35道Spring Cloud 的知識點,或者說是面試題都不衝突。後續還會繼續更新⛽️

1.什麼是SpringCloud?

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

2.什麼是微服務?

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

一、各司其職 。算法

二、服務高可用和可擴展性。spring

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

參考:
文章持續更新中,⛽️。另外 博主整理 + 原創 15萬字面試題,包括17個專題。歡迎你們關注「Java小咖秀」回覆「面試」便可得到Java小咖秀面試筆記.pdf
相關文章
相關標籤/搜索