O Google lançou a versão 1.0 do gRPC, estável e pronta para produção. O projeto é usado para comunicação entre serviços.
Originalmente, o gRPC era um projeto chamado "Stubby", usado para comunicação entre alguns dos serviços internos do Google. A empresa abriu o código do projeto 18 meses atrás - com a esperança de que outras equipes o usassem para consumir serviços do Google, realizar a comunicação entre serviços via internet, ou mesmo promover a comunicação entre produtos internos.
O gRPC é um sistema de RPC neutro a plataformas que usa o IDL de protocol buffers (Protobuf) que permite definir serviços de end-point e payloads (conteúdos) de mensagens a transferir, e faz a geração de stubs para múltiplas linguagens. O gRPC suporta 10 linguagens: C, C++, C#, GO, Java (incluindo Java para Android), Node.js, Objective-C, Python, PHP e Ruby - e as plataformas Linux, macOS e Windows. Há implementações nativas em C para Go e Java, e wrappers em volta da biblioteca C para as outras linguagens.
Um painel criado pelo Google mostra a latência de várias comunicações com o gRPC, entre duas instâncias de VMs no mesmo datacenter. Para mensagens seguras, síncronas e unárias, os gráficos indicam latências de 100 µs (microssegundos) para o Netperf base. Com C++, Java e C # as implementações reportam cerca de 200-300 µs de latência; Ruby, Python e Node.js apresentam 700, 900 e 1.100 µs, respectivamente.
As mensagens a serem transferidos são serializadas em formato binário usando o Protocol Buffers 3.0, que obtém melhor desempenho do que formatos textuais. Em comparação com JSON, o Protobuf pode reduzir o tamanho de uma mensagem à metade, usando apenas um terço do tempo para serialização/desserialização, de acordo com Kelsey Hightower, engenheiro do Google.
Além de oferecer suporte a RPCs unários (que consistem de um pedido seguido por uma resposta), o gRPC faz uso de HTTP/2 para proporcionar streaming unidirecional ou bidirecional entre cliente e servidor. A comunicação pode ser síncrona ou assíncrona. Também é suportada a autenticação via SSL/TLS ou OAuth2 (com APIs do Google).
Na nova versão do gRPC, o processo de instalação foi simplificado, sendo disponibilizados binários gRPC via CocoaPods, gem, Gradle, Maven, NPM, NuGet, pecl, pip, ou imagens Docker.
Uma série de empresas, incluindo Cisco, CoreOS, Juniper, Netflix e Square, estão usando o gRPC internamente, de acordo com o Google.