Limitaciones de gRPC sin proxy
En este documento se describen las limitaciones que se aplican a Cloud Service Mesh con aplicaciones gRPC sin proxy. Para obtener información sobre los límites, consulta Cuotas y límites.
Las limitaciones de las reglas de reenvío, los mapas de URLs y los proxies de destino solo se aplican a Cloud Service Mesh con las Google Cloud APIs de balanceo de carga.
Limitaciones generales
Estas son las limitaciones de Cloud Service Mesh con aplicaciones gRPC sin proxy:
No puedes configurar servicios de backend ni mapas de reglas de enrutamiento con el protocolo gRPC en la consola de Google Cloud . En estos recursos, la consolaGoogle Cloud es de solo lectura.
gRPC sin proxy admite el descubrimiento de endpoints, el enrutamiento, el balanceo de carga, los informes de carga y muchas funciones avanzadas de gestión del tráfico.
Para consultar la versión mínima de gRPC necesaria para admitir algunas funciones de gestión avanzada del tráfico, consulta Versiones e idiomas de gRPC admitidos.
En el caso de las aplicaciones gRPC que necesiten funciones avanzadas de gestión del tráfico no admitidas, usa el resolvedor de nombres DNS en lugar del resolvedor xDS e implementa proxies sidecar compatibles con Cloud Service Mesh. En el proxy gRPC de destino, asigna el valor
FALSE
al campovalidateForProxyless
para poder configurar funciones que aún no son compatibles con gRPC, pero que están disponibles en Cloud Service Mesh con el uso de proxies sidecar.
gRPC sin proxy solo admite las políticas de balanceo de carga de tipo round-robin y hash de anillo. No se admiten otras políticas de balanceo de carga.
- Cloud Service Mesh proporciona al cliente de gRPC una lista ponderada y priorizada de localidades (un grupo de instancias o un grupo de puntos finales de red [NEG]). Malla de servicios de Cloud calcula esta lista en función de la zona disponible más cercana, su capacidad y el modo de balanceo del servicio de backend.
- En una solicitud concreta, el cliente de gRPC elige una o varias localidades en función de la prioridad y el peso, y realiza un balanceo de carga basado en round-robin o en hash de anillo a los back-ends de esas localidades.
La conmutación por error de una zona (localidad) a otra se inicia cuando la capacidad de la zona actual es inferior al 50%. No puedes configurar este umbral.
En algunos casos, los comandos de configuración relacionados con un proxy gRPC de destino y una regla de reenvío que haga referencia a un proxy gRPC de destino pueden tardar hasta un minuto.
Los NEGs de conectividad híbrida (
NON_GCP_PRIVATE_IP_PORT
NEGs) no se admiten con clientes gRPC sin proxy.
Limitaciones de los mapas de URLs
Las siguientes funciones de gestión del tráfico de mapas de URLs se admiten con los servicios de gRPC sin proxy.
Funciones admitidas en la pathMatcher
de hostRules
:
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
Cuando usas servicios gRPC sin proxy, se aplican las siguientes limitaciones de mapas de URLs:
No se admiten caracteres comodín en las reglas de host ni en las reglas predeterminadas de un mapa de URLs, incluida la regla de host
*
creada implícitamente de un mapa de URLs. Estas entradas se omiten cuando se realiza la coincidencia de host.Las siguientes funciones no se admiten:
queryParameterMatches
enrouteRules
headerAction
,urlRewrite
,requestMirrorPolicy
,corsPolicy
yurlRedirect
acciones de ruta- Acción de ruta
timeout
; usamaxStreamDuration
en lugar detimeout
perTryTimeout
enretryPolicy
retryConditions
enretryPolicy
, excepto una o varias condiciones decancelled
,deadline-exceeded
,internal
,resource-exhausted
yunavailable
- Los campos
defaultService
,defaultRouteAction
,defaultUrlRedirect
yheaderAction
del mapa de URLs no se usan en los servicios de gRPC sin proxy. Si no se encuentra ninguna regla de host coincidente cuando un cliente gRPC sin proxy busca un nombre de servicio, Cloud Service Mesh devuelve un error de búsqueda de nombre en lugar de usar el servicio o la acción predeterminados del mapa de URLs. headerAction
enweightedBackendServices
En las reglas de coincidencia de encabezado de los mapas de URLs, solo se admiten los metadatos personalizados especificados por el usuario que no sean binarios y el encabezado
content-type
. Los siguientes encabezados de nivel de transporte no se pueden usar en reglas de coincidencia de encabezados::authority
,:method
,:path
,:scheme
,user-agent
,accept-encoding
,content-encoding
,grpc-accept-encoding
,grpc-encoding
,grpc-previous-rpc-attempts
,grpc-tags-bin
,grpc-timeout
ygrpc-trace-bin
.Cuando actualizas una regla de host de un mapa de URLs para cambiar de un servicio de backend a otro, es posible que el tráfico se pierda momentáneamente mientras se envía la nueva configuración a los clientes. Para evitar esta limitación, configure la división del tráfico con servicios de backend ponderados. Después de configurar la división del tráfico, transfiere lentamente el tráfico del servicio de backend antiguo al nuevo.
Limitaciones de los proxies gRPC de destino
Cuando un proxy gRPC de destino hace referencia a un mapa de URLs, no puedes configurar las siguientes funciones del mapa de URLs. Esto se aplica tanto si usas un proxy sidecar como un servicio de gRPC sin proxy, ya que estas funciones específicas del protocolo HTTP no se aplican al protocolo gRPC:
- Regla de coincidencia de
queryParameterMatches
urlRewrite
acción de rutaurlRedirect
acción de rutacorsPolicy
acción
Limitaciones de los servicios de backend
Las siguientes funciones de servicio backend no se admiten en los servicios de gRPC sin proxy con un proxy sidecar:
localityLbPolicy
, exceptoLEAST_REQUEST
(solo con clientes de Java),ROUND_ROBIN
yRING_HASH
sessionAffinity
, exceptoHEADER_FIELD
yNONE
consistentHash
, excepto los camposhttpHeaderName
yminimumRingSize
affinityCookieTtlSec
timeoutSec
; usamaxStreamDuration
en su lugarcircuitBreakers
, excepto el campomaxRequests
Ten en cuenta que un cliente gRPC enviará un NACK a la configuración de Cloud Service Mesh cuando se configuren valores no admitidos. Esto hará que el cliente rechace la configuración de todos los servicios backend, ya que el protocolo xDS requiere que se rechacen todos los recursos de una respuesta determinada, en lugar de poder rechazar solo un recurso concreto de la respuesta. Esto hará que el canal del cliente pase a un estado de error transitorio hasta que se corrija la configuración. Debido a esta limitación, debes asegurarte de que todos los clientes admitan el valor necesario antes de configurar una función para un servicio. Por ejemplo, si cambias la política ROUND_ROBIN
a RING_HASH
, debes asegurarte de que todos los clientes se actualicen a una versión que admita RING_HASH
.
Limitaciones de la gestión avanzada del tráfico
No puedes configurar algunas funciones avanzadas de gestión del tráfico para servicios de gRPC sin proxy con Cloud Service Mesh. Para ver las funciones compatibles, consulta lo siguiente:
Limitaciones de Directorio de servicios
- Service Directory y Cloud Service Mesh no garantizan la accesibilidad de la red para los clientes.
Un servicio de backend solo puede hacer referencia a uno de los siguientes elementos:
- Grupo de instancias gestionado o sin gestionar
- Grupo de puntos finales de red
- Enlaces a servicios
Los servicios de Service Directory solo se pueden usar con servicios de backend globales con
load-balancing-scheme=INTERNAL_SELF_MANAGED
.Se puede eliminar un servicio de Directorio de servicios al que haga referencia un enlace de servicio. Si se elimina el servicio de Service Directory subyacente al que está asociado el servicio de backend, las aplicaciones que usen Cloud Service Mesh no podrán enviar tráfico a este servicio y, por lo tanto, las solicitudes fallarán. Consulta las prácticas recomendadas para la observabilidad y la depuración.
Cuando vinculas un servicio de Service Directory a un servicio de backend, no puedes configurar una comprobación de estado en ese servicio de backend.
Siguientes pasos
- Para obtener información sobre las limitaciones que se aplican a Cloud Service Mesh, incluidas las limitaciones avanzadas de gestión del tráfico, consulta Limitaciones de Cloud Service Mesh.
- Para consultar casos prácticos y patrones de arquitectura de los servicios gRPC sin proxy, consulta la información general sobre los servicios gRPC sin proxy.