YARP Docsv2.3
Документация/Протоколы/Проксирование gRPC

Проксирование gRPC

gRPC — это независимый от языка программирования, высокопроизводительный фреймворк удалённого вызова процедур (RPC). Он

Введение

gRPC — это независимый от языка программирования, высокопроизводительный фреймворк удалённого вызова процедур (RPC). Он построен поверх HTTP/2 и может проксироваться через YARP. Хотя YARP не обязательно должен быть осведомлён о самих сообщениях gRPC, необходимо убедиться, что включён нужный протокол HTTP. gRPC требует HTTP/2, и вызовы gRPC завершатся ошибкой, если YARP не настроен на корректную отправку и приём запросов HTTP/2.

Настройка входящих протоколов YARP

В большинстве сценариев gRPC требует HTTP/2. HTTP/1.1 и HTTP/2 включены по умолчанию на серверах ASP.NET Core (интерфейсной части YARP), но для HTTP/2 требуется https (TLS), поэтому YARP должен прослушивать URL-адрес https://.

HTTP/2 поверх http (без TLS) поддерживается только на Kestrel и требует специальных настроек. Дополнительные сведения см. в статье gRPC services with ASP.NET Core.

Ниже показана настройка Kestrel для использования HTTP/2 поверх http (без TLS):

JSON   {
       "Kestrel": {
          "Endpoints": {
             "http": {
                 "Url": "http://localhost:5000",
                 "Protocols": "Http2"
             }
          }
       }
   }

Настройка исходящих протоколов YARP

YARP автоматически согласовывает HTTP/1.1 или HTTP/2 для исходящих проксируемых запросов, но только для https (TLS). Для HTTP/2 поверх http (без TLS) требуются дополнительные настройки. Обратите внимание, что исходящие протоколы не зависят от входящих. Например, https может использоваться для входящего

соединения, а http — для исходящего; это называется завершением TLS (TLS termination). Подробности о настройке

см. в статье YARP HTTP Client Configuration.

Ниже показано, как настроить исходящий проксируемый запрос на использование HTTP/2:

JSON"cluster1": {
   "HttpRequest": {
      "Version": "2",
      "VersionPolicy": "RequestVersionExact"
   },
   "Destinations": {
      "cluster1/destination1": {
          "Address": "http://localhost:6000/"
      }
   }
},

gRPC-Web

gRPC-Web — это альтернативный формат передачи данных для gRPC, совместимый с HTTP/1.1.

application/grpc — так обычно используется gRPC поверх HTTP/2. application/grpc-web — gRPC-Web изменяет протокол gRPC, делая его совместимым с HTTP/1.1. gRPC-Web можно использовать в большем числе сценариев. gRPC-Web можно применять в браузерных приложениях и в сетях без полной поддержки HTTP/2. Две расширенные возможности gRPC не поддерживаются: клиентская потоковая передача (client streaming) и двунаправленная потоковая передача (bidirectional streaming).

gRPC-Web можно проксировать с помощью конфигурации YARP по умолчанию без каких-либо особых условий.

Примечание

Автор подготовил эту статью с помощью ИИ. Подробнее

Адаптировано из Microsoft Learn , лицензия CC BY 4.0 .