IBM Cloud Docs
Implementando aplicativos com o gRPC

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:

  1. 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:] for h2c, 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 porta 8080.

    No exemplo a seguir, use myapp-grpcserver como o nome do aplicativo do servidor e especifique icr.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
    
  2. Execute o comando application get para exibir os detalhes sobre o app

    ibmcloud 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.