-
Notifications
You must be signed in to change notification settings - Fork 225
retry client
chengyouling edited this page Mar 15, 2024
·
9 revisions
客户端调用服务端的时候,通常采用的是REST,服务端故障、网络故障等场景,可能导致短暂失败。 如果服务端存在多个实例,那么就可以通过转移请求的方式保证请求成功。
Spring Cloud Huawei的客户端重试可以用下图表示:
请求
consumer ------REST----X---> provider(instance1)
--Y---> provider(instance2)
响应
<-------Y----------
servicecomb:
matchGroup:
AllOperation: |
matches:
- apiPath:
prefix: "/"
retry:
AllOperation: |
maxAttempts: 3
retryOnResponseStatus:
- 502
- 503
waitDuration: 1
上述策略在consumer请求失败(响应的错误码502, 503)的情况下,会重试3次(不包括本次请求,即最多调用4次),重试的过程中, 会根据负载均衡策略尽可能重新选择一个新的实例,下一次重试等待时间为 waitDuration。
servicecomb:
matchGroup:
AllOperation: |
matches:
- apiPath:
prefix: "/"
serviceName: privder
retry:
AllOperation: |
maxAttempts: 3
retryOnSame: 1
retryOnResponseStatus:
- 502
- 503
waitDuration: 1
上述策略在consumer请求失败(响应的错误码502, 503)的情况下,会重试3次(不包括本次请求,即最多调用4次),第一次重试会使用请求发起 的时候的实例,下一次重试等待时间为 waitDuration,且第二次、第三次重试会根据负载均衡策略尽可能重新选择一个新的实例。
根据负载均衡策略选择新的实例,可能选择到请求发起的实例,具体取决于负载均衡策略和状态。
Spring Cloud Gateway可以使用上述重试策略和配置。
注意:1.11.6-2023.0.x/1.11.6-2022.0.x/1.11.6-2021.0.x版本才开始支持 retryOnSame 配置。
指定服务名重试功能版本要求:1.10.9-2021.0.x及以上版本。
集成Spring Cloud Huawei以后,默认集成了客户端重试模块 spring-cloud-starter-huawei-governance
,只需要通过配置开启具体的客户端重试策略。
-
使用Spring Cloud Huawei功能
-
使用服务治理
-
生态集成
-
迁移改造问题
-
配置参考
-
优秀实践
-
常见问题