IBM Cloud Docs
Implementazione delle applicazioni con gRPC

Implementazione delle applicazioni con gRPC

Con Code Engine, puoi configurare le tue applicazioni da eseguire come server gRPC per gestire le chiamate client sfruttando le funzioni gRPC.

gRPC è un framework RPC (remote procedure call) open source moderno che può collegare i servizi all'interno e tra i data center. Fornisce serializzazione binaria efficiente, streaming bidirezionale, bilanciamento del carico per client e server, traccia, controllo dell'integrità e autenticazione. Per ulteriori informazioni, vedi la documentazione digRPC.

Vantaggi dell'utilizzo di gRPC

gRPC fornisce diversi vantaggi nel facilitare le comunicazioni tra client e server. Un aspetto fondamentale di gRPC è definire un'interfaccia chiara che incapsula tutti i metodi e parametri disponibili per una chiamata remota. Sul lato server, questa interfaccia viene implementata per gestire e rispondere in modo efficace alle richieste del client.

Questo approccio di utilizzo di gRPC con le tue applicazioni Code Engine offre vantaggi.

  • Interoperabilità - i client e server gRPC possono essere eseguiti e comunicare tra loro in vari ambienti. Ad esempio, è possibile definire i server con il linguaggio Go, mentre i client sono definiti in Java.

  • Serializzazione - gRPC utilizza i buffer di protocollo per la serializzazione dei messaggi, che è più efficace in termini di dimensione e velocità, rispetto all'uso di JSON nelle API HTTP.

  • Streaming - gRPC supporta lo streaming bidirezionale in modo che i client e i server inviino e ricevano messaggi simultaneamente su una singola connessione.

  • Rilevamento degli errori - gRPC applica un contratto fortemente digitato tra client e server tramite i buffer di protocollo (file.proto ). Questo contratto garantisce che il client e il server concordino le interfacce e la struttura dei dati, che fornisce una migliore generazione di codice, convalida e gestione degli errori.

  • Sicurezza - gRPC supporta vari metodi di autenticazione e crittografia, incluso il TLS reciproco, che fornisce una comunicazione sicura tra client e server.

Configurazione delle applicazioni Code Engine per utilizzare gRPC

gRPC è supportato per le applicazioni Code Engine a livello di progetto, il che significa che la tua applicazione server Code Engine gRPC può servire solo il traffico ai client in esecuzione nello stesso progetto.

Devi utilizzare la CLI Code Engine per configurare un'applicazione gRPC Code Engine.

Prima di iniziare

Da Code Engine:

  1. Creare e distribuire un'applicazione con il comando ibmcloud ce application create. Per indicare che questa applicazione supporta gRPC, che utilizza HTTP/2 come modalità di trasporto, è necessario specificare l'opzione --port con il formato [NAME:]PORT; ad esempio, --port h2c:8080. Quando [NAME:] è h2c, la porta utilizza HTTP/2non codificato. Per impostazione predefinita, Code Engine presuppone che le applicazioni siano in attesa di connessioni in entrata sulla porta 8080.

    Nel seguente esempio, utilizzare myapp-grpcserver come nome dell'applicazione server e specificare icr.io/codeengine/grpc-server come immagine a cui fare riferimento.

    ibmcloud ce application create --name myapp-grpcserver --port h2c:8080 --min-scale 1 --image icr.io/codeengine/grpc-server
    
  2. Esegui il comando application get per visualizzare i dettagli sull'app.

    ibmcloud ce application get --name myapp-grpcserver
    

    Output di esempio

    [...]
    OK
    
    Name:               myapp-grpcserver
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Port:               h2c:8080
    [...]
    

Ora che la tua app server è creata e distribuita per utilizzare gRPC, devi distribuire un'applicazione client all'interno dello stesso progetto per accedere al server con gRPC. Per ulteriori informazioni sul codice di esempio Code Engine per la distribuzione di un'applicazione client e server gRPC, vedi Code Engine grpc esempio.

Le immagini di esempio Code Engine create dal repository di esempi IBM Cloud Code Engine in GitHub sono disponibili in IBM Cloud® Container Registry nello spazio dei nomi pubblico icr.io/codeengine.