Questa pagina mostra i dettagli specifici di Knative Serving per gli sviluppatori che vogliono utilizzare gRPC per connettere un servizio Knative Serving ad altri servizi, ad esempio per fornire una comunicazione semplice e ad alte prestazioni tra microservizi interni. Knative Serving supporta sia le chiamate gRPC unarie sia quelle di streaming.
gRPC unario
In una chiamata RPC unaria, il client invia una singola richiesta al server e riceve una singola risposta, in modo simile a una normale chiamata di funzione:rpc SayHello(HelloRequest) returns (HelloResponse);
Streaming gRPC
Le seguenti opzioni di streaming sono disponibili con gRPC. RPC di streaming del server in cui il client invia una richiesta al server e riceve uno stream da leggere contenente una sequenza di messaggi. Il client legge lo stream restituito finché non ci sono altri messaggi.
rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);
RPC di streaming del client in cui il client scrive una sequenza di messaggi e li invia al server in uno stream. Al termine della scrittura dei messaggi, il client attende che il server restituisca la risposta.
rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
RPC di streaming bidirezionali in cui client e server inviano messaggi in due stream di lettura-scrittura che operano in modo indipendente.
rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
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.
Per integrare il servizio con 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.
- Se vuoi, aggiungi l'autenticazione.
- Crea e implementa il servizio.
Definizione e compilazione dei messaggi in un file proto
Non sono necessari elementi aggiuntivi o specifici di Knative Serving 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 Knative Serving 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.
Ascolto delle richieste gRPC in un servizio Knative Serving
L'unico requisito speciale per un server gRPC in esecuzione in Knative Serving è l'ascolto sulla porta specificata dalla variabile di ambiente PORT, come mostrato nel 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 Knative Serving 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 descritto in precedenza.