java 失败重试 ribbon springretry
ribbon 提供了Springcloud下负载均衡和失败重试测试,ribbon 默认提供了httpclient 发起http请求,使用rxjava的retry机制进行失败重试,使用了ribbon的默认RequestSpecificRetryHandler和DefaultLoadBalancerRetryHandler重试测策略。 但是在Springcloud中也提供了重试机制,使用spring-retry作为失败重试,重试策略有InterceptorRetryPolicy。
下面我们从不同的几个角度,来阐述一下这两种重试策略中的不同点一级优缺点
springretry 重试策略:
* 提供的功能
1. 默认支持GET请求重试
2. 可配置所有操作重试(GET/PUT/POST/DELETE)
3. 支持可配置同一个Server重试多次和可配置多个Server上重试。
4. 虽然spring-retry提供了很多的重试策略,但是在spring-cloud中目前只有两种重试策略: 不重试、可配置重试次数。
* 使用性
1. 需要通过spring-cloud的配置文件中读取,不支持服务级配置。
ribbon 中的重试策略:
* 提供的功能
1. 默认支持GET请求重试
2. 可配置所有操作重试(GET/PUT/POST/DELETE)
3. 支持可配置同一个Server重试多次和可配置多个Server上重试。
4. 支持根据http 返回的异常信息决定是否进行重试,例如:ConnectException, SocketTimeoutException进行重试,其他异常不进行重试,也可以添加异常重试类型。
* 使用性
1. 使用netflix的archaius 默认支持服务级配置