Comandos:
na pasta ssl rodar: chmod +x ssl.sh
depois: ./ssl.sh
make greet
protoc -Igreet/proto --go_out=. --go_opt=module=github.com/Jennyads/gRPC_Master_Class --go-grpc_out=. --go-grpc_opt=module=github.com/Jennyads/gRPC_Master_Class greet/proto/dummy.proto
Na prática, um RPC permite que um programa cliente execute um procedimento (ou função) em um servidor remoto, como se estivesse chamando uma função local, sem a necessidade de lidar diretamente com os detalhes da comunicação entre os sistemas. Isso simplifica o desenvolvimento de sistemas distribuídos, pois permite que os desenvolvedores se concentrem na lógica de negócios dos aplicativos, enquanto o RPC cuida da comunicação entre os diferentes componentes.
Existem diferentes implementações de RPC, incluindo o gRPC, que é uma implementação moderna e eficiente baseada no protocolo HTTP/2 e no formato de serialização de dados protobuf. Essas implementações fornecem recursos adicionais, como streaming bidirecional, autenticação e segurança, tornando o RPC uma opção poderosa para o desenvolvimento de sistemas distribuídos e comunicação entre microsserviços.
Uma característica importante do HTTP/2 é o conceito de Server Push, onde o servidor pode enviar múltiplas mensagens em resposta a uma única solicitação do cliente, permitindo que o cliente receba dados adicionais sem precisar solicitar explicitamente. Isso otimiza o processo de comunicação entre cliente e servidor, reduzindo a latência e melhorando a eficiência.
Além disso, o HTTP/2 utiliza a multiplexação, o que significa que várias mensagens podem ser transmitidas simultaneamente através da mesma conexão TCP. Isso permite uma utilização mais eficiente dos recursos de rede e acelera o carregamento de páginas e aplicativos web.
Em relação à estrutura dos dados, o HTTP/1 utiliza cabeçalhos de texto simples, o que pode aumentar a latência devido ao tamanho dos cabeçalhos. Já o HTTP/2 compacta os cabeçalhos e os dados em formato binário, resultando em cargas úteis mais leves e uma comunicação mais eficiente entre cliente e servidor.
Quanto ao gRPC, é um framework de comunicação remota que utiliza o HTTP/2 como seu protocolo de transporte padrão. No gRPC, o servidor opera de forma assíncrona, o que significa que pode lidar com múltiplas solicitações simultaneamente sem bloqueio. O cliente, por sua vez, pode operar de forma assíncrona ou síncrona, dependendo das necessidades da aplicação. Isso oferece flexibilidade na implementação de sistemas distribuídos e melhora o desempenho em comparação com abordagens tradicionais de comunicação remota.