Limitaciones de gRPC sin proxy
En este documento, se describen las limitaciones que se aplican a Cloud Service Mesh con aplicaciones de gRPC sin proxy. Para obtener más información sobre los límites, consulta Cuotas y límites.
Las limitaciones de las reglas de reenvío, los mapas de URL y los proxies de destino solo se aplican a Cloud Service Mesh con las APIs de balanceo de cargas de Google Cloud.
Limitaciones generales
Las limitaciones de Cloud Service Mesh con aplicaciones de gRPC sin proxy incluyen las siguientes:
No puedes configurar servicios de backend y mapas de reglas de enrutamiento con el protocolo de gRPC en la consola de Google Cloud. Para estos recursos, la consola de Google Cloud es de solo lectura.
gRPC sin proxy es compatible con el descubrimiento de extremos, el enrutamiento, el balanceo de cargas, los informes de carga y muchas características de administración avanzada del tráfico.
Si quieres obtener la versión mínima de gRPC necesaria para admitir algunas funciones de la administración avanzada de tráfico, consulta Lenguajes y versiones de gRPC compatibles.
Para las aplicaciones de gRPC que necesitan funciones de administración avanzada de tráfico no compatibles, usa el agente de resolución de nombres de DNS en lugar del agente de resolución de xDS y, luego, impleméntalo con proxies de sidecar compatibles con Cloud Service Mesh. En el proxy de gRPC de destino, configura el campo
validateForProxyless
enFALSE
para que puedas configurar las funciones que aún no son compatibles con gRPC, pero que están disponibles en Cloud Service Mesh con el uso de proxies de sidecar.
gRPC sin proxy solo admite políticas de balanceo de cargas de anillo de hash y round robin. Otros algoritmos de balanceo de cargas no son compatibles.
- Cloud Service Mesh proporciona una lista priorizada de localidades (un grupo de instancias o un grupo de extremos de red [NEG]) al cliente de gRPC. Cloud Service Mesh calcula esta lista en función de la zona disponible más cercana, su capacidad y el modo de balanceo del servicio de backend.
- Para una solicitud en particular, el cliente de gRPC elige una o más localidades según la prioridad y el peso, y realiza un balanceo de cargas basado en anillo de hash y en round robin para los backends dentro de esas localidades.
La conmutación por error de una zona (localidad) a otra comienza 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 de gRPC de destino y una regla de reenvío que hacen referencia a un proxy de gRPC de destino pueden tardar hasta un minuto.
Los NEG de conectividad híbrida (NEG de
NON_GCP_PRIVATE_IP_PORT
) no son compatibles con los clientes de gRPC sin proxy.
Limitaciones de mapas de URL
Las siguientes funciones de administración de tráfico de mapas de URL son compatibles con los servicios de gRPC sin proxy.
Funciones compatibles en 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
Las siguientes limitaciones de mapas de URL se aplican cuando usas servicios de gRPC sin proxy:
No se admiten los caracteres comodín en las reglas de host y las reglas predeterminadas de un mapa de URL, incluida la regla de host
*
de un mapa de URL creada de forma implícita. Esas entradas se omiten cuando se realiza la coincidencia del host.Las siguientes funciones no son compatibles:
queryParameterMatches
enrouteRules
- Acciones de ruta
headerAction
,urlRewrite
,requestMirrorPolicy
,corsPolicy
yurlRedirect
- Acción de ruta
timeout
; usamaxStreamDuration
en lugar detimeout
perTryTimeout
enretryPolicy
retryConditions
enretryPolicy
, excepto una o más condiciones decancelled
,deadline-exceeded
,internal
,resource-exhausted
yunavailable
- Los servicios de gRPC sin proxy no usan
defaultService
,defaultRouteAction
,defaultUrlRedirect
yheaderAction
del mapa de URL. Si no se encuentra una regla de host que coincida cuando un cliente de gRPC sin proxy busca un nombre de servicio, la malla de servicios de Cloud muestra un error de búsqueda de nombre en lugar de usar el servicio o la acción predeterminados del mapa de URL. headerAction
enweightedBackendServices
En las reglas de coincidencia de encabezado de mapa de URL, solo se admiten los metadatos personalizados no binarios especificados por el usuario y el encabezado
content-type
. Los siguientes encabezados de nivel de transporte no se pueden usar en las reglas de coincidencia de encabezado::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 mapa de URL para cambiar de un servicio de backend a otro, puede que el tráfico se interrumpa de manera temporal mientras se envía la configuración nueva a los clientes. Para evitar esta limitación, configura la división del tráfico con servicios de backend ponderados. Después de configurar la división del tráfico, cambia con lentitud el tráfico del servicio de backend anterior al servicio de backend nuevo.
Limitaciones del proxy de gRPC de destino
Cuando un proxy de gRPC de destino hace referencia a un mapa de URL, no puedes configurar las siguientes funciones del mapa de URL. Esto se aplica si usas un proxy de sidecar o un servicio de gRPC sin proxy porque estas funciones específicas del protocolo HTTP no se aplican al protocolo de gRPC:
queryParameterMatches
regla de coincidencia- Acción de ruta
urlRewrite
- Acción de ruta
urlRedirect
- Acción
corsPolicy
Limitaciones del servicio de backend
Las siguientes funciones del servicio de backend no son compatibles con los servicios de gRPC sin proxy con un proxy de sidecar:
localityLbPolicy
, exceptoLEAST_REQUEST
(solo con clientes de Java),ROUND_ROBIN
yRING_HASH
sessionAffinity
, exceptoHEADER_FIELD
yNONE
consistentHash
, excepto los camposhttpHeaderName
yminimumRingSize
affinityCookieTtlSec
timeoutSec
; UtilizamaxStreamDuration
en lugar de esta función.circuitBreakers
, excepto el campomaxRequests
Ten en cuenta que un cliente de gRPC generará un NACK en la configuración de Cloud Service Mesh cuando se configuren valores no compatibles. Esto hará que el cliente rechace la configuración de todos los servicios de backend porque, por el momento, el protocolo xDS requiere que se rechacen todos los recursos en una respuesta determinada, en lugar de solo rechazar un recurso individual de la respuesta. Esto hará que el canal del cliente entre en 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 requerido 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 compatible con RING_HASH
.
Limitaciones de la administración del tráfico avanzada
Con Cloud Service Mesh, no puedes configurar algunas funciones avanzadas de administración de tráfico para servicios de gRPC sin proxy. Para conocer las funciones compatibles, consulta lo siguiente:
- Idiomas y versiones compatibles de gRPC
- Funciones de Cloud Service Mesh, incluido el balanceo de cargas
Limitaciones con el Directorio de servicios
- El Directorio de servicios 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 administrado o grupo de instancias no administrado
- Grupo de extremos de red
- Vinculaciones del servicio
Los servicios del Directorio de servicios solo se pueden usar con servicios de backend globales con
load-balancing-scheme=INTERNAL_SELF_MANAGED
.Se puede borrar un servicio del Directorio de servicios al que hace referencia una vinculación del servicio. Si se borra el servicio subyacente del Directorio de servicios al que se adjunta el servicio de backend, las aplicaciones que usan Cloud Service Mesh no pueden enviar tráfico a este servicio y, por lo tanto, las solicitudes fallan. Consulta Observabilidad y depuración para conocer las prácticas recomendadas.
Cuando vinculas un servicio del Directorio de servicios a un servicio de backend, no puedes configurar una verificación de estado en ese servicio de backend.
¿Qué sigue?
- Para obtener información sobre las limitaciones que se aplican a Cloud Service Mesh, incluidas las limitaciones de la administración avanzada del tráfico, consulta Limitaciones de Cloud Service Mesh.
- Si deseas encontrar casos prácticos y patrones de arquitectura para servicios de gRPC sin proxy, consulta la descripción general de los servicios de gRPC sin proxy.