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

也可以修改线程池配置。

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