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
也可以修改線程池配置。