RestTemplate :是一個訪問Restful風格的第三方服務的 網絡請求框架
使用 : 1.使用配置類配置一個RestTemplate的bean
2.在要使用的服務中自動注入
Nacos:一個微服務的服務注冊中心(nacos關閉后服務的鏈接不會失效)
Ribbon:一個springcloud組件,用來實現服務調用的負載均衡
使用:在restTemplate 的bean上加上@LoadTemplate注解就能使用默認的均衡算法 來均衡
ribbon還提供了重試機制
幾個參數:建立連接的超時時間(connectTimeout),處理請求的超時時間,同一實例的最大重試次數,所有其他實例(不包括第一次鏈接)的最大重試次數
OpenFeign: 一個偽http客戶端,集成了 ribbon和resttemplate
feign 中ribbon的關鍵屬性
OkToRetryOnAllOperations
:true //所有請求都會重試 (不安全,可能會想數據庫插入兩個相同記錄)
:false //只有get類型,也就是查詢才會出發重試機制(推薦)
feign參數傳遞:
get:服務調用方接口中的feign方法 傳遞對象的參數 前面要加@SpringQueryMap注解
post:服務提供方 的controller中參數要加 @RequestBody
服務雪崩:下游的服務不可用導致上游的不可用
解決方案:隔離 超時 限流 熔斷 降級
sentinel : 一套服務容錯的綜合性解決方案
sentinel配置限流 qps ,該controller 1秒鍾內可以被訪問的次數
sentinel配置熔斷降級(以后請求不再執行) RT 和時間窗口 該controller執行平均時間不能超過 如(RT) 100ms ,否則在 30s(時間窗口)內不再處理請求,
而是拋出異常,30s后恢復
限流,降級等會導致被保護的controller拋出FlowException ,DegradeException等異常
這類異常無法被普通的異常切面捕獲到,需要一個實現UrlBlockHandler的類來處理該類型異常