Limitazioni gRPC senza proxy
Questo documento descrive le limitazioni che si applicano a Cloud Service Mesh con applicazioni gRPC senza proxy. Per informazioni sui limiti, consulta Quote e limiti.
Le limitazioni relative a regole di forwarding, mappe URL e proxy di destinazione si applicano solo a Cloud Service Mesh con le API di bilanciamento del carico di Google Cloud.
Limitazioni generali
Le limitazioni di Cloud Service Mesh con applicazioni gRPC senza proxy includono quanto segue:
Non puoi configurare servizi di backend e mappe di regole di routing con il protocollo gRPC nella console Google Cloud. Per queste risorse, la console Google Cloud è di sola lettura.
gRPC senza proxy supporta rilevamento degli endpoint, routing, bilanciamento del carico, reporting del carico e molte funzionalità avanzate di gestione del traffico.
Per la versione gRPC minima richiesta per supportare alcune funzionalità di gestione avanzata del traffico, consulta Versioni e lingue di gRPC supportate.
Per le tue applicazioni gRPC che richiedono funzionalità di gestione del traffico avanzate non supportate, utilizza il resolver del nome DNS anziché il resolver xDS ed esegui il deployment con proxy sidecar supportati con Cloud Service Mesh. Nel proxy gRPC di destinazione, imposta il campo
validateForProxyless
suFALSE
in modo da poter configurare funzionalità che non sono ancora supportate da gRPC, ma sono disponibili in Cloud Service Mesh con l'uso di proxy sidecar.
gRPC senza proxy supporta solo i criteri di bilanciamento del carico di tipo round-robin e hash circolare. Non sono supportati altri criteri di bilanciamento del carico.
- Cloud Service Mesh fornisce un elenco ponderato prioritario di località (un gruppo di istanze o un gruppo di endpoint di rete (NEG)) al client gRPC. Cloud Service Mesh calcola questo elenco in base alla zona più vicina disponibile, alla sua capacità e alla modalità di bilanciamento del servizio di backend.
- Per una richiesta specifica, il client gRPC scegli una o più località in base alla priorità e alla ponderazione ed esegue il bilanciamento del carico basato su hash "round-robin" o "ring" verso i backend all'interno di quelle località.
Il failover da una zona (località) a un'altra inizia quando la capacità attuale della zona scende al di sotto del 50%. Non puoi configurare questa soglia.
In alcuni casi, i comandi di configurazione relativi a un proxy gRPC di destinazione e a una regola di forwarding che fa riferimento a un proxy gRPC di destinazione potrebbe richiedere fino a un minuto.
I NEG di connettività ibrida (
NON_GCP_PRIVATE_IP_PORT
NEG) non sono supportati con client gRPC senza proxy.
Limitazioni delle mappe URL
Le seguenti funzionalità di gestione del traffico della mappa URL sono supportate con i servizi gRPC senza proxy.
Funzionalità supportate in pathMatcher
di 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
Quando utilizzi servizi gRPC senza proxy si applicano le seguenti limitazioni delle mappe di URL:
I caratteri jolly nelle regole host e nelle regole predefinite di una mappa URL, compresa la regola host
*
creata implicitamente di una mappa URL, non sono supportati. Queste voci vengono ignorate quando viene eseguita la corrispondenza dell'host.Le seguenti funzionalità non sono supportate:
queryParameterMatches
inrouteRules
- Azioni relative al percorso
headerAction
,urlRewrite
,requestMirrorPolicy
,corsPolicy
eurlRedirect
- Azione di route
timeout
; usamaxStreamDuration
anzichétimeout
perTryTimeout
inretryPolicy
retryConditions
inretryPolicy
tranne una o più condizioni dicancelled
,deadline-exceeded
,internal
,resource-exhausted
eunavailable
defaultService
,defaultRouteAction
,defaultUrlRedirect
eheaderAction
della mappa URL non vengono utilizzati dai servizi gRPC senza proxy. Se non viene trovata una regola host corrispondente quando un client gRPC senza proxy cerca il nome di un servizio, Cloud Service Mesh restituisce un errore di ricerca del nome anziché utilizzare l'azione o il servizio predefiniti della mappa URL.headerAction
inweightedBackendServices
Nelle regole di corrispondenza dell'intestazione della mappa URL, sono supportati solo i metadati personalizzati specificati dall'utente non binari e l'intestazione
content-type
. Le seguenti intestazioni a livello di trasporto non possono essere utilizzate nelle regole di corrispondenza delle intestazioni::authority
,:method
,:path
,:scheme
,user-agent
,accept-encoding
,content-encoding
,grpc-accept-encoding
,grpc-encoding
,grpc-previous-rpc-attempts
,grpc-tags-bin
,grpc-timeout
egrpc-trace-bin
.Quando aggiorni una regola host di una mappa URL per passare da un servizio di backend all'altro, il traffico potrebbe essere interrotto temporaneamente mentre la nuova configurazione viene inviata ai client. Per evitare questa limitazione, configura la suddivisione del traffico con servizi di backend ponderati. Dopo aver configurato la suddivisione del traffico, sposta lentamente il traffico dal vecchio servizio di backend a quello nuovo.
Limitazioni del proxy gRPC di destinazione
Quando un proxy gRPC di destinazione fa riferimento a una mappa URL, non puoi configurare le seguenti funzionalità di mappa degli URL. Questo vale sia per l'utilizzo di un proxy sidecar che di un servizio gRPC proxyless, poiché queste funzionalità specifiche del protocollo HTTP non si applicano al protocollo gRPC:
queryParameterMatches
regola di corrispondenzaurlRewrite
azione routeurlRedirect
azione routecorsPolicy
azione
Limitazioni del servizio di backend
Le seguenti funzionalità del servizio di backend non sono supportate con i servizi gRPC senza proxy con un proxy sidecar:
localityLbPolicy
eccettoLEAST_REQUEST
(solo con client Java),ROUND_ROBIN
eRING_HASH
sessionAffinity
tranneHEADER_FIELD
eNONE
consistentHash
tranne i campihttpHeaderName
eminimumRingSize
affinityCookieTtlSec
timeoutSec
; usa invecemaxStreamDuration
circuitBreakers
tranne il campomaxRequests
Tieni presente che un client gRPC eseguirà l'NACK della configurazione da Cloud Service Mesh quando vengono configurati valori non supportati. Di conseguenza, la configurazione di tutti i servizi di backend viene rifiutata dal client perché il protocollo xDS richiede il rifiuto di tutte le risorse in una determinata risposta, anziché la possibilità di rifiutare solo una singola risorsa della risposta. In questo modo il canale client entra in uno stato di errore temporaneo fino a quando la configurazione non viene corretta. A causa di questa limitazione, è necessario assicurarsi che tutti i client supportino il valore richiesto prima di configurare una funzionalità per un servizio. Ad esempio, se modifichi il criterio ROUND_ROBIN
in RING_HASH
, devi assicurarti che venga eseguito l'upgrade di tutti i client a una versione che supporta RING_HASH
.
Limitazioni per la gestione avanzata del traffico
Non puoi configurare alcune funzionalità di gestione avanzata del traffico per i servizi gRPC senza proxy con Cloud Service Mesh. Di seguito sono riportate le funzionalità supportate:
- Versioni e linguaggi di gRPC supportati
- Funzionalità di Cloud Service Mesh, tra cui il bilanciamento del carico
Limitazioni con Service Directory
- Service Directory e Cloud Service Mesh non garantiscono la connettività della rete per i clienti.
Un servizio di backend può fare riferimento solo a uno dei seguenti elementi:
- Gruppo di istanze gestite o non gestite
- Gruppo di endpoint di rete
- Associazioni dei servizi
I servizi Service Directory possono essere utilizzati solo con i servizi di backend globali con
load-balancing-scheme=INTERNAL_SELF_MANAGED
.Un servizio Service Directory a cui fa riferimento un'associazione di servizi può essere eliminato. Se il servizio Service Directory sottostante a cui è collegato il servizio di backend viene eliminato, le applicazioni che utilizzano Cloud Service Mesh non possono inviare traffico a questo servizio, di conseguenza le richieste non vanno a buon fine. Per le best practice, consulta Osservabilità e debug.
Quando associ un servizio Service Directory a un servizio di backend, non puoi configurare un controllo di integrità su quel servizio.
Passaggi successivi
- Per saperne di più sulle limitazioni che si applicano a Cloud Service Mesh, incluse le limitazioni avanzate per la gestione del traffico, consulta le limitazioni di Cloud Service Mesh.
- Per trovare casi d'uso e pattern di architettura per i servizi gRPC senza proxy, consulta la panoramica sui servizi gRPC senza proxy.