Cos'è il gRPC?

Home » IT » Blog » Cos'è il gRPC?


* Questo post è il secondo della serie su gRPC


Cos'è gRPC?

Quando si sviluppa un'applicazione gRPC, la prima cosa da fare è definire un'interfaccia di servizio. La definizione dell'interfaccia del servizio contiene informazioni su come il vostro servizio può essere consumato dai consumatori, quali metodi permettete ai consumatori di chiamare da remoto, quali parametri di metodo e formati di messaggio usare quando si invocano questi metodi, ecc. Il linguaggio in cui si specifica la definizione del servizio è noto come Interface Definition Language (IDL) e in gRPC si usano Protocol Buffers. Inoltre, HTTP/2 è utilizzato per il trasporto delle informazioni.

Usando Protocol Buffers, potete generare codice lato server conosciuto come server skeleton, che semplifica la logica lato server fornendo astrazioni di comunicazione di basso livello. Potete anche generare del codice lato client, noto come stub client, che semplifica la comunicazione lato client con astrazioni per nascondere la comunicazione a basso livello per diversi linguaggi di programmazione. I metodi che sono specificati nella definizione dell'interfaccia del servizio possono essere invocati a distanza dal lato client con la stessa facilità con cui si invoca una funzione locale. gRPC gestisce tutte le complessità normalmente associate all'applicazione di rigorosi contratti di servizio, serializzazione dei dati, comunicazione di rete, autenticazione, controllo di accesso, osservabilità, ecc.

Lasciate che vi mostri un esempio per farvi capire meglio come funziona gRPC. Immaginate di costruire un ecommerce di bevande, composto da diversi microservizi. Vuoi che uno di loro fornisca i dettagli delle bevande che sono disponibili nella tua app. Il servizio DrinkInfo è modellato in modo tale da essere esposto attraverso la rete come un servizio gRPC.

La definizione del servizio è specificata nel file DrinkInfo.proto, che è usato sia dal lato server che da quello client per generare il codice. In questo esempio, ho assunto che il consumatore sia implementato usando Node e il server sia implementato usando Python. La comunicazione di rete tra il servizio e il consumatore avviene su HTTP/2.

Nel prossimo post entrerò nei dettagli di questa comunicazione gRPC.

Vorrei cogliere l'occasione per raccomandare alcuni libri che potrebbero essere di vostro interesse:



Learning HTTP/2: A Practical Guide for Beginners

Stephen Ludin


Modern API Development with Spring and Spring Boot: Design highly scalable and maintainable APIs with REST, gRPC, GraphQL, and the reactive paradigm

Sourabh Sharma