Protocolo de chamada de procedimento remoto (RPC) em sistema distribuído

⚡ Resumo Inteligente

A Chamada de Procedimento Remoto (RPC, na sigla em inglês) é um protocolo de comunicação entre processos que permite que um programa execute um procedimento em outro espaço de endereço ou máquina, ocultando os detalhes da rede por trás de uma chamada de função local comum em sistemas distribuídos cliente-servidor.

  • 📞 Definição: RPC permite que um cliente invoque um procedimento em um servidor remoto como se fosse uma chamada local.
  • 🗂️ tipos: Os modos RPC de retorno de chamada, transmissão e lote diferem na forma como as solicitações são roteadas e enfileiradas.
  • ???? Architextura: Cinco partes cooperam em cada chamada: cliente, stub do cliente, ambiente de execução RPC, stub do servidor e servidor.
  • 🔄 Como Funciona: Os stubs organizam os parâmetros em uma mensagem e desseriam o resultado, retornando-o ao chamador.
  • ⚖️ Trocas: A RPC simplifica o código distribuído, mas adiciona sobrecarga de rede e pontos de falha em comparação com chamadas locais.
  • 🤖 Ângulo da IA: O gRPC serve modelos de aprendizado de máquina entre microsserviços, e o Copilot acelera a escrita de stubs RPC.

Chamada de Procedimento Remoto (RPC) em Sistemas Distribuídos

O que é RPC?

Chamada de procedimento remoto (RPC) é um comunicação entre processos Técnica utilizada em aplicações cliente-servidor. A sigla RPC significa Chamada de Procedimento Remoto. Os mecanismos de RPC são usados ​​quando um programa de computador faz com que um procedimento ou sub-rotina seja executado em um espaço de endereçamento diferente, codificado como uma chamada de procedimento normal, sem que o programador precise codificar explicitamente os detalhes da interação remota.

Essa chamada de procedimento também gerencia protocolos de transporte de baixo nível, como UDP e TCP/IP, para transportar os dados da mensagem entre os programas.

Tipos de RPC

Três tipos de RPC são:

  • RPC de retorno de chamada
  • RPC de transmissão
  • RPC em modo lote

RPC de retorno de chamada

Esse tipo de RPC possibilita um paradigma ponto a ponto (P2P) entre os processos participantes. Ele permite que um processo atue tanto como cliente quanto como servidor.

Funções do RPC de retorno de chamada:

  • Lida com problemas de aplicativos interativos processados ​​remotamente.
  • Fornece ao servidor o identificador do cliente.
  • O retorno de chamada faz com que o processo do cliente espere.
  • Gerencia impasses de retorno de chamada.
  • Isso facilita um paradigma de troca entre pares nos processos participantes.

RPC de transmissão

O Broadcast RPC é uma solicitação do cliente que é transmitida na rede e processada por todos os servidores que possuem o método para processar essa solicitação.

Funções de transmissão RPC:

  • Permite especificar que a mensagem de solicitação do cliente deve ser transmitida.
  • Você pode declarar portas de transmissão.
  • Isso ajuda a reduzir a carga na rede física.

RPC em modo lote

O RPC em modo batch ajuda a enfileirar solicitações RPC separadas em um buffer de transmissão no lado do cliente e, em seguida, enviá-las pela rede em um único lote para o servidor.

Funções do RPC em modo Batch:

  • Isso minimiza a sobrecarga envolvida no envio de uma solicitação, pois envia as solicitações pela rede em lote para o servidor.
  • Esse tipo de protocolo RPC é eficiente apenas para aplicações que necessitam de taxas de chamadas mais baixas.
  • Precisa de um protocolo de transmissão confiável.

RPC Archiarquitetura

A arquitetura RPC possui principalmente cinco componentes do programa:

  1. Clientes
  2. Esboço do cliente
  3. Tempo de execução RPC
  4. Esboço do servidor
  5. servidor

RPC Archiarquitetura

RPC Archiarquitetura

Como funciona o RPC?

Os seguintes passos ocorrem durante o processo RPC:

Passo 1) O cliente, o stub do cliente e uma instância do ambiente de execução RPC são executados na máquina do cliente.

Passo 2) O cliente inicia um processo stub do cliente passando parâmetros da maneira usual. O stub do cliente é armazenado no próprio espaço de endereçamento do cliente. Ele também solicita ao ambiente de execução RPC local que envie a solicitação ao stub do servidor.

Passo 3) Nesta etapa, o usuário acessa o RPC fazendo uma chamada de procedimento local comum. O ambiente de execução do RPC gerencia a transmissão de mensagens entre o cliente e o servidor pela rede. Ele também realiza as tarefas de retransmissão, confirmação, roteamento e criptografia.

Passo 4) Após a conclusão do procedimento do servidor, a execução retorna ao stub do servidor, que empacota (serializa) os valores de retorno em uma mensagem. O stub do servidor então envia a mensagem de volta para a camada de transporte.

Passo 5) Nesta etapa, a camada de transporte envia a mensagem de resultado de volta para a camada de transporte do cliente, que retorna a mensagem para o stub do cliente.

Passo 6) Nessa etapa, o stub do cliente desempacota (desdobra) os parâmetros de retorno no pacote resultante, e a execução retorna ao chamador.

Características do RPC

Aqui estão as características essenciais do RPC:

  • O procedimento chamado está em outro processo, que provavelmente reside em outra máquina.
  • Os processos não compartilham espaço de endereço.
  • Os parâmetros são passados ​​apenas por valores.
  • O RPC é executado no ambiente do processo do servidor.
  • Não oferece acesso ao ambiente do procedimento de chamada.

Recursos do RPC

Aqui estão os recursos importantes do RPC:

  • Sintaxe de chamada simples.
  • Oferece semântica conhecida.
  • Oferece uma interface bem definida.
  • Ele permite a comunicação entre processos na mesma máquina ou em máquinas diferentes.

Vantagens do RPC

Aqui estão as vantagens/benefícios do RPC:

  • RPC ajuda os clientes a se comunicarem com os servidores através do uso convencional de chamadas de procedimento em linguagens de alto nível.
  • O RPC é modelado na chamada de procedimento local, mas o procedimento chamado é muito provavelmente executado em um processo diferente e geralmente em um computador diferente.
  • O RPC suporta modelos orientados a processos e modelos orientados a threads.
  • O RPC oculta do usuário o mecanismo interno de troca de mensagens.
  • Ele compromete muitas das camadas do protocolo para melhorar o desempenho.
  • RPC fornece abstracção; por exemplo, a natureza de troca de mensagens da comunicação em rede permanece oculta para o usuário.
  • RPC pode ser usado tanto em ambientes distribuídos quanto locais.
  • O esforço necessário para reescrever e desenvolver novamente o código é mínimo.

Desvantagens do RPC

Aqui estão os contras/desvantagens de usar RPC:

  • A chamada de procedimento remoto passa parâmetros apenas por valores; valores de ponteiro (referência) não são permitidos.
  • O tempo de chamada (e retorno) para procedimentos remotos — a sobrecarga — é significativamente maior do que para um procedimento local.
  • Esse mecanismo é altamente vulnerável a falhas, pois envolve um sistema de comunicação, outra máquina e outro processo.
  • O conceito de RPC pode ser implementado de diferentes maneiras, portanto não existe um padrão único.
  • Não oferece flexibilidade para a arquitetura de hardware, pois é baseada principalmente em interação.
  • O custo do processo aumenta devido à chamada de procedimento remoto.

Perguntas Frequentes

RPC expõe ações como procedimentos remotos, enquanto REST expõe dados como recursos acessados ​​por meio de verbos HTTP. RPC dá a sensação de chamar uma função local; REST se concentra em recursos e estado.

gRPC é GoogleO framework RPC moderno e de alto desempenho do [nome da empresa]. Ele utiliza HTTP/2 e o protocolo [nome do protocolo]. Buffere suporta streaming bidirecional, tornando-o popular para comunicação entre microsserviços.

RPC pode ser ambos. Uma chamada síncrona bloqueia a execução até que o servidor retorne um resultado, enquanto uma chamada assíncrona retorna imediatamente e processa a resposta posteriormente. Frameworks como o gRPC suportam ambos os estilos.

RPC é uma forma de IPC que funciona entre máquinas separadas. Enquanto muitos métodos de IPC compartilham memória em um único host, o RPC troca mensagens por meio de uma rede, permitindo que processos em computadores diferentes cooperem.

As implementações comuns de RPC incluem gRPC, Apache Thrift, XML-RPC, JSON-RPC e Java RMI. Elas diferem no formato e no meio de transporte de dados, mas todas permitem que um cliente invoque um procedimento em um servidor remoto.

A RPC não é segura por padrão; a segurança depende do meio de transporte. Implementações adicionam criptografia TLS, tokens de autenticação e controles de acesso para proteger as chamadas.

As plataformas de aprendizado de máquina usam RPC, especialmente gRPC, para transmitir previsões de modelos entre microsserviços. Um cliente envia recursos e recebe um resultado de inferência.ping Sistemas de IA rápidos e com baixo acoplamento.

Sim. O GitHub Copilot pode gerar definições de serviço .proto, stubs de cliente e manipuladores de servidor para gRPC. Os desenvolvedores ainda devem revisar as interfaces geradas, o tratamento de erros e o controle de versão antes de implantar em produção.

Resuma esta postagem com: