无代理 gRPC 限制

本文档介绍适具有无代理 gRPC 应用的 Traffic Director 的限制。如需了解限制,请参阅配额和限制

一般限制

具有无代理 gRPC 应用的 Traffic Director 的限制包括:

  • 您无法在 Google Cloud 控制台中使用 gRPC 协议配置后端服务和路由规则映射。对于这些资源,Google Cloud 控制台处于只读状态。

  • 无代理 gRPC 支持端点发现、路由、负载均衡、负载报告以及许多高级流量管理功能。

    • 如需了解支持某些高级流量管理功能所需的最低 gRPC 版本,请参阅支持的 gRPC 版本和语言

    • 对于需要不受支持的高级流量管理功能的 gRPC 应用,请使用 DNS 名称解析器(而非 xDS 解析器),并使用 Traffic Director 支持的边车代理进行部署。在目标 gRPC 代理中,将 validateForProxyless 字段设置为 FALSE,以便您可以配置 gRPC 尚不支持但 Traffic Director 中可通过使用边车代理提供的功能。

  • 无代理 gRPC 仅支持轮循和环哈希负载均衡政策。不支持其他负载均衡政策

    • Traffic Director 会向 gRPC 客户端提供位置的优先加权列表,即一个实例组或一个网络端点组 (NEG)。Traffic Director 根据最近的可用可用区、其容量和后端服务的均衡模式计算此列表。
    • 对于特定请求,gRPC 客户端会根据优先级和权重选择一个或多个区域,并在这些区域内执行基于后端的轮循或基于哈希的负载均衡。
  • 当前可用区容量低于 50% 时,将开始从一个可用区故障切换到另一个可用区。您无法配置此阈值。

  • 在某些情况下,与目标 gRPC 代理和引用目标 gRPC 代理的转发规则相关的配置命令最长可能需要一分钟。

  • 无代理 gRPC 客户端不支持混合连接 NEG (NON_GCP_PRIVATE_IP_PORT NEG)

网址映射限制

无代理 gRPC 服务支持以下网址映射流量管理功能。

hostRulespathMatcher 支持的功能:

pathMatcher
  name
  description
  defaultService
  defaultRouteAction
     weightedBackendServices
       backendService
       weight
    retryPolicy
       retryConditions
       numRetries
    faultInjectionPolicy
    maxStreamDuration
  pathRules
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration
    paths
  routeRules
    priority
    description
    matchRules
        prefixMatch
        fullPathMatch
        headerMatches
        metadataFilters
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration

使用无代理 gRPC 服务时,以下网址映射限制适用:

  • 不支持网址映射主机规则和默认规则(包括网址映射中隐式创建的 * 主机规则)中的通配符。完成主机匹配后,系统会跳过此类条目。

  • 不支持以下功能:

    • routeRulesqueryParameterMatches
    • headerActionurlRewriterequestMirrorPolicycorsPolicyurlRedirect 路由操作
    • timeout 路由操作;使用 maxStreamDuration,而不是 timeout
    • retryPolicyperTryTimeout
    • retryPolicyretryConditions,但 cancelleddeadline-exceededinternalresource-exhaustedunavailable 中的一个或多个条件除外
    • 无代理 gRPC 服务不会使用网址映射的 defaultServicedefaultRouteActiondefaultUrlRedirectheaderAction。如果系统在无代理 gRPC 客户端查找服务名称时找不到匹配的 hostRule,则 Traffic Director 会返回名称查找错误,而不是使用网址映射的默认服务或操作。
    • weightedBackendServicesheaderAction
  • 在网址映射标头匹配规则中,系统仅支持用户指定的非二进制自定义元数据content-type 标头。以下传输级标头不能用于标头匹配规则::authority:method:path:schemeuser-agentaccept-encodingcontent-encodinggrpc-accept-encodinggrpc-encodinggrpc-previous-rpc-attemptsgrpc-tags-bingrpc-timeoutgrpc-trace-bin

  • 如果您更新网址映射主机规则以从一项后端服务更改为另一项后端服务,在将新配置推送到客户端时,流量可能会暂时中断。为避免此限制,请配置带有加权后端服务的流量拆分功能。配置流量拆分后,将流量从旧的后端服务缓慢转移到新的后端服务。

目标 gRPC 代理限制

当目标 gRPC 代理引用网址映射时,您无法配置以下网址映射功能。无论您是使用边车代理还是无代理 gRPC 服务,情况都是如此,因为这些特定于 HTTP 协议的功能不适用于 gRPC 协议:

  • queryParameterMatches 个匹配规则
  • urlRewrite 路由操作
  • urlRedirect 路由操作
  • corsPolicy 操作

后端服务限制

边车代理支持的无代理 gRPC 服务不支持以下后端服务功能:

  • localityLbPolicy,但 LEAST_REQUEST(仅限 Java 客户端)、ROUND_ROBINRING_HASH 除外
  • sessionAffinityHEADER_FIELDNONE 除外
  • consistentHashhttpHeaderNameminimumRingSize 字段除外)
  • affinityCookieTtlSec
  • timeoutSec;请改用 maxStreamDuration
  • circuitBreakersmaxRequests 字段除外)

高级流量管理限制

您无法为使用 Traffic Director 的无代理 gRPC 服务配置某些高级流量管理功能。如需了解支持的功能,请参阅以下内容:

Service Directory 的限制

  • Service Directory 和 Traffic Director 不保证客户端的网络可达性。
  • 后端服务只能引用以下其中一项:

    • 代管式实例组或非代管式实例组
    • 网络端点组
    • 服务绑定
  • Service Directory 服务只能与满足 load-balancing-scheme=INTERNAL_SELF_MANAGED 的全局后端服务一起使用。

  • 可以删除服务绑定引用的 Service Directory 服务。如果后端服务附加的底层 Service Directory 服务被删除,则使用 Traffic Director 的应用无法将流量发送到此服务,因此请求会失败。如需了解最佳做法,请参阅可观测性和调试

健康检查

将 Service Directory 服务绑定到后端服务时,您无法在后端服务上配置健康检查。

后续步骤