gpt4 book ai didi

node.js - 如何在 Node.js 实现中更改 gRPC 的重新连接行为?

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:45 26 4
gpt4 key购买 nike

据我所知,gRPC 客户端会自动尝试使用退避算法重新建立丢失的连接。我的目标是让 gRPC 至少每秒尝试重新连接。

使用 Go 实现,这可以通过在首次建立与服务的连接时传递 WithBackoffMaxDelay 拨号选项来实现。我如何在 Node.js 实现中做同样的事情?


按照建议,我尝试将 grpc.max_reconnect_backoff_ms 选项传递给客户端构造函数。如果我故意传递一个无效值,如 -1,gRPC 会记录一条错误消息,因此我相信我使用正确。

但是,该选项似乎不会影响 gRPC 的重新连接行为。相反,它似乎大约每 20 秒尝试重新连接一次:

I0215 21:21:07.246695000 140736304567232 subchannel.c:694] Connect failed: {"created":"@1487190067.246665000","description":"Failed to connect to remote host","errno":61,"file":"../src/core/lib/iomgr/tcp_client_uv.c","file_line":104,"os_error":"connection refused"}
I0215 21:21:07.246910000 140736304567232 subchannel.c:491] Retry in 19.999536519 seconds

更令人困惑的是,gRPC 似乎根本没有使用退避算法,即它始终使用 ~20s 值。

最佳答案

我遇到了同样的问题,在调查了 gRPC 核心源代码(在 C 中)之后,我明白了这个问题:

  • 可以配置最大时间,正如@murgatroid99 所指出的,但是,不能配置最小时间,它被强制为 20 秒。

我在 gRPC 存储库中提出了一个合并请求,以使其可配置: https://github.com/grpc/grpc/pull/10237

如果您使用我的分支中的分支,您将能够在您的客户端构造函数中执行此操作:

new ...client(host, credentials, {
'grpc.min_reconnect_backoff_ms': 1000,
'grpc.max_reconnect_backoff_ms': 10000,
})

关于node.js - 如何在 Node.js 实现中更改 gRPC 的重新连接行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42256810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com