что такое r.Scheme () +: ///test.server в grpc Dial call во всех тестовых случаях grpc

Обычно мы передаем адрес сервера, например, «localhost: 56666» или «someserver: 9999», в метод Dial программы grpc-go.

пример: grpc.Dial ("localhost: 56666", grpc.WithInSecure ())

Но в тестовых случаях, приведенных в репозитории grpc-go (см. Ссылки ниже), первый аргумент Dial упоминается как "* Dial (r.Scheme () +": ///test.server ", WithInsecure (), WithTimeout (5 * time.Second)) * ". Когда я печатаю это значение, запустив эти тестовые файлы, я заметил это значение адреса как «bykrwuxel00s: ///test.server».

https://github.com/grpc/grpc-go/blob/master/balancer/roundrobin/roundrobin_test.go#L102

https://github.com/grpc/grpc-go/blob/master/clientconn_test.go#L135

Как это работает как действующий адрес сервера?


person kee    schedule 20.11.2019    source источник


Ответы (1)


Элемент «схема» цели gRPC URI в основном указывает только «тип» цели. См. https://github.com/grpc/grpc/blob/master/doc/naming.md#name-syntax для получения дополнительных сведений.

Например, таким образом клиенты gRPC могут посмотреть на этот тип и решить, какой механизм разрешения имен использовать (внутри каждый «преобразователь» регистрируется по уникальной схеме).

В этом случае похоже, что этот тест использует настраиваемый преобразователь, который он сгенерировал из вызова «GenerateAndRegisterManualResolver», который динамически генерировал уникальную схему для глобальной регистрации: https://github.com/grpc/grpc-go/blob/7c1d326729dc9b0a07135f8902ddcc050ff8ab64/resolver/manual/manual.go#L89

person apolcyn    schedule 20.11.2019