1. 程式人生 > 其它 >Spring Cloud面試題(2020最新版)

Spring Cloud面試題(2020最新版)

Spring Cloud面試題(2020最新版)

Spring Cloud Config

集中配置管理工具,分散式系統中統一的外部配置管理,預設使用Git來儲存配置,可以支援客戶端配置的重新整理及加密、解密操作。
Spring Cloud Netflix
Netflix OSS 開源元件整合,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心元件。
Eureka:服務治理元件,包括服務端的註冊中心和客戶端的服務發現機制;
Ribbon:負載均衡的服務呼叫元件,具有多種負載均衡呼叫策略;
Hystrix:服務容錯元件,實現了斷路器模式,為依賴服務的出錯和延遲提供了容錯能力;
Feign:基於Ribbon和Hystrix的宣告式服務呼叫元件;
Zuul:API閘道器元件,對請求提供路由及過濾功能。

Spring Cloud Bus

用於傳播叢集狀態變化的訊息匯流排,使用輕量級訊息代理連結分散式系統中的節點,可以用來動態重新整理叢集中的服務配置。

Spring Cloud Security

安全工具包,對Zuul代理中的負載均衡OAuth2客戶端及登入認證進行支援。

Spring Cloud Consul

基於Hashicorp Consul的服務治理元件。

Spring Cloud Sleuth

Spring Cloud應用程式的分散式請求鏈路跟蹤,支援使用Zipkin、HTrace和基於日誌(例如ELK)的跟蹤。

Spring Cloud Task

用於快速構建短暫、有限資料處理任務的微服務框架,用於嚮應用中新增功能性和非功能性的特性。

Spring Cloud Zookeeper

基於Apache Zookeeper的服務治理元件。

Spring Cloud Gateway

API閘道器元件,對請求提供路由及過濾功能。

Spring Cloud OpenFeign

基於Ribbon和Hystrix的宣告式服務呼叫元件,可以動態建立基於Spring MVC註解的介面實現用於服務呼叫,在Spring Cloud 2.0中已經取代Feign成為了一等公民。

SpringBoot和SpringCloud的區別?

SpringBoot專注於快速方便的開發單個個體微服務。
SpringCloud是關注全域性的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,

為各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件匯流排、全域性鎖、決策競選、分散式會話等等整合服務
SpringBoot可以離開SpringCloud獨立使用開發專案, 但是SpringCloud離不開SpringBoot ,屬於依賴的關係
SpringBoot專注於快速、方便的開發單個微服務個體,SpringCloud關注全域性的服務治理框架。
 

使用 Spring Boot 開發分散式微服務時,我們面臨以下問題

(1)與分散式系統相關的複雜性-這種開銷包括網路問題,延遲開銷,頻寬問題,安全問題。
(2)服務發現-服務發現工具管理群集中的流程和服務如何查詢和互相交談。它涉及一個服務目錄,在該目錄中註冊服務,然後能夠查詢並連線到該目錄中的服務。
(3)冗餘-分散式系統中的冗餘問題。
(4)負載平衡 --負載平衡改善跨多個計算資源的工作負荷,諸如計算機,計算機叢集,網路鏈路,中央處理單元,或磁碟驅動器的分佈。
(5)效能-問題 由於各種運營開銷導致的效能問題。
(6)部署複雜性-Devops 技能的要求。

服務註冊和發現是什麼意思?Spring Cloud 如何實現?

當我們開始一個專案時,我們通常在屬性檔案中進行所有的配置。隨著越來越多的服務開發和部署,新增和修改這些屬性變得更加複雜。有些服務可能會下降,而某些位置可能會發生變化。手動更改屬性可能會產生問題。 Eureka 服務註冊和發現可以在這種情況下提供幫助。由於所有服務都在 Eureka 伺服器上註冊並通過呼叫 Eureka 伺服器完成查詢,因此無需處理服務地點的任何更改和處理。

Spring Cloud 和dubbo區別?

(1)服務呼叫方式 dubbo是RPC springcloud Rest Api
(2)註冊中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper
(3)服務閘道器,dubbo本身沒有實現,只能通過其他第三方技術整合,springcloud有Zuul路由閘道器,作為路由伺服器,進行消費者的請求分發,springcloud支援斷路器,與git完美整合配置檔案支援版本控制,事物匯流排實現配置檔案的更新與服務自動裝配等等一系列的微服務架構要素。

負載平衡的意義什麼?

在計算中,負載平衡可以改善跨計算機,計算機叢集,網路連結,中央處理單元或磁碟驅動器等多種計算資源的工作負載分佈。負載平衡旨在優化資源使用,最大化吞吐量,最小化響應時間並避免任何單一資源的過載。使用多個元件進行負載平衡而不是單個元件可能會通過冗餘來提高可靠性和可用性。負載平衡通常涉及專用軟體或硬體,例如多層交換機或域名系統伺服器程序。

什麼是 Hystrix?它如何實現容錯?

Hystrix 是一個延遲和容錯庫,旨在隔離遠端系統,服務和第三方庫的訪問點,當出現故障是不可避免的故障時,停止級聯故障並在複雜的分散式系統中實現彈性。
通常對於使用微服務架構開發的系統,涉及到許多微服務。這些微服務彼此協作。

什麼是 Hystrix 斷路器?我們需要它嗎?

由於某些原因,employee-consumer 公開服務會引發異常。在這種情況下使用Hystrix 我們定義了一個回退方法。如果在公開服務中發生異常,則回退方法返回一些預設值。
如果 firstPage method() 中的異常繼續發生,則 Hystrix 電路將中斷,並且員工使用者將一起跳過 firtsPage 方法,並直接呼叫回退方法。 斷路器的目的是給第一頁方法或第一頁方法可能呼叫的其他方法留出時間,並導致異常恢復。可能發生的情況是,在負載較小的情況下,導致異常的問題有更好的恢復機會 。

什麼是 Netflix Feign?它的優點是什麼?

Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 啟發的 java 客戶端聯程式設計序。
Feign 的第一個目標是將約束分母的複雜性統一到 http apis,而不考慮其穩定性。
在 employee-consumer 的例子中,我們使用了 employee-producer 使用 REST模板公開的 REST 服務。
但是我們必須編寫大量程式碼才能執行以下步驟
(1)使用功能區進行負載平衡。
(2)獲取服務例項,然後獲取基本 URL。
(3)利用 REST 模板來使用服務。

Spring Cloud斷路器的作用

當一個服務呼叫另一個服務由於網路原因或自身原因出現問題,呼叫者就會等待被呼叫者的響應 當更多的服務請求到這些資源導致更多的請求等待,發生連鎖效應(雪崩效應)
斷路器有完全開啟狀態:一段時間內 達到一定的次數無法呼叫 並且多次監測沒有恢復的跡象 斷路器完全開啟 那麼下次請求就不會請求到該服務
半開:短時間內 有恢復跡象 斷路器會將部分請求發給該服務,正常呼叫時 斷路器關閉
關閉:當服務一直處於正常狀態 能正常呼叫

什麼是Spring Cloud Config?

在分散式系統中,由於服務數量巨多,為了方便服務配置檔案統一管理,實時更新,所以需要分散式配置中心元件。在Spring Cloud中,有分散式配置中心元件spring cloud config ,它支援配置服務放在配置服務的記憶體中(即本地),也支援放在遠端Git倉庫中。在spring cloud config 元件中,分兩個角色,一是config server,二是config client。
使用:
(1)新增pom依賴
(2)配置檔案新增相關配置
(3)啟動類添加註解@EnableConfigServer

什麼是Spring Cloud Gateway?

Spring Cloud Gateway是Spring Cloud官方推出的第二代閘道器框架,取代Zuul閘道器。閘道器作為流量的,在微服務系統中有著非常作用,閘道器常見的功能有路由轉發、許可權校驗、限流控制等作用。
使用了一個RouteLocatorBuilder的bean去建立路由,除了建立路由RouteLocatorBuilder可以讓你新增各種predicates和filters,predicates斷言的意思,顧名思義就是根據具體的請求的規則,由具體的route去處理,filters是各種過濾器,用來對請求做各種判斷和修改。