Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo
Comunicação em sistemas distribuídos é um ponto fundamental é necessário estudar a maneira em que os processos em diferentes máquinas podem trocar informações. a comunicação sempre é feita através de troca de mensagens diferentes dos sistemas centralizados onde esse processo pode ser feito através de primitivas baseadas em memória compartilhada.
Ao trocar mensagens duas ou mais máquinas devem concordar em, por exemplo: Onde começa e onde termina os bits de que compõe a mensagem (característica de enlace de dados); Onde, quando e como os erros serão detectados; Como dados primitivos como caracteres, inteiros, números serão representados e com que precisão. etc. Portanto, para tornar fácil é necessário que os sistemas obedeçam um padrão de interfaces e regras de comunicação (Sistema Aberta).
Características -troca de mensagens (send e receive) -send / receive (remetente / destinatário) - comunicação síncrona (bloqueante) - os processos são sincronizados a cada mensagem - comunicação assíncrona (não bloqueante) - o processo pode prosseguir sem precisar aguardar o outro processo retornar a mensagem - destino da mensagem (endereço + porta)
Características - destino de mensagem Destino identificados pelo par(endereco IP, porta) Os processos podem usar várias portas para receber mensagens Qualquer processo que saiba o número de uma porta pode enviar uma mensagem pra ela. Você percebe algum problema? Transparência de localização -> Serviço de Nomes
Características - Comunicação confiável validade: garantia de entrega integridade: mensagens não corrompidas, sem duplicação - Ordenação algumas aplicações tratam mensagens recebidas fora de ordem como falha
Modelo OSI 7 Camadas Cada camada trata de um aspecto da comunicação Cada camada prover uma interface as adjacentes Operações que definem os serviços da camada Cabeçalhos e finalizadores podem ser acrescentados e retirados as mensagens
Protocolos Regras para comunicação Camadas Responsabilidades especificas na troca de mensagens Modelos gerais de Protocolos: Orientado a Conexão Emissor e Receptor devem estabelecer uma conexão (podendo negociar o protocolo usado) antes da troca de dados Sem Conexão Não há conexão entre Emissor e Receptor
Comunicação por TCP canal de comunicação onde os dados podem ser lidos ou escritos (fluxo de bytes) adota o esquema de confirmação e retransmissão de mensagem Características: tamanho das mensagens: qualquer tamanho (a quebra de mensagens é tratada internamente) garantia de entrega de mensagens: utilização de acks controle de fluxo: velocidade de leitura do receptor e escrita do emissor (pode bloquear o emissor) trata duplicação de mensagens e ordenação: associa identificadores a cada pacote IP troca de mensagens: é estabelecida uma conexão entre dois processos
Comunicação por UDP não utiliza acks ou retransmissões para garantir a entrega de mensagens não é garantido a ordenação das mensagens caracteristicas: send não bloqueante permite utilizar timeouts para tratar falhas Modelo de falhas mensagens podem ser perdidas durante a transmissão.
Comunicação por UDP Vantagens do protocolo UDP: baixo overhead não há necessidade de armazenamento de informações sobre fonte e destino
Questões: Quais são os problemas no desenvolvimento de sistemas distribuídos usando sockets TCP ou UDP? não existe a transparência de distribuição: toda a comunicação está explícita, através de procedimentos send e receive. Como estes problemas podem ser tratados?
Middleware Por que desenvolver aplicações distribuídas é complexo? Heterogeneidade Escalabilidade Concorrência Transparência...
Middleware Facilita e gerencia a interação entre aplicações através de plataformas heterogêneas. Abstrai a complexidade da programação em aplicações distribuídas. Exemplo: Aplicação distribuída onde parte do código tem que ser executado em uma máquina e a outra parte em outra máquina. Como implementar?
Solução! Middleware de comunicação: Tipos: Remote Procedure Call (RPC) Remote Method Invocation (RMI) Common Object Request Broker Architecture (CORBA) Web Services
Trabalho Pesquisa sobre os tipos de middleware de comunicação: Remote Procedure Call (RPC) Remote Method Invocation (RMI) Common Object Request Broker Architecture (CORBA) Web Services