Наберите несколько IP-адресов с помощью golang gRPC client - PullRequest
0 голосов
/ 11 мая 2018

У меня есть сервер grpc 192.168.1.12:8800 и 192.168.1.13:8800, я хочу соединить их, используйте grpc.Dial со списком 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

1 Ответ

0 голосов
/ 12 мая 2018

К сожалению, вы не можете передать несколько IP-адресов с помощью grpc.Dial(...), для этого требуется только один аргумент.

gRPC в Go имеет «экспериментальный» балансировщик нагрузки 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",
    }))),
)
...