Implementando aplicativos com o gRPC
Com o Code Engine, é possível configurar seus aplicativos para executar como servidores gRPC para manipular chamadas do cliente, aproveitando os recursos gRPC.
gRPC é uma estrutura de chamada de procedimento remoto (RPC) de alto desempenho de software livre moderna que pode conectar serviços em e entre data centers. Fornece serialização binária eficiente, fluxo bidirecional, balanceamento de carga para cliente e servidores, rastreio, verificação de funcionamento e autenticação.. Para obter mais informações, consulte gRPC documentação.
Benefícios de usar gRPC
O gRPC fornece várias vantagens em facilitar as comunicações entre clientes e servidores Um aspecto fundamental do gRPC é definir uma interface clara que encapsule todos os métodos e parâmetros disponíveis para uma chamada remota No lado do servidor, essa interface é implementada para manipular e responder às solicitações do cliente de forma efetiva
Essa abordagem de trabalhar com gRPC com seus aplicativos Code Engine oferece benefícios.
-
Interoperabilidade-clientes e servidores do gRPC podem executar e se comunicar entre si em vários ambientes. Por exemplo, é possível definir seus servidores com a linguagem Go, enquanto seus clientes são definidos em Java
-
Serialização- gRPC usa buffers de protocolo para a serialização de mensagens, que é mais eficiente em termos de tamanho e velocidade do que usar JSON em APIs HTTP
-
Fluxo- gRPC suporta fluxo bidirecional para que clientes e servidores enviem e recebam mensagens simultaneamente em uma única conexão.
-
Detecção de erro- gRPC impinge um contrato fortemente digitado entre o cliente e o servidor por meio dos buffers de protocolo (arquivos
.proto
).. Esse contrato assegura que o cliente e o servidor concordem com interfaces e estrutura de dados, o que fornece melhor geração de código, validação e manipulação de erros. -
Segurança- gRPC suporta vários métodos de autenticação e criptografia, incluindo TLS mútuos, que fornece comunicação segura entre o cliente e o servidor
Configurando aplicativos Code Engine para usar o gRPC
gRPC é suportado para aplicativos Code Engine em um nível de projeto, o que significa que seu aplicativo do servidor Code Engine gRPC pode servir apenas o tráfego para clientes que são executados no mesmo projeto.
Deve-se usar a CLI do Code Engine para configurar um aplicativo Code Engine gRPC.
Antes de Iniciar
Em Code Engine:
- Configure o seu ambiente da CLI do Code Engine.
- Crie um projeto.
-
Crie e implemente um aplicativo com o comando
ibmcloud ce application create
Para indicar que esse aplicativo suporta gRPC, que usa HTTP/2 como um modo de transporte, você deve especificar a opção--port
com o formato[NAME:]PORT
; por exemplo,--port h2c:8080
. Quando[NAME:]
forh2c
, a porta usará o HTTP/2 não criptografado. Por padrão, o Code Engine assume que os apps atendem as conexões recebidas na porta8080
.No exemplo a seguir, use
myapp-grpcserver
como o nome do aplicativo do servidor e especifiqueicr.io/codeengine/grpc-server
como a imagem para referência.ibmcloud ce application create --name myapp-grpcserver --port h2c:8080 --min-scale 1 --image icr.io/codeengine/grpc-server
-
Execute o comando
application get
para exibir os detalhes sobre o appibmcloud ce application get --name myapp-grpcserver
Saída de exemplo
[...] OK Name: myapp-grpcserver ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Port: h2c:8080 [...]
Agora que seu app do servidor foi criado e implementado para usar gRPC, deve-se implementar um aplicativo cliente dentro do mesmo projeto para acessar o servidor com gRPC. Para obter mais informações sobre o código de amostra Code Engine para
implementar um servidor gRPC e o aplicativo cliente, consulte Code Engine grpc
amostra.
As imagens de amostra do Code Engine que são construídas a partir do repositório de amostras do IBM Cloud Code Engine no GitHub estão disponíveis em IBM Cloud®
Container Registry no namespace público do icr.io/codeengine
.