Limites de gRPC sans proxy
Ce document décrit les limites applicables à Cloud Service Mesh avec des applications gRPC sans proxy. Pour en savoir plus sur les limites, consultez la page Quotas et limites.
Les limites concernant les règles de transfert, les mappages d'URL et les proxys cibles ne s'appliquent qu'à Cloud Service Mesh avec les API d'équilibrage de charge Google Cloud.
Limites générales
Les limites de Cloud Service Mesh avec des applications gRPC sans proxy incluent les suivantes:
Vous ne pouvez pas configurer les services de backend ni les cartes des règles de routage avec le protocole gRPC dans Google Cloud Console. Pour ces ressources, la console Google Cloud est en lecture seule.
Le protocole gRPC sans proxy est compatible avec la découverte de points de terminaison, le routage, l'équilibrage de charge, la création de rapports sur la charge et de nombreuses fonctionnalités avancées de gestion du trafic.
Pour connaître la version gRPC minimale requise pour prendre en charge certaines fonctionnalités de gestion avancée du trafic, consultez la section Versions et langages gRPC compatibles.
Pour vos applications gRPC nécessitant des fonctionnalités avancées de gestion du trafic, utilisez le résolveur de noms DNS au lieu du résolveur xDS et déployez-le avec des proxys side-car compatibles avec Cloud Service Mesh. Dans votre proxy gRPC cible, définissez le champ
validateForProxyless
surFALSE
afin de configurer les fonctionnalités qui ne sont pas encore compatibles avec gRPC, mais qui sont disponibles dans Cloud Service Mesh à l'aide de proxys side-car.
Le protocole gRPC sans proxy n'est compatible qu'avec les règles d'équilibrage de charge "round robin" (à tour de rôle) et de hachage en anneau. Les autres algorithmes d'équilibrage de charge ne sont pas compatibles.
- Cloud Service Mesh fournit au client gRPC une liste prioritaire pondérée des localités, à savoir un groupe d'instances ou un groupe de points de terminaison de réseau (NEG). Cloud Service Mesh calcule cette liste en fonction de la zone disponible la plus proche, de sa capacité et du mode d'équilibrage du service de backend.
- Pour une requête donnée, le client gRPC choisit une ou plusieurs localités en fonction de la priorité et de la pondération, et effectue un équilibrage de charge round-robin ou basé sur le hachage en anneau pour les backends de ces localités.
Le basculement d'une zone (localité) à une autre commence lorsque la capacité de la zone actuelle est inférieure à 50%. Vous ne pouvez pas configurer ce seuil.
Dans certains cas, le traitement des commandes de configuration associées à un proxy gRPC cible et à une règle de transfert faisant référence à un proxy gRPC cible peut prendre jusqu'à une minute.
Les NEG de connectivité hybride (NEG
NON_GCP_PRIVATE_IP_PORT
) ne sont pas compatibles avec les clients gRPC sans proxy.
Limites du mappage d'URL
Les fonctionnalités de gestion du trafic de mappage d'URL suivantes sont compatibles avec les services gRPC sans proxy.
Fonctionnalités compatibles avec 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
Les limites de mappage d'URL suivantes s'appliquent lorsque vous utilisez des services gRPC sans proxy :
Les caractères génériques dans les règles d'hôte et les règles par défaut d'un mappage d'URL, y compris la règle d'hôte
*
créée implicitement d'un mappage d'URL, ne sont pas acceptés. Ces entrées sont ignorées lors de la mise en correspondance des hôtes.Les fonctionnalités suivantes ne sont pas compatibles :
queryParameterMatches
dansrouteRules
- Actions de routage
headerAction
,urlRewrite
,requestMirrorPolicy
,corsPolicy
eturlRedirect
- Action de routage
timeout
; utilisezmaxStreamDuration
au lieu detimeout
perTryTimeout
dansretryPolicy
retryConditions
dansretryPolicy
, à l'exception d'une ou plusieurs conditionscancelled
,deadline-exceeded
,internal
,resource-exhausted
etunavailable
- Les éléments
defaultService
,defaultRouteAction
,defaultUrlRedirect
etheaderAction
du mappage d'URL ne sont pas utilisés par les services gRPC sans proxy. Si une règle hostRule correspondante est introuvable lorsqu'un client gRPC sans proxy recherche un nom de service, Cloud Service Mesh renvoie une erreur de recherche de nom au lieu d'utiliser le service ou l'action par défaut du mappage d'URL. headerAction
dansweightedBackendServices
Dans les règles de correspondance des en-têtes de mappage d'URL, seules les métadonnées personnalisées non binaires spécifiées par l'utilisateur et l'en-tête
content-type
sont acceptées. Les en-têtes au niveau du transport suivants ne peuvent pas être utilisés dans les règles de correspondance des en-têtes ::authority
,:method
,:path
,:scheme
,user-agent
,accept-encoding
,content-encoding
,grpc-accept-encoding
,grpc-encoding
,grpc-previous-rpc-attempts
,grpc-tags-bin
,grpc-timeout
etgrpc-trace-bin
.Lorsque vous mettez à jour une règle d'hôte de mappage d'URL pour passer d'un service de backend à un autre, le trafic peut être supprimé momentanément lors de la transmission de la nouvelle configuration aux clients. Pour éviter cette situation, configurez la répartition du trafic avec des services de backend pondérés. Après avoir configuré la répartition du trafic, déplacez lentement le trafic de l'ancien service de backend vers le nouveau service de backend.
Limites du proxy gRPC cible
Lorsqu'un proxy gRPC cible référence un mappage d'URL, vous ne pouvez pas configurer les fonctionnalités de mappage d'URL suivantes. Cela est valable que vous utilisiez un proxy side-car ou un service gRPC sans proxy, car ces fonctionnalités spécifiques au protocole HTTP ne s'appliquent pas au protocole gRPC:
queryParameterMatches
règle de correspondance- Action de routage
urlRewrite
- Action de routage
urlRedirect
- Action
corsPolicy
Limites du service de backend
Les fonctionnalités de service de backend suivantes ne sont pas disponibles avec les services gRPC sans proxy avec un proxy side-car:
localityLbPolicy
, à l'exception deLEAST_REQUEST
(avec les clients Java uniquement),ROUND_ROBIN
etRING_HASH
sessionAffinity
, à l'exception deHEADER_FIELD
etNONE
consistentHash
, à l'exception des champshttpHeaderName
etminimumRingSize
affinityCookieTtlSec
timeoutSec
; utilisez plutôtmaxStreamDuration
circuitBreakers
, à l'exception du champmaxRequests
Notez qu'un client gRPC renvoie un accusé de réception négatif (NACK) sur la configuration de Cloud Service Mesh lorsque des valeurs non compatibles sont configurées. Cela va entraîner le rejet de la configuration par le client pour tous les services de backend, car le protocole xDS requiert actuellement de rejeter toutes les ressources d'une réponse donnée, plutôt que de ne pouvoir rejeter qu'une ressource individuelle. Cela entraîne le passage du canal client à un état d'erreur transitoire jusqu'à ce que la configuration soit corrigée. En raison de cette limitation, vous devez vous assurer que tous les clients acceptent la valeur requise avant de configurer une fonctionnalité pour un service. Par exemple, si vous remplacez la règle ROUND_ROBIN
par RING_HASH
, vous devez vous assurer que tous les clients sont mis à niveau vers une version compatible avec RING_HASH
.
Limites de la gestion du trafic avancée
Vous ne pouvez pas configurer certaines fonctionnalités avancées de gestion du trafic pour les services gRPC sans proxy avec Cloud Service Mesh. Pour connaître les fonctionnalités compatibles, consultez les ressources suivantes:
- Versions et langages gRPC compatibles
- Fonctionnalités de Cloud Service Mesh, y compris l'équilibrage de charge
Limites avec l'Annuaire des services
- L'Annuaire des services et Cloud Service Mesh ne garantissent pas la joignabilité du réseau pour les clients.
Un service de backend ne peut faire référence qu'à l'un des éléments suivants :
- Groupe d'instances géré ou groupe d'instances non géré
- Groupe de points de terminaison du réseau
- Liaisons de service
Les services de l'Annuaire des services ne peuvent être utilisés qu'avec des services de backend globaux avec
load-balancing-scheme=INTERNAL_SELF_MANAGED
.Un service de l'Annuaire des services référencé par une liaison de service peut être supprimé. Si le service de l'Annuaire des services sous-jacent auquel le service de backend est associé est supprimé, les applications qui utilisent Cloud Service Mesh ne peuvent pas envoyer de trafic vers ce service. Par conséquent, les requêtes échouent. Consultez la page Observabilité et débogage pour connaître les bonnes pratiques.
Lorsque vous liez un service de l'Annuaire des services à un service de backend, vous ne pouvez pas configurer de vérification de l'état sur ce service de backend.
Étape suivante
- Pour en savoir plus sur les limites applicables à Cloud Service Mesh, y compris les limites de la gestion avancée du trafic, consultez la section Limites de Cloud Service Mesh.
- Pour découvrir les cas d'utilisation et les modèles d'architecture applicables aux services gRPC sans proxy, consultez la page Présentation des services gRPC sans proxy.