Limitazioni di gRPC senza proxy
Questo documento descrive le limitazioni che si applicano a Cloud Service Mesh con applicazioni gRPC proxyless. Per informazioni sui limiti, consulta Quote e limiti.
Le limitazioni relative a regole di inoltro, 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 proxyless includono quanto segue:
Non puoi configurare i servizi di backend e le mappe delle regole di routing con il protocollo gRPC nella console Google Cloud. Per queste risorse, la console Google Cloud è di sola lettura.
gRPC proxyless supporta il rilevamento degli endpoint, il routing, il bilanciamento del carico, i report sul 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 Lingue e versioni gRPC supportate.
Per le applicazioni gRPC che richiedono funzionalità di gestione avanzata del traffico non supportate, utilizza il resolver dei nomi DNS anziché il resolver xDS e esegui il deployment con i proxy sidecar supportati da Cloud Service Mesh. Nel proxy gRPC di destinazione, imposta il campo
validateForProxyless
suFALSE
in modo da poter configurare funzionalità non ancora supportate da gRPC, ma disponibile in Cloud Service Mesh con l'utilizzo di proxy sidecar.
gRPC proxyless supporta solo i criteri di bilanciamento del carico round-robin e hash ad anello. Altri criteri di bilanciamento del carico non sono supportati.
- Cloud Service Mesh fornisce al client gRPC un elenco ponderato con priorità delle località, ovvero un gruppo di istanze o un gruppo di endpoint di rete (NEG). Cloud Service Mesh calcola questo elenco in base alla zona disponibile più vicina, alla sua capacità e alla modalità di bilanciamento del servizio di backend.
- Per una determinata richiesta, il client gRPC sceglie una o più località in base alla priorità e al peso e esegue il bilanciamento del carico con metodo round-robin o basato su hash ad anello per i backend all'interno di queste località.
Il failover da una zona (località) a un'altra inizia quando la capacità della zona attuale 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 potrebbero richiedere fino a un minuto.
I NEG di connettività ibrida (NEG
NON_GCP_PRIVATE_IP_PORT
) non sono supportati con i client gRPC senza proxy.
Limitazioni delle mappe URL
Le seguenti funzionalità di gestione del traffico della mappa URL sono supportate con i servizi gRPC proxyless.
Funzionalità supportate nella versione 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 i servizi gRPC senza proxy, si applicano le seguenti limitazioni alla mappa di URL:
I caratteri jolly nelle regole host e nelle regole predefinite di una mappa URL, inclusa la regola host
*
creata implicitamente di una mappa URL, non sono supportati. Queste voci vengono ignorate al termine della corrispondenza dell'host.Le seguenti funzionalità non sono supportate:
queryParameterMatches
inrouteRules
headerAction
,urlRewrite
,requestMirrorPolicy
,corsPolicy
eurlRedirect
azioni di routingtimeout
azione di routing; utilizzamaxStreamDuration
anzichétimeout
perTryTimeout
inretryPolicy
retryConditions
inretryPolicy
, tranne una o più condizioni dicancelled
,deadline-exceeded
,internal
,resource-exhausted
, eunavailable
defaultService
,defaultRouteAction
,defaultUrlRedirect
eheaderAction
della mappa degli URL non vengono utilizzati dai servizi gRPC senza proxy. Se non viene trovata una regola di host corrispondente quando un client gRPC senza proxy cerca un nome di servizio, Cloud Service Mesh restituisce un errore di ricerca del nome anziché utilizzare il servizio o l'azione predefiniti della mappa di URL.headerAction
inweightedBackendServices
Nelle regole di corrispondenza dell'intestazione della mappatura degli URL, sono supportati solo i metadati personalizzati non binari specificati dall'utente e l'intestazione
content-type
. I seguenti header a livello di trasporto non possono essere utilizzati nelle regole di corrispondenza degli header::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 della mappa di URL per passare da un servizio di backend a un 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 al nuovo servizio di backend.
Limitazioni del proxy gRPC di destinazione
Quando un proxy gRPC di destinazione fa riferimento a una mappa URL, non puoi configurare le seguenti funzionalità della mappa URL. Questo vale sia se utilizzi un proxy sidecar sia se utilizzi un servizio gRPC senza proxy, perché 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à servizio di backend non sono supportate con i servizi gRPC senza proxy con un proxy sidecar:
localityLbPolicy
, ad eccezione diLEAST_REQUEST
(solo con client Java),ROUND_ROBIN
eRING_HASH
sessionAffinity
, ad eccezione diHEADER_FIELD
eNONE
consistentHash
, ad eccezione dei campihttpHeaderName
eminimumRingSize
affinityCookieTtlSec
timeoutSec
; utilizzamaxStreamDuration
circuitBreakers
, ad eccezione del campomaxRequests
Tieni presente che un client gRPC rifiuterà la configurazione da Cloud Service Mesh
quando sono configurati valori non supportati. Ciò comporterà il rifiuto da parte del client della configurazione di tutti i servizi di backend perché il protocollo xDS richiede il rifiuto di tutte le risorse in una determinata risposta, anziché la possibilità di rifiutare solo una singola risorsa dalla risposta. Di conseguenza, il canale del cliente entrerà in uno stato di errore transitorio finché la configurazione non verrà corretta. A causa di questa limitazione, devi assicurarti 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 su tutti i client venga eseguito l'upgrade a una versione che supporti RING_HASH
.
Limitazioni della gestione avanzata del traffico
Non puoi configurare alcune funzionalità di gestione avanzata del traffico per i servizi gRPC proxyless con Cloud Service Mesh. Per le funzionalità supportate, consulta quanto segue:
- Versioni e lingue gRPC supportate
- Funzionalità di Cloud Service Mesh, tra cui il bilanciamento del carico
Limitazioni di Service Directory
- Service Directory e Cloud Service Mesh non garantiscono la raggiungibilità della rete per i client.
Un servizio di backend può fare riferimento solo a uno dei seguenti elementi:
- Gruppo di istanze gestite o gruppo di istanze 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
.È possibile eliminare un servizio Service Directory a cui fa riferimento un'associazione di servizi. Se il servizio Service Directory di base a cui è collegato il servizio di backend viene eliminato, le applicazioni che utilizzano Cloud Service Mesh non possono inviare traffico a questo servizio, pertanto le richieste non vanno a buon fine. Per le best practice, consulta Osservabilità e debug.
Quando colleghi un servizio Service Directory a un servizio di backend, non puoi configurare un controllo di integrità su quel servizio di backend.
Passaggi successivi
- Per scoprire le limitazioni che si applicano a Cloud Service Mesh, incluse quelle avanzate per la gestione del traffico, consulta Limitazioni di Cloud Service Mesh.
- Per trovare casi d'uso e pattern di architettura per i servizi gRPC senza proxy, consulta la panoramica dei servizi gRPC senza proxy.