Comunicação Conteúdo Comunicação entre processos Fundamentos Chamada de procedimento remoto Comunicação entre processos A comunicação entre processos é uma das principais funcionalidades em um sistema distribuído. Uma vez que os componentes estão trabalhando cooperativamente, é importante que troquem informações para que o trabalho ocorra da maneira desejada. Existem várias formas de comunicação entre processos, mas todas seguem alguns fundamentos básicos. Fundamentos Protocolos em camada A comunicação em sistemas distribuídos nos quais os componente são executados em maquinas disjuntas é feito a partir de troca de mensagens (isso, porque não há um meio compartilhado para comunicação). Assim, para que os sistemas se comuniquem, mensagens tem que ser compostas, enviadas e recebidas em um protocolo (linguagem) que seja comum às partes em comunicação. Fundamentos Protocolos em camada Cada tecnologia pode possuir seu próprio protocolo de comunicação. Mas, isso geraria caos e incompatibilidade entre os Sistemas. Por esse motivo, um organismo internacional (ISO International Organization for Standardization) desenvolveu um modelo de referência para padronizar as diversas camadas envolvidas em uma comunicação via rede. Esse modelo é conhecido como OSI, ou Open Systems Interconnection Reference Model). Fundamentos A padronização de protocolos rotulou dois tipos básicos de protocolo: Protocolos orientados a conexão Nestes, antes da troca de dados, receptor e transmissor estabelecem uma conexão (virtual ou não) e podem negociar vários parâmetros da comunicação Protocolos sem conexão Nestes, não há conexão formal estabelecida. A troca é feita imediatamente após a formação da mensagem, não havendo espaço para negociação de parâmetros. Fundamentos Protocolos em camada No modelo OSI a comunicação é dividida em até 7 camadas/protocolos, a saber: Protocolo de camada física Protocolo de enlace Protocolo de rede Protocolo de transporte Protocolo de sessão Protocolo de apresentação Protocolo de aplicativo Fundamentos Protocolos em camada A cada camada, cabeçalhos podem/são adicionados à mensagem do lado receptor. Esses são decodificados do lado receptor, permitindo a comunicação entre camadas do mesmo nível em máquinas diferentes. Os protocolos são comumente divididos em três grupos didaticamente semelhantes: Protocolos de baixo nível Protocolos de transporte Protocolos de alto nível Fundamentos Protocolos em camada Há ainda um outro grupo de protocolos que não seguem propriamente o modelo OSI. São denominados protocolos de middleware e, como o nome indica, são utilizados em frameworks/aplicativos middleware. Sendo mais complexos e variados, os aplicativos de middleware pode possuir uma diversidade de protocolos próprios. A discussão mais detalhada sobre middleware e seus protocolos será retomada mais à frente no curso. Fundamentos Protocolos em camada Porém, a título de ilustração, podemos vislumbrar dois parâmetros diferentes de comunicação que podem ser oferecidos por aplicativos de middleware: Comunicação Persistente X Comunicação Transiente Comunicação Síncrona X Comunicação Assíncrona Chamada de Procedimento Remoto Remote Procedure Call (RPC) A troca de mensagens entre processos em sistemas distribuídos feita com procedimentos send/receive exige que o programador conheça, além da arquitetura do SD, os conceitos relativos a comunicação em rede. Para minimizar a necessidade desses conhecimentos um método foi concebido para abstrair a troca de mensagens entre processos em máquinas disjuntas. Esse método é o RPC. Chamada de Procedimento Remoto Característica do RPC Permite a chamada de um procedimento em uma máquina por um programa sendo executado em outra máquina. Em um RPC, um programa em uma máquina P, (o cliente) chama um procedimento em uma máquina Q, (o servidor) enviando os parâmetros adequados. O cliente é suspenso e a execução do procedimento começa. Os resultados são enviados da máquina Q para a máquina P e o cliente é acordado. Chamada de Procedimento Remoto Característica do RPC Toda função que pode ser chamada à distância édefinida no lado do cliente por uma procedure chamada stub client. Essa procedure recebe os parâmetros e os coloca em uma mensagem, adicionando a identificação da procedure chamada e transmite essa mensagem ao processo/processador servidor. Chamada de Procedimento Remoto Característica do RPC O servidor, quando recebe a mensagem, procede a extração dos parâmetros e chama a procedure especificada na mensagem. No fim da execução da procedure, é realizada a operação inversa: Colocação dos resultados e envio da mensagem de resposta ao processo cliente. Chamada de Procedimento Remoto Característica do RPC A procedure que realiza essa operação é chamada de stub server. Finalmente, a procedure stub client recebe os resultados, termina e retorna o controle ao cliente . Chamada de Procedimento Remoto Característica do RPC O funcionamento desse modelo coloca em jogo cinco elementos: O processo cliente; O processo servidor; O procedimento chamado à distância; O procedimento stub client ; O procedimento stub server. Chamada de Procedimento Remoto Modelo do RPC