對於目前來講,微服務已是程序員必會的技能之一了。Spring Cloud 做爲一個優質的微服務框架,已經被不少公司使用。如下小編給你們整理35道Spring Cloud 的知識點,或者說是面試題都不衝突。後續還會繼續更新⛽️
Spring Cloud爲開發人員提供了工具,以快速構建分佈式系統中的一些常見模式(例如,配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉,分佈式會話,羣集狀態)。它們能夠在任何分佈式環境中正常工做,包括開發人員本身的筆記本電腦,裸機數據中心以及Cloud Foundry等託管平臺。程序員
所謂的微服務是SOA架構下的最終產物,該架構的設計目標是爲了肢解業務,使得服務可以獨立運行。微服務設計原則:面試
一、各司其職 。算法
二、服務高可用和可擴展性。spring
Spring Cloud專一於爲典型的用例和可擴展性機制(包括其餘用例)提供良好的開箱即用體驗。後端
Eureka : 註冊中心安全
Ribbon :客服端負載均衡服務器
Hystrix : 服務容錯處理網絡
Feign: 聲明式REST客戶端架構
Zuul : 服務網關併發
Config : 分佈式配置
HTTP
雲端服務發現,一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。
服務註冊中心:提供服務註冊與發現的能力。
服務提供者:提供服務的應用,會把本身提供的服務註冊到註冊中心。
服務消費者:服務的消費者,從註冊中心獲取服務列表。
在註冊完服務之後,服務提供者會維護一個心跳來向註冊中心證實本身還活着,以此防止被「剔除服務」。
當服務實例進行正常關閉時,會發送一個REST請求(我要下線了)給註冊中心,收到請求後,將該服務狀態設置下線(DOWN),並把這事件傳播出去。
當服務非正常下線時,可能服務註冊中心沒有收到下線請求,註冊中心會建立一個定時任務(默認60s)將沒有在固定時間(默認90s)內續約的服務剔除掉。
在運行期間,註冊中心會統計心跳失敗比例在15分鐘以內是否低於85%,若是低於的狀況,註冊中心會將當前註冊實例信息保護起來,再也不刪除這些實例信息,當網絡恢復後,退出自我保護機制。
自我保護機制讓服務集羣更穩定、健壯。
提供雲端負載均衡,有多種負載均衡策略可供選擇,可配合服務發現和斷路器使用。
@LoadBalanced
RandomRule : 隨機。
RoundRobinRule : 輪詢。
RetryRule : 重試。
WeightedResponseTimeRule : 權重。
ClientConfigEnabledRoundRobinRule : 通常不用,經過繼承該策略,默認的choose就實現了線性輪詢機制。能夠基於它來作擴展。
BestAvailableRule : 經過便利負載均衡器中維護的全部服務實例,會過濾到故障的,並選擇併發請求最小的一個。
PredicateBasedRule : 先過濾清單,再輪詢。
AvailabilityFilteringRule :繼承了父類的先過濾清單,再輪詢。調整了算法。
ZoneAvoidanceRule : 該類也是PredicateBasedRule的子類,它能夠組合過濾條件。以ZoneAvoidancePredicate爲主過濾條件,以AvailabilityPredicate爲次過濾條件。
服務熔斷的做用相似於咱們家用的保險絲,當某服務出現不可用或響應超時的狀況時,爲了防止整個系統出現雪崩,暫時中止對該服務的調用。
服務降級是當服務器壓力劇增的狀況下,根據當前業務狀況及流量對一些服務和頁面有策略的降級,以此釋放服務器資源以保證核心任務的正常運行。
熔斷器,容錯管理工具,旨在經過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。
HystrixCommand 或者 HystrixObservableCommand對象中。
@EnableHystrix
Feign是一種聲明式、模板化的HTTP客戶端。
1.feign採用的是基於接口的註解。
2.feign整合了ribbon,具備負載均衡的能力。
3.整合了Hystrix,具備熔斷的能力。
配置管理工具包,讓你能夠把配置放到遠程服務器,集中化管理集羣配置,目前支持本地存儲、Git以及Subversion。
Config Server : 配置中心服務端。
Config Client : 配置中心客戶端。
Zuul 是在雲平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架。Zuul 至關因而設備和 Netflix 流應用的 Web 網站後端全部請求的前門。
過濾器。
4種。
pre : 能夠在請求被路由以前調用。
適用於身份認證的場景,認證經過後再繼續執行下面的流程。
route : 在路由請求時被調用。
適用於灰度發佈場景,在將要路由的時候能夠作一些自定義的邏輯。
post :在 route 和 error 過濾器以後被調用。
這種過濾器將請求路由到達具體的服務以後執行。適用於須要添加響應頭,記錄響應日誌等應用場景。
error : 處理請求時發生錯誤時被調用。
在執行過程當中發送錯誤時會進入 error 過濾器,能夠用來統一記錄錯誤信息。
日誌收集工具包,封裝了Dapper和log-based追蹤以及Zipkin和HTrace操做,爲SpringCloud應用實現了一種分佈式追蹤解決方案。
事件、消息總線,用於在集羣(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。
A:高可用 C:一致性,P:分區容錯性
Zookeeper保證了CP,Eureka保證了AP。
Eureka能夠很好的應對因網絡故障致使部分節點失去聯繫的狀況,而不會像Zookeeper那樣使整個微服務癱瘓。
數據流操做開發包,封裝了與Redis,Rabbit、Kafka等發送接收消息。
Dubbo Motan Tars gRPC Thrift
文章持續更新中,⛽️。另外 博主整理 + 原創 15萬字面試題,包括17個專題。歡迎你們關注「Java小咖秀」回覆「面試」便可得到Java小咖秀面試筆記.pdf