我们希望使用具有超时和重试策略的 GRPC 配置。
配置看起来像
{
"methodConfig": [
{
"name": [
{
"service": "someService",
"method": "someMethod"
}
],
"timeout": "0.5s",
"retryPolicy": {
"maxAttempts": 2,
"initialBackoff": "0.2s",
"maxBackoff": "2s",
"backoffMultiplier": 2,
"retryableStatusCodes": [
"UNAVAILABLE",
"CANCELLED",
"UNKNOWN",
"UNIMPLEMENTED"
]
}
}
]
}
问题是重试策略和超时如何协同工作?超时影响单个 GRPC 调用(maxAttempts=2,超时=0.5s,总超时=1s)或重试调用(超时=总超时=0.5s)?这个配置有问题吗
使用此配置,我们总是从 someMethod 获得 DELADLINE_EXCEEDED 状态。但无需配置即可快速运行(100 毫秒)。
超时是总超时。
如果您使用 grpc-java,我认为您可能会因为这个错误而得到 DEADLINE_EXCEEDED:https://github.com/grpc/grpc-java/issues/10336