SpringCloud----ribbon重试机制和Hystrix熔断器
1.重试机制Ribbon
1.1 概述: 服务B访问集群环境下的服务A,某一个服务A宕机,服务B将尝试访问其他可以使用的服务A.
1.2 实现步骤:
• 步骤一 : 修改pom.xml文件,添加重试机制的依赖
<!--重试机制--> |
•步骤二 : 修改yml文件,开启cloud重试机制
spring: cloud: loadbalancer: retry: enabled: true #开启重试机制 |
•步骤三 : 修改yml 文件,配置当前服务的重试参数
格式: {服务名称}.ribbon.参数名 : 具体值
service4: ribbon: ConnectTimeout: 250 # Ribbon的连接超时时间 ReadTimeout: 1000 # Ribbon的数据读取超时时间 OkToRetryOnAllOperations: true # 是否对所有操作都进行重试 MaxAutoRetriesNextServer: 1 # 切换实例的重试次数 MaxAutoRetries: 1 # 对当前实例的重试次数 |
1.3运行测试 :
当多个消息提供者关闭一个,不会请求返回异常,经过连接超时时间就会返回所有响应数据
2.熔断器Hystrix
2.1 概述:Hystrix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。
2.2 功能: 当服务繁忙时,如果服务出现异常,不是粗暴的直接报错,而是返回一个友好的提示,虽然拒绝了用户的访问,但是会返回一个结果。
2.3 实现步骤 :
• 步骤一 : 修改pom.xml文件,添加Hystrix的依赖
<!--熔断器--> <dependency> |
•步骤二 : 开启熔断(启动类上加入@EnableHystrix注解)
@SpringBootApplication |
•步骤三 : 修改消费者
查找方法并在方法上添加注解声明一个失败时的回滚处理函数
@HystrixCommand(fallbackMethod = “回滚函数的函数名”) |
2.4 运行测试
请求超过一秒(默认1000毫秒)得不到响应,就回执行回滚处理函数,返回替代内容
3.ribbon和Hystrix相结合
3.1简述:
如果熔断和重试机制,都配置,是都生效?还是某个生效?
经测试发现是熔断生效,为什么?
实际执行后发现,没有触发重试机制,而是先触发了熔断,原因是这两种技术都采用的是默认时间1000毫秒,而这不是我们想要的结果,我们学习了这两种技术,自然是想把它们融合到项目中,所以我们采用的解决方案是 Ribbon的超时时间一定要小于Hystrix的超时时间.
3.2实现步骤:
我们可以通过
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
来设置Hystrix超时时间。(注意设置的值为 毫秒值)
hystrix: command: default: execution: isolation: thread: timeoutInMillisecond: 6000 # 设置hystrix的超时时间为6000ms |
- Spring Cloud Ribbon 重试机制
- SpringCloud对Feign的Ribbon重试机制分析
- 干货分享微服务spring-cloud(4.负载均衡ribbon与熔断器hystrix)
- springcloud-ribbon、fein服务调用的对比使用以及重试机制的使用
- spring Cloud中,解决Feign/Ribbon整合Hystrix第一次请求失败的问题?
- SpringCloud(四)Hystrix熔断器
- 【Spring Cloud】Hystrix 防御机制
- 【Spring Cloud】Hystrix 防御机制
- Spring Cloud Hystrix--熔断器
- springcloud 熔断器Hystrix的具体使用
- 【Spring Cloud】Hystrix 防御机制
- 【Spring Cloud】Hystrix 防御机制
- SpringCloud 学习 | 第五篇: ribbon断路器使用(hystrix)
- 玩转SpringCloud(F版本) 三.断路器(Hystrix)RestTemplate+Ribbon和Feign两种方式
- feign + ribbon 负载均衡和重试(Spring Cloud)
- 【Spring Cloud】Hystrix 防御机制
- 【Spring Cloud】Hystrix 防御机制
- SpringCloud-源码分析 Hystrix 熔断器
- spring cloud: Hystrix断路器(熔断器)
- springcloud(4):熔断器Hystrix