微服務Hystrix配置筆記

2021-09-28 17:22:53 字數 2666 閱讀 4567

hystix是netflix開源的乙個延遲和容錯庫,用於隔離訪問遠端服務、第三方庫,防止出現級聯失敗。

手段:執行緒隔離,服務降級

通過  fallback method配置

配置步驟:

服務呼叫方引入hystix依賴:

org.springframework.cloud

spring-cloud-starter-netflix-hystrix

程式入口開啟註解

基於測試的話,因為涉及到服務的訪問時間來和熔斷設定的時間做比較,所以給呼叫方來個訪問耗時記錄!

宣告乙個失敗時的回滾處理函式

注意的坑:

fallback方法返回值型別,引數型別必須一致
hystrixcosumerdao
/**

* @date 2019/10/16 23:46

* by mocar

* hystrix 宣告乙個失敗時的回滾處理函式

*/@component

public class hystrixcosumerdao

long end = system.currenttimemillis();

logger.info("finduserbyids訪問時長:{}",end-begin);

return userlist;

}//回滾函式和設定回滾的 方法返回值型別,引數型別 必須一致

public listfinduserbyidsfallbackmethod(listidlist)

}

服務呼叫方yml檔案資訊配置:包含了負載均衡重試機制超時時間設定和熔斷時間設定預設是1000毫秒,就會執行fallback函式即熔斷機制觸發,返回錯誤提示。

server:

port: 8092

spring:

name: consumer-service

cloud:

loadbalancer:

retry:

enabled: true # 開啟spring cloud的重試功能

eureka:

client:

service-url: # eurekaserver位址,註冊中心位址

#defaultzone: #mapdefaultzone:

#消費者拉取服務清單設定

fetch-registry: true #消費者啟動,從eureka server服務的列表唯讀備份,然後快取在本地

registry-fetch-interval-seconds: 5 #預設每隔30秒會重新獲取並更新資料 interval 時間間隔

instance:

prefer-ip-address: true # 當其它服務獲取位址時提供ip而不是hostname

ip-address: 127.0.0.1 # 指定自己的ip資訊,不指定的話會自己尋找

#負載均衡策略配置,

user-service:

ribbon:

nfloadbalancerruleclassname: com.netflix.loadbalancer.randomrule

connecttimeout: 250 # ribbon的連線超時時間

readtimeout: 1000 # ribbon的資料讀取超時時間

oktoretryonalloperations: true # 是否對所有操作都進行重試

maxautoretriesnextserver: 1 # 切換例項的重試次數

maxautoretries: 1 # 對當前例項的重試次數

#熔斷hystrix:

command:

default:

execution:

isolation:

thread:

timeoutinmillisecond: 1500 # 設定hystrix的超時時間為1500ms

改造服務提供者,隨機休眠一段時間,來觸發熔斷

public user querybyid(@pathvariable(name = "id") integer id) throws exception

測試:觸發熔斷機制:

log日誌:

只有乙個不觸發:

Hystrix微服務降級和熔斷

1.微服務降級一般是在客戶端呼叫微服務的時候,出現了服務雪崩的情況,所謂的服務雪崩就是在同乙個tomcat容器中,接受了高併發的訪問,而導致的響應超時,而在整個微服務的專案中,出現了乙個微服務的響應超時而導致的服務雪崩,就會使整個系統崩盤,那麼我們的使用者在傳送請求的時候,返回的響應超時的提示資訊肯...

微服務使用 Hystrix 實現服務降級

設想乙個場景,很多人都在請求乙個介面,此時這個介面就會變得非常繁忙,呼叫者就要等待很長時間,而微服務是互相呼叫的,所以微服務的呼叫者即客戶端回等待很長時間,給使用者造成不好的使用體驗。而服務降級,就是指在服務端發生超時或者出錯的時候,客戶端要及時的遮蔽這些不好的資訊,給使用者乙個良好的體驗,比如在請...

微服務斷路器Hystrix思考

1 超時機制 2 斷路器 hystrix,當你訪問數量超過一定時,進行報錯 它具體是如何做到的呢?hystrix有兩種形式進行熔斷策略的 執行緒池,訊號量 執行緒池,將請求的執行緒交給執行緒池,靠執行緒池的拒絕策略來控制 訊號量模式,semaphone,訊號量每次減一,當執行完,將訊號量釋放 隔離方...