Aracılığıyla paylaş


YARP Proxying gRPC

Giriş

gRPC dil belirsiz, yüksek performanslı bir Uzaktan Yordam Çağrısı (RPC) çerçevesidir. HTTP/2'nin üzerine kurulmuştur ve YARP aracılığıyla proksid edilebilir. YARP'nin gRPC iletilerinin farkında olması gerekmez ancak doğru HTTP protokolünün etkinleştirildiğinden emin olmanız gerekir. gRPC HTTP/2 gerektirir ve YARP HTTP/2 isteklerini göndermek ve almak için doğru şekilde yapılandırılmadıysa gRPC çağrıları başarısız olur.

YARP'nin Gelen Protokollerini Yapılandırma

gRPC çoğu senaryo için HTTP/2 gerektirir. HTTP/1.1 ve HTTP/2, ASP.NET Core sunucularında (YARP'nin ön ucu) varsayılan olarak etkinleştirilir, ancak HTTP/2 için https (TLS) gerektirir, bu nedenle YARP'nin https:// URL'sinde dinliyor olması gerekir.

http üzerinden HTTP/2 (TLS olmayan) yalnızca Kestrel desteklenir ve belirli ayarlar gerektirir. Daha fazla bilgi için bkz: ASP.NET Core ile gRPC hizmetleri.

Bu, http (TLS olmayan) üzerinden HTTP/2 kullanmak için Kestrel yapılandırmayı gösterir:

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

YARP'nin Giden Protokollerini Yapılandırma

YARP, giden ara sunucu istekleri için HTTP/1.1 veya HTTP/2'yi otomatik olarak, ancak yalnızca HTTPS (TLS) için müzakere eder. http üzerinden HTTP/2 (TLS olmayan) ek ayarlar gerektirir. Giden protokollerin gelen protokollerden bağımsız olduğunu unutmayın. Örneğin https gelen bağlantı için ve http giden bağlantı için kullanılabilir; buna TLS sonlandırma denir. Yapılandırma detayları için bkz. YARP HTTP İstemci Yapılandırması.

Giden proxy isteğini HTTP/2 kullanacak şekilde yapılandırmanın nasıl yapılacağını aşağıda görebilirsiniz:

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

gRPC-Web

gRPC-Web, HTTP/1.1 ile uyumlu gRPC için alternatif bir kablo biçimidir.

  • application/grpc - HTTP/2 üzerinden gRPC, gRPC'nin genellikle nasıl kullanıldığıdır.
  • application/grpc-web - gRPC-Web, gRPC protokolunu HTTP/1.1 ile uyumlu olacak şekilde değiştirir. gRPC-Web daha fazla yerde kullanılabilir. gRPC-Web, tarayıcı uygulamaları tarafından ve HTTP/2 için tam destek olmadan ağlarda kullanılabilir. İki gelişmiş gRPC özelliği desteklenmez: istemci akışı ve çift yönlü akış.

gRPC-Web, özel bir husus olmadan YARP'nin varsayılan yapılandırması tarafından proksid edilebilir.