SpringCloud記錄

1.Eureka的自我保護機制

默認情況下,服務需要每隔30s向EurekaServer發送心跳,Eureka連續三次都沒收到心跳時,則認爲服務不可用,會將服務從列表中移除。如果Eureka短時間內收到的心跳數量小於應該收到的85%(默認),那麼其會自動進入自我保護模式,服務列表只可以讀取,增加,不能刪除。當EurekaServer收到的心跳數量恢復到閥值以上時,會自動退出自我保護模式。
修改Eureka配置:

#設置閥值
eureka.server.renewal-percent-threshold:0.78
#關閉自我保護機制
eureka.server.enable-self-preservation:false

2.openFeign

老版本叫feign,新版本叫openFeign,底層採用的ribbon做客戶端負載均衡,常用配置:

#連接超時時間
feign.client.config.default.connectTimeout=5000
#從發送請求到獲取響應的超時時間
feign.client.config.default.readTimeout=10000

3.Hystrix斷路器

方法級別的降級:

@HystrixCommand(fallbackMethod="hystrixMethod")

類級別:xxx實現FallbackFactory接口,然後配置:

@FeignClient(value="server-name",fallbackFactory=xxx.class)

或者xxx實現接口,配置屬性改爲fallback=xxx.class

爲了防止某個服務出問題而影響其它請求,採用了兩種隔離策略:
1.線程隔離(默認):採用線程池處理請求,每個依賴的最大線程數是有限制的,達到最大上限時該依賴的請求會阻塞,當然併發也受限於最大線程數。
2.信號量隔離:對依賴的調用也爲當前請求線程,用信號量限制每個依賴。達到信號量限制時則阻塞。
修改默認配置:

hystrix.command.default.execution.isolation.strategy=thread
hystrix.command.default.execution.isolation.strategy=semaphore

修改線程執行超時時間(默認1s):

hystrix.command.default.execution.timeout.enabled=true
#設置服務熔斷時限
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000

也可以修改線程池配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章