Sistemas Distribuídos Prof. Marcus Rodrigues [email protected] Comunicação em Sistemas Distribuídos Capítulo 2 – Aula 9 Comunicação em Sistemas Distribuídos Prof. Marcus Rodrigues Material baseado no livro Distributed Systems: Principles and Paradigms Prentice Hall Copyright © Andrew S. Tanembaum, Maarten van Steen, 2001 Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Comunicação Orientada a Mensagem RMI e RPC contribuem para ocultar detalhes de comunicação em sistemas distribuídos Prof. Marcus Rodrigues • • Transparência de acesso ☑ Problemas? • Tolerância a falha? “E se o provedor do serviço não estiver funcionando?” • • Desempenho em comunicação de natureza síncrona? Nenhum dos mecanismos é apropriado para qualquer circunstância Alternativa? • Comunicação por mensagem Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Persistência e Sincronia em Comunicação (1) Organização geral de um sistema de comunicação onde as estações estão conectadas através de uma rede Prof. Marcus Rodrigues 2-20 Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Persistência e Sincronia em Comunicação (2) Comunicação persistente • Uma mensagem submetida a transmissão é Prof. Marcus Rodrigues armazenada pelo sistema de comunicação até que possa ser entregue ao receptor Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Persistência e Sincronia em Comunicação (3) Comunicação persistente • Uma mensagem submetida a transmissão é Prof. Marcus Rodrigues armazenada pelo sistema de comunicação até que possa ser entregue ao receptor Comunicação transiente • Uma mensagem é armazenada pelo sistema de comunicação apenas enquanto as aplicações transmissoras e receptoras estiverem executando Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Persistência e Sincronia em Comunicação (4) Comunicação assíncrona • O transmissor continua seu fluxo de execução Prof. Marcus Rodrigues imediatamente após submeter mensagem para transmissão Comunicação síncrona • O transmissor é bloqueado até que sua mensagem seja armazenada em um buffer local na estação receptora, ou de fato entregue ao receptor. Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Persistência e Sincronia em Comunicação (5) a) b) Comunicação persistente assíncrona Comunicação persistente síncrona Prof. Marcus Rodrigues 2-22.1 Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Persistência e Sincronia em Comunicação (6) Prof. Marcus Rodrigues 2-22.2 c) d) Comunicação transiente assíncrona Comunicação baseada em receptor transiente síncrono Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Persistência e Sincronia em Comunicação (7) e) f) Comunicação baseada na entrega transiente e síncrona Comunicação baseada na resposta transiente e síncrona Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Comunicação transiente orientada a mensagem Prof. Marcus Rodrigues Muitos sistemas distribuídos e aplicações são dispostos diretamente sobre um modelo orientado a mensagem oferecido pela camada de transporte Berkeley sockets • Socket é um ponto de comunicação no qual uma aplicação pode encrever dados que serão transmitidos através de um sistema de comunicação, e a partir do qual dados de chegada podem ser lidos Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Berkeley Sockets (1) Prof. Marcus Rodrigues Primitivas socket para sistemas TCP/IP. Primitiva Função Socket Cria um novo ponto de comunicação Bind Associa o endereço local ao socket Listen Notifica disponibilidade para receber conexões Accept Aguarda a chegada de uma solicitação de conexão Connect Estabelece uma nova conexão Send Envia dados através da conexão Receive Recebe dados através da conexão Close Libera a conexão Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Berkeley Sockets (2) Padrão de comunicação orientado a conexão usando sockets Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Message-Passing Interface (MPI) Prof. Marcus Rodrigues Primitivas MPI Primitiva Função MPI_bsend Anexa mensagem de saída ao buffer local de transmissão MPI_send Envia uma mensagem e aguarda até que a mensagem seja ao buffer local ou remoto MPI_ssend Envia uma mensagem e aguarda até que receptor seja iniciado MPI_sendrecv Envia uma mensagem e aguarda por respota MPI_isend Passa referência para mensagem de saída, e continua MPI_issend Passa referência para mensagem de saída, e aguarda até que o receptor seja iniciado MPI_recv Recebe uma mensagem; bloqueia em caso de não haver mensagem MPI_irecv Verifica se há uma mensagem recebida, mas não bloqueia Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Modelo de enfileiramento de mensagens (1) Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Modelo de enfileiramento de mensagens (2) Primitiva Função Put Anexa uma mensagem a uma fila específica Get Bloqueia até que uma fila específica não esteja vazia, e retira a primeira mensagem Poll Verifica um fila específica, e remove a primeira mensagem. Nunca bloqueia Notify Instala um “tratador” a ser chamado quando uma mensagem é inserida em uma fila específica Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Arquitetura de um sistema de enfileiramento de mensagens (1) Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Arquitetura de um sistema de enfileiramento de mensagens (2) 2-29 Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Message Brokers The general organization of a message broker in a message-queuing system. Prof. Marcus Rodrigues 2-30 Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Exemplo: IBM MQSeries Prof. Marcus Rodrigues 2-31 Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Transferência de mensagem (1) Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem Prof. Marcus Rodrigues Transferência de mensagem (2) Primitiva Descrição MQopen Abre uma fila (possivelmente remota) MQclose Fecha uma fila MQput Insere uma mensagem em uma fila aberta MQget Retira uma mensagem de uma fila (local) Sistemas Distribuídos – Capítulo 2 – Comunicação Orientada a Mensagem