GRPC 重试策略和超时一起使用

问题描述 投票:0回答:1

我们希望使用具有超时和重试策略的 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 grpc-java grpc-python grpc-go grpc-web
1个回答
0
投票

超时是总超时。

如果您使用 grpc-java,我认为您可能会因为这个错误而得到 DEADLINE_EXCEEDED:https://github.com/grpc/grpc-java/issues/10336

© www.soinside.com 2019 - 2024. All rights reserved.