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區別?
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