文章目錄
- 1.Spring Cloud 常見的組件有哪些?
- 2.服務注冊和發現是什么意思?(Spring Cloud 如何實現服務注冊發現)
- 3.Nacos配置中心熱加載實現原理及關鍵技術
- 4.OpenFeign在微服務中的遠程服務調用工作流程
- 5.你們項目負載均衡如何實現的 ?
- 6.什么是服務雪崩,怎么解決這個問題?
- 7.你們服務是怎么監控的?
- 8.微服務限流(漏桶算法、令牌桶算法)
- 9.解釋一下CAP和BASE
- 10.你們采用哪種分布式事務解決方案?
- 10.1.seata的XA模式(銀行業務)
- 10.2.AT模式原理(互聯網業務)
- 10.3.TCC模式原理(銀行業務)
- 10.4.MQ分布式事務
- 11.兩階段提交(2PC)與三階段提交(3PC)對比
- 12.分布式服務的接口冪等性如何設計?
- 13.你們項目中使用了什么分布式任務調度
- 15.XXL-Job 處理大數據量并發任務的解決方案及底層原理
- 16.springboot 項目改造成springcloud 項目的過程
1.Spring Cloud 常見的組件有哪些?
Spring Cloud 5大組件有哪些?
- 基礎的內容考察
- 回答原則:簡單的問題不能答錯(一道面試題就能淘汰一個人)新手和老手都要注意
面試參考回答:
面試官:Spring Cloud 5大組件有哪些?
候選人:早期我們一般認為的Spring Cloud五大組件是
- Eureka:注冊中心
- Ribbon:負載均衡
- Feign:遠程調用
- Hystrix:服務熔斷
- Zuul/Gateway:網關
隨著SpringCloudAlibba在國內興起 , 我們項目中使用了一些阿里巴巴的組件
- 注冊中心/配置中心 Nacos
- 負載均衡 Ribbon
- 服務調用 Feign
- 服務保護 sentinel
- 服務網關 Gateway
2.服務注冊和發現是什么意思?(Spring Cloud 如何實現服務注冊發現)
- 微服務中必須要使用的組件,考察我們使用微服務的程度
- 注冊中心的核心作用是:服務注冊和發現
- 常見的注冊中心:eureka、nocas、zookeeper
我做過的哪個微服務項目,使用了哪個注冊中心
Eureka的作用
服務注冊和發現是什么意思?Spring Cloud 如何實現服務注冊發現?
- 我們當時項目采用的eureka作為注冊中心,這個也是spring cloud體系中的一個核心組件
- 服務注冊:服務提供者需要把自己的信息注冊到eureka,由eureka來保存這些信息,比如服務名稱、ip、端口等等
- 服務發現:消費者向eureka拉取服務列表信息,如果服務提供者有集群,則消費者會利用負載均衡算法,選擇一個發起調用
- 服務監控:服務提供者會每隔30秒向eureka發送心跳,報告健康狀態,如果eureka服務90秒沒接收到心跳,從eureka中剔除
我看你之前也用過nacos、你能說下nacos與eureka的區別?
- 簡歷上有體現
- 面試官比較熟悉nacos和eureka
我看你之前也用過nacos、你能說下nacos與eureka的區別?
-
Nacos與eureka的共同點(注冊中心)
- 都支持服務注冊和服務拉取
- 都支持服務提供者心跳方式做健康檢測
-
Nacos與Eureka的區別(注冊中心)
- Nacos支持服務端主動檢測提供者狀態:臨時實例采用心跳模式,非臨時實例采用主動檢測模式
- 臨時實例心跳不正常會被剔除,非臨時實例則不會被剔除
- Nacos支持服務列表變更的消息推送模式,服務列表更新更及時
- Nacos集群默認采用AP(高可用)方式,當集群中存在非臨時實例時,采用CP(強一致)模式;Eureka采用AP方式
-
Nacos還支持了配置中心,eureka則只有注冊中心,也是選擇使用nacos的一個重要原因
3.Nacos配置中心熱加載實現原理及關鍵技術
Nacos配置中心熱加載實現原理及關鍵技術
4.OpenFeign在微服務中的遠程服務調用工作流程
OpenFeign在微服務中的遠程服務調用工作流程
5.你們項目負載均衡如何實現的 ?
- 負載均衡 Ribbon,發起遠程調用feign就會使用Ribbon
- Ribbon負載均衡策略有哪些 ?
- 如果想自定義負載均衡策略如何實現 ?
Ribbon負載均衡流程
- RoundRobinRule:簡單輪詢服務列表來選擇服務器
- WeightedResponseTimeRule:按照權重來選擇服務器,響應時間越長,權重越小,被選擇概率較低
- RandomRule:隨機選擇一個可用的服務器
- BestAvailableRule:忽略那些短路的服務器,并選擇并發數較低的服務器(最小連接數)
- RetryRule:重試機制的選擇邏輯(按照輪詢方式進行選擇,如果出現宕機,會在指定時間內重試)
- AvailabilityFilteringRule:可用性敏感策略,先過濾非健康的,再選擇連接數較小的實例
- ZoneAvoidanceRule:以區域可用的服務器為基礎進行服務器的選擇。使用Zone對服務器進行分類,這個Zone可以理解為一個機房、一個機架等。而后再對Zone內的多個服務做輪詢(默認,區域就近)
如果想自定義負載均衡策略如何實現 ?
可以自己創建類實現IRule接口 , 然后再通過配置類或者配置文件配置即可 ,通過定義IRule實現可以修改負載均衡規則,有兩種方式:
你們項目負載均衡如何實現的 ?
微服務的負載均衡主要使用了一個組件Ribbon,比如,我們在使用feign遠程調用的過程中,底層的負載均衡就是使用了ribbon
Ribbon負載均衡策略有哪些 ?
- RoundRobinRule:簡單輪詢服務列表來選擇服務器
- WeightedResponseTimeRule:按照權重來選擇服務器,響應時間越長,權重越小
- RandomRule:隨機選擇一個可用的服務器
- ZoneAvoidanceRule:區域敏感策略,以區域可用的服務器為基礎進行服務器的選擇。使用Zone對服務器進行分類,這個Zone可以理解為一個機房、一個機架等。而后再對Zone內的多個服務做輪詢(默認)
如果想自定義負載均衡策略如何實現 ?
提供了兩種方式:
- 創建類實現IRule接口,可以指定負載均衡策略(全局)
- 在客戶端的配置文件中,可以配置某一個服務調用的負載均衡策略(局部)
6.什么是服務雪崩,怎么解決這個問題?
- 什么是服務雪崩?
- 熔斷降級(通過Hystix 服務熔斷降級來解決 )
- 限流(預防)
服務降級
服務降級是服務自我保護的一種方式,或者保護下游服務的一種方式,用于確保服務不會受請求突增影響變得不可用,確保服務不會崩潰
服務熔斷
Hystrix 熔斷機制,用于監控微服務調用情況,?默認是關閉的,如果需要開啟需要在引導類上添