Questa pagina mostra i dettagli specifici di Cloud Run per gli sviluppatori che vogliono utilizzare gRPC per connettere un servizio Cloud Run ad altri servizi, ad esempio per fornire una comunicazione semplice e ad alte prestazioni tra microservizi interni. Puoi utilizzare tutti i tipi di gRPC, streaming o unari, con Cloud Run.
I possibili casi d'uso includono:
- Comunicazione tra microservizi interni.
- Carichi elevati di dati (gRPC utilizza buffer di protocollo, che sono fino a sette volte più veloci delle chiamate REST).
- È necessaria solo una semplice definizione del servizio, non vuoi scrivere una libreria client completa.
- Utilizza gRPC di streaming nel server gRPC per creare applicazioni e API più reattive.
Per integrare il servizio con gRPC:
- Configura il servizio in modo che utilizzi HTTP/2 se utilizzi gRPC di streaming. HTTP/2 è il metodo di trasporto per lo streaming gRPC.
- Definisci i messaggi di richiesta e le risposte in un file proto e compilali.
- Crea un server gRPC per gestire le richieste e restituire le risposte: deve essere in ascolto della variabile di ambiente
PORT. - Crea un client che invia richieste e gestisce le risposte dal server gRPC.
- (Facoltativo) Aggiungi l'autenticazione.
- Crea ed esegui il deployment del servizio.
Configurazione del servizio per l'utilizzo di HTTP/2
Google consiglia di configurare il servizio in modo che utilizzi HTTP/2 se utilizzi gRPC con Cloud Run. Sebbene alcune funzionalità gRPC semplici funzionino senza utilizzare HTTP/2, molte funzionalità gRPC, come lo streaming e i metadati, richiedono HTTP/2.
Definizione e compilazione dei messaggi in un file proto
Non sono necessari elementi aggiuntivi o specifici di Cloud Run da aggiungere alle definizioni proto. Come per qualsiasi altro utilizzo di gRPC, utilizzi i buffer di protocollo gRPC per le definizioni dei servizi e la serializzazione dei dati.
Creazione di un client gRPC
Non sono necessari elementi aggiuntivi o specifici di Cloud Run da aggiungere a un client che utilizza gRPC: segui la documentazione di gRPC sull'utilizzo delle definizioni dei servizi nel codice client e i client di esempio forniti nei tutorial gRPC specifici per la lingua.
Scalabilità automatica e bilanciamento del carico
Cloud Run utilizza bilanciatori del carico gestiti da Google che mantengono connessioni separate tra i client e le istanze di Cloud Run. Con gRPC, la scalabilità automatica si comporta nel seguente modo:
- Le connessioni gRPC dai client terminano al bilanciatore del carico perimetrale. La modifica delle impostazioni
KeepAliveinfluisce solo sulla connessione al bilanciatore del carico, non sulle istanze di Cloud Run. Il client non riconosce quando un'istanza viene eliminata. - Durante la riduzione della scalabilità, il bilanciatore del carico chiude le connessioni inviando messaggi GOAWAY alle istanze di backend durante l'arresto.
- Durante l'aumento della scalabilità, il bilanciatore del carico crea nuove connessioni alle istanze di backend. Tutte queste operazioni sono trasparenti per i client.
- Durante la scalabilità automatica, molte istanze possono essere avviate ed eseguire il multiplexing in una singola connessione tra il client e il bilanciatore del carico proxy.
- La concorrenza è determinata dal numero massimo di richieste in parallelo per istanza per i messaggi. Nello streaming, ogni stream viene conteggiato una volta rispetto al numero massimo di richieste in parallelo.
Ascolto delle richieste gRPC in un servizio Cloud Run
L'unico requisito speciale per un server gRPC in esecuzione in Cloud Run è l'ascolto sulla porta specificata dalla variabile di ambiente PORT, come mostrato nel seguente codice:
Vai
Apertura di una connessione gRPC a un servizio
Per aprire una connessione gRPC a un servizio in modo da poter inviare messaggi gRPC, devi specificare il dominio host, ovvero l'URL del servizio Cloud Run o il dominio personalizzato mappato a quel servizio, insieme alla porta 443, che è la porta che gRPC dovrebbe utilizzare.
Vai
Invio di richieste gRPC senza autenticazione
Il seguente esempio mostra come inviare una richiesta senza autenticazione, utilizzando una connessione gRPC configurata come indicato in precedenza.
Vai
Invio di richieste gRPC con autenticazione
Il seguente esempio mostra come utilizzare l'autenticazione tra i servizi, se il servizio chiamante dispone dell'autorizzazione di invoker per il servizio ricevente. Tieni presente che questo codice crea un'intestazione di autorizzazione con il token di identità corretto: questo è obbligatorio. Le autorizzazioni richieste e l'intestazione di autorizzazione sono descritte in dettaglio in Autenticazione da servizio a servizio.
Vai
Codice campione per lo streaming gRPC
Per il codice campione, consulta l'implementazione di RouteGuide nel
gRPC Basics tutorial per la
lingua che preferisci. Quando utilizzi Go, ad esempio, consulta
Implementazione di RouteGuide.