Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用golang gRPC客户端拨打多个IP地址_Go_Grpc - Fatal编程技术网

使用golang gRPC客户端拨打多个IP地址

使用golang gRPC客户端拨打多个IP地址,go,grpc,Go,Grpc,我有grpc服务器192.168.1.12:8800和192.168.1.13:8800,我想用grpc连接它们。用ip列表拨,而不是服务器发现,我该怎么办 conn, err = grpc.Dial("192.168.1.12:8800,192.168.1.13:8800", grpc.WithInsecure()) 错误地 rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest co

我有grpc服务器
192.168.1.12:8800
192.168.1.13:8800
,我想用
grpc连接它们。用ip列表拨
,而不是服务器发现,我该怎么办

conn, err = grpc.Dial("192.168.1.12:8800,192.168.1.13:8800", grpc.WithInsecure())
错误地

rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = \"transport: Error while dialing dial tcp: too many colons in address 192.168.1.12:8800,192.168.1.13:8800

不幸的是,您无法使用
grpc.Dial(…)
传递多个IP地址,它只需要一个参数

Go中的gRPC确实有一个您应该能够利用的api

可以找到您需要编写的解析器示例。它创建了一个假解析器,可以在多个IP地址之间实现负载平衡

因此,一旦您有了这样的解析器,您想要的代码将如下所示:

conn, err := grpc.Dial(
    "",
    grpc.WithInsecure(),
    grpc.WithBalancer(grpc.RoundRobin(resolver.NewPseudoResolver([]string{
        "10.0.0.1:10000",
        "10.0.0.2:10000",
    }))),
)

我为此编写了一个库:

使用方便:

import u“github.com/Jille/grpc多解析器”
grpc.拨号盘(“multi:///192.168.1.12:8800,192.168.1.13:8800")

请注意开头的三个斜杠。

您尝试过什么?你遇到了什么问题?包括您的代码,以及您收到的任何输出或错误。这正是我真正需要的!救命的答案!