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 comunicazioni semplici e ad alte prestazioni tra i microservizi interni. Puoi utilizzare tutti i tipi gRPC, in modalità flusso o unario, con Cloud Run.
Possibili casi d'uso:
- Comunicazione tra microservizi interni.
- Carichi di dati elevati (gRPC utilizza buffer di protocollo, fino a sette volte più veloci delle chiamate REST).
- È necessaria solo una semplice definizione di servizio, non vuoi scrivere una libreria client completa.
- Utilizza i gRPC dei flussi di dati nel server gRPC per creare applicazioni e API più reattive.
Per integrare il tuo servizio con gRPC,
- Configura il tuo servizio per l'utilizzo di HTTP/2 se utilizzi gRPC per lo 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 ascoltare
la variabile di ambiente
PORT
. - Creare un client che invii richieste e gestisca le risposte dal server gRPC.
- Se vuoi, aggiungi l'autenticazione.
- Crea ed esegui il deployment del tuo servizio.
Configurazione del servizio per l'utilizzo di HTTP/2
Google consiglia di configurare il servizio per l'utilizzo di HTTP/2 se utilizzi gRPC con Cloud Run. Sebbene alcune semplici funzionalità gRPC 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 previsti elementi aggiuntivi o Cloud Run specifici da aggiungere alle definizioni del protocollo. 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 previsti elementi aggiuntivi o specifici di Cloud Run da aggiungere a un client che utilizza gRPC: segui i documenti gRPC sull'utilizzo delle definizioni dei servizi nel codice client e sui client di esempio forniti nei tutorial gRPC specifici del linguaggio.
In ascolto delle richieste gRPC in un servizio Cloud Run
L'unico requisito speciale per un server gRPC in esecuzione in Cloud Run è l'ascolto della porta specificata dalla variabile di ambiente PORT
, come mostrato nel codice:
Go
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, che è l'URL del servizio Cloud Run o il dominio personalizzato mappato a quel servizio, insieme alla porta 443, che è la porta che dovrebbe essere utilizzata da gRPC.
Go
Invio di richieste gRPC senza autenticazione
L'esempio seguente mostra come inviare una richiesta senza autenticazione, utilizzando una connessione gRPC configurata come accennato in precedenza.
Go
Invio di richieste gRPC con autenticazione
L'esempio seguente mostra come utilizzare l'autenticazione tra i servizi se il servizio chiamante chiama l'autorizzazione dell'invoker al servizio di destinazione. Tieni presente che questo codice crea un'intestazione di autorizzazione con il token di identità corretto: questo campo è obbligatorio. Le autorizzazioni richieste e l'intestazione di autorizzazione sono descritte in dettaglio nell'autenticazione da servizio a servizio.
Go
Codice di esempio per lo streaming gRPC
Per il codice campione, fai riferimento all'implementazione RouteGuide
nel tutorial di base di gRPC per il linguaggio a tua scelta. Ad esempio, per Go, consulta
Implementazione di RouteGuide.