Você está na página 1de 63

Sistemas Distribuídos

Comunicação Indireta

Prof. Dr. Raphael Gomes


raphael.gomes@ifg.edu.br

SISD - Prof. Dr. Raphael Gomes 1 de 63


O que veremos hoje...
 Comunicação indireta
 Comunicação de grupo
 Sistema publish/subscribe
 Filas de mensagens
 Memória compartilhada distribuída
 Espaços de tuplas

SISD - Prof. Dr. Raphael Gomes 2 de 63


Comunicação Indireta
 Comunicação entre entidades em um SD por meio de um intermediário,
sem que haja qualquer acoplamento entre o remetente e o(s)
destinatário(s)

 RPC/RMI: comunicação direta com alto acoplamento entre um remetente


e um destinatário

SISD - Prof. Dr. Raphael Gomes 3 de 63


Messaging vs. RPC/RMI

SISD - Prof. Dr. Raphael Gomes 4 de 63


Desacoplamento espacial e temporal
 Espacial: remetente não conhece a  Temporal: remetente e
identidade do(s) destinatário(s) destinatário(s) possuem tempos de
vida independentes

SISD - Prof. Dr. Raphael Gomes 5 de 63


Acoplamento espacial e temporal

SISD - Prof. Dr. Raphael Gomes 6 de 63


Para pensar ...
 Há diferença entre comunicação assíncrona e desacoplamento temporal?
Se um paradigma de comunicação é assíncrono, ele possui
desacoplamento temporal?

SISD - Prof. Dr. Raphael Gomes 8 de 63


Modelos (Paradigmas) de
Comunicação Indireta
 Comunicação de grupo
 Sistema publish/subscribe
 Filas de mensagens
 Memória compartilhada distribuída
 Espaços de tuplas

SISD - Prof. Dr. Raphael Gomes 9 de 63


Comunicação em Grupo

SISD - Prof. Dr. Raphael Gomes 10 de 63


Para pensar ...
 Que tipos de aplicação podem se beneficiar da comunicação em grupo?
Que desafios de sistemas distribuídos podem ser trabalhados com este
paradigma?

SISD - Prof. Dr. Raphael Gomes 11 de 63


Comunicação em Grupo
 Disseminação confiável de informações entre muitos clientes
 Suporte a aplicações colaborativas
 Implementação de estratégias de tolerância a falhas
 Suporte a monitoramento e gerenciamento
 Ex.: balanceamento de carga

SISD - Prof. Dr. Raphael Gomes 12 de 63


Comunicação em Grupo

SISD - Prof. Dr. Raphael Gomes 13 de 63


Implementação
 Semântica de entrega de mensagens em grupos:
 Ordem causal: considera a causalidade entre os eventos
 Ordem total: considera a ordem total dos eventos
 todos recebem na mesma ordem

SISD - Prof. Dr. Raphael Gomes 14 de 63


Para pensar ...
 No contexto de um serviço de comunicação em grupo, explique como as
mensagens decorrentes de eventos gerados por somente esse serviço
apresentam ordenação causal e total.

SISD - Prof. Dr. Raphael Gomes 15 de 63


Estudo de caso: JGroups
 Toolkit para multicasting confiável
 Fragmentação
 Retransmissão de mensagens
 Ordenação
 Inclusão em grupo, notificação de mudanças no grupo
 LAN ou WAN

SISD - Prof. Dr. Raphael Gomes 16 de 63


Topologia de um Grupo

SISD - Prof. Dr. Raphael Gomes 18 de 63


Modelos (Paradigmas) de
Comunicação Indireta
 Comunicação de grupo
 Sistema publish/subscribe
 Filas de mensagens
 Memória compartilhada distribuída
 Espaços de tuplas

SISD - Prof. Dr. Raphael Gomes 24 de 63


Sistemas Publish-Subscribe (P/S)
(ou distributed event-based systems)

SISD - Prof. Dr. Raphael Gomes 25 de 63


Sistemas Publish-Subscribe (P/S)
(ou distributed event-based systems)
 Sistema baseado em eventos distribuídos
 Sistema distribuído composto de
 Publishers: processos que publicam eventos no sistema P/S
 Subscribers: processos de consomem eventos no sistema P/S
 Subscription indica eventos em que um subscriber está interessado
 Entrega de evento: event notification

SISD - Prof. Dr. Raphael Gomes 26 de 63


Para pensar ...
 Que tipos de aplicação podem se beneficiar do paradigma P/S? Que
desafios de sistemas distribuídos podem ser trabalhados com este
paradigma?

SISD - Prof. Dr. Raphael Gomes 27 de 63


Sistemas Publish-Subscribe (P/S)
(ou distributed event-based systems)
 Exemplos de domínios de aplicação
 Suporte para trabalho colaborativo: participantes precisam ser informados de
eventos de interesse compartilhado
 Suporte para computação ubíqua: gerenciamento de eventos emanados da
infraestrutura ubíqua
 Aplicações de monitoramento
 IoT

SISD - Prof. Dr. Raphael Gomes 28 de 63


Homecare system: visão geral

SISD - Prof. Dr. Raphael Gomes 30 de 63


Arquitetura distribuída para notificação de
eventos

Event service
object of interest subscriber

notification

object of interest observer subscriber

notification notification

object of interest observer subscriber

notification

SISD - Prof. Dr. Raphael Gomes 31 de 63


Papéis dos componentes de uma arquitetura de
eventos
 Objeto de interesse
 gerador de eventos de algum tipo especificado
 Evento
 ocorrência em um objeto de interesse
 Notificação
 objeto que contém informação sobre um evento, utilizado para comunicá-lo aos
interessados
 Assinante
 objeto que registra interesse por notificações de certo tipo de evento

SISD - Prof. Dr. Raphael Gomes 32 de 63


Papéis dos componentes de uma arquitetura de
eventos (2)
 Observador
 intermediador entre objetos de interesse e assinantes
 implementa a lógica de notificação
 encaminhamento, filtragem, correlação de eventos para detectar padrões, caixa postal
de eventos
 seu uso é opcional
 Publicador
 torna tipos de eventos conhecidos do público
 pode ser o observador ou o próprio objeto de interesse que gera o evento

SISD - Prof. Dr. Raphael Gomes 33 de 63


O modelo de programação
 publish(e) → publica um evento no sistema
 subscribe(f) → indica o interesse por um tópico que atenda a certos
critérios
 unsubscribe(f) → indica não ter interesse por um tópico
 notify(e) → entrega evento a subscriber
 advertise(f) → tipos de tópicos a serem publicados no futuro

SISD - Prof. Dr. Raphael Gomes 34 de 63


O modelo de programação
 Tipos de assinaturas
 Channel-based → subscription indica o interesse em todos os eventos de um canal
 Topic-based → (ou assunto/subject) subscription indica um tópico de interesse,
entre vários associados aos eventos do sistema
 Content-based → subscription indica restrições quanto ao conteúdo dos eventos
 Type-based → eventos são tipados, e subscription indica tipos ou subtipos de
interesse

SISD - Prof. Dr. Raphael Gomes 35 de 63


O modelo de programação

SISD - Prof. Dr. Raphael Gomes 36 de 63


O modelo de programação

SISD - Prof. Dr. Raphael Gomes 37 de 63


Para pensar ...
 Como comunicação em grupo pode ser utilizada para implementar um
sistema publish-subscribe baseado em canal? A mesma estratégia pode
ser eficientemente utilizada para implementar um sistema publish-
subscribe baseado em conteúdo?

SD - Prof. Dr. Raphael Gomes 38


Questões de implementação
 Preocupação central:
 garantir que eventos são entregues eficientemente para todos subscribers que têm
filtros definidos que combinam com o evento

 Requisitos adicionais:
 Segurança
 Escalabilidade
 Tolerância a falhas
 Concorrência
 QoS

SISD - Prof. Dr. Raphael Gomes 39 de 63


Questões de implementação
 Centralização
 Um único nó com um servidor agindo como um broker de eventos
 Publishers publicam eventos para este broker
 Subscribers enviam subscriptions para o broker e recebem notificações como
retorno
 Interação com o broker através de mensagens ponto-a-ponto (passagem de
mensagens ou invocação remota)
 Algum problema?

SISD - Prof. Dr. Raphael Gomes 40 de 63


Questões de implementação
 Problemas...
 Baixa tolerância a falhas e escalabilidade
 O broker central representa
 um único ponto de falha e
 um gargalo na performance
 Solução...?

SISD - Prof. Dr. Raphael Gomes 41 de 63


Questões de implementação

SISD - Prof. Dr. Raphael Gomes 42 de 63


Questões de implementação
 Rede de brokers

SISD - Prof. Dr. Raphael Gomes 43 de 63


Broker Overlay

SISD - Prof. Dr. Raphael Gomes 44 de 63


Subscription Flooding

SISD - Prof. Dr. Raphael Gomes 45 de 63


Filtering-based Flooding

SISD - Prof. Dr. Raphael Gomes 46 de 63


Modelos (Paradigmas) de
Comunicação Indireta
 Comunicação de grupo
 Sistema publish/subscribe
 Filas de mensagens
 Memória compartilhada distribuída
 Espaços de tuplas

SISD - Prof. Dr. Raphael Gomes 47 de 63


Filas de Mensagem
 Filas de mensagem oferecem um serviço ponto-a-ponto
 Emissor coloca a mensagem em uma fila e esta é removida por um único processo

 Implementações comerciais
 WebSphere MQ (IBM), MSMQ (Microsoft), JMS

SISD - Prof. Dr. Raphael Gomes 48 de 63


Modelo de programação
 Processos produtores enviam mensagens para uma fila específica e
processos consumidores recebem mensagens desta fila

 Três estilos de recebimento


 Blocking receive
 Non-blocking receive (polling)
 Notify

SISD - Prof. Dr. Raphael Gomes 49 de 63


Modelo de programação

SISD - Prof. Dr. Raphael Gomes 50 de 63


Modelo de programação
 Propriedades de sistemas de filas de mensagem
 Mensagens são persistidas até que sejam consumidas
 Entrega confiável
 Qualquer mensagem enviada é eventualmente recebida e a mensagem recebida é
idêntica à que foi enviada
 Nenhuma mensagem é entregue duplicada

 Filas de mensagem versus outros modelos de passagem de mensagem:


Filas são explícitas e são gerenciadas diretamente

SISD - Prof. Dr. Raphael Gomes 51 de 63


Para pensar ...
 Integração de Aplicações Corporativas é um conjunto de princípios que
visam prover um arcabouço de integração para conectar sistemas
distintos dentro de uma organização, como por exemplo sistema de
registro acadêmico, sistema financeiro e ambientes de aprendizagem
virtual em uma universidade. Quais as vantagens em implementar essa
categoria de sistema usando filas de mensagens?

SD - Prof. Dr. Raphael Gomes 52


Java Message Service (JMS)
 Solução independente de fabricante para acessar serviços de mensagem a
partir de clientes Java
 Publish/Subscribe ou Filas de mensagem

 Alguns produtos compatíveis com JMS


 JBossMQ, OpenJMS, JORAM
 IBM MQSeries, IPlanet MQ, Bea WebLogic, HP-MS, Progress
 SoniqMQ
 Mais em: http://www.oracle.com/technetwork/java/jms/index.html

SISD - Prof. Dr. Raphael Gomes 55 de 63


Modelo de programação

SISD - Prof. Dr. Raphael Gomes 58 de 63


Broker
 Os laboratórios foram implementados usando Apache ActiveMQ
 Deve ser incluído como dependência no projeto e ser executado como processo
isolado
 Executar broker: ./bin/activemq console
 Para mais informações:
 http://activemq.apache.org/run-broker.html
 https://rupalchatterjee.wordpress.com/2013/04/27/getting-started-with-java-messaging-
service-jms/

SISD - Prof. Dr. Raphael Gomes 59 de 63


Modelos (Paradigmas) de
Comunicação Indireta
 Comunicação de grupo
 Sistema publish/subscribe
 Filas de mensagens
 Memória compartilhada distribuída
 Espaços de tuplas

SISD - Prof. Dr. Raphael Gomes 70 de 63


Memória compartilhada distribuída (DSM)
 DSM é uma abstração usada para compartilhar dados entre
computadores que não tem memória física compartilhada

SISD - Prof. Dr. Raphael Gomes 71 de 63


Memória compartilhada distribuída (DSM)
 Problemas ao implementar DSM são relacionados à replicação e caching
de arquivos compartilhados

 Significância de DSM
 Desenvolvimento de multiprocessadores com memória compartilhada
 Algoritmos para computação paralela
 Estratégia de caching, rápida interconexão processador-memória
 Número de processadores

SISD - Prof. Dr. Raphael Gomes 72 de 63


Para pensar ...
 Explique sobre quais circunstâncias, DSM é apropriado ou inapropriado
para implementar uma aplicação cliente-servidor.

SD - Prof. Dr. Raphael Gomes 73


Para pensar ...
 Discuta se passagem de mensagens ou DSM é preferível para aplicativos
tolerantes a falhas.

SD - Prof. Dr. Raphael Gomes 74


Modelos (Paradigmas) de
Comunicação Indireta
 Comunicação de grupo
 Sistema publish/subscribe
 Filas de mensagens
 Memória compartilhada distribuída
 Espaços de tuplas

SISD - Prof. Dr. Raphael Gomes 75 de 63


Espaço de tuplas
 Dois elementos se comunicam lendo e escrevendo em um espaço de
tuplas:
 Coleção global e persistente de tuplas

 Uma tupla pode ser um dado tipado, contendo um conjunto de valores, ou


especificar um tipo de dado

SISD - Prof. Dr. Raphael Gomes 76 de 63


Modelo de programação
 write: escreve uma tupla

 read: lê uma tupla (a mesma permanece no espaço)

 take: retira uma tupla

SISD - Prof. Dr. Raphael Gomes 77 de 63


Espaço de tuplas

SISD - Prof. Dr. Raphael Gomes 78 de 63


Para pensar ...
 Como você implementaria o equivalente a uma chamada de procedimento
remoto usando um espaço de tuplas? Quais são as vantagens e
desvantagens de implementar uma interação estilo chamada de
procedimento remoto desta maneira?

SISD - Prof. Dr. Raphael Gomes 79 de 63


JavaSpaces
 API para espaço de tuplas com orientação a objetos de Java, RMI, e
serialização de objetos

SISD - Prof. Dr. Raphael Gomes 82 de 63


API JavaSpaces

SISD - Prof. Dr. Raphael Gomes 83 de 63


Para pensar ...
 Espaço de tuplas realmente é a melhor estratégia de implementação de
uma aplicação com características como a anterior? Qual seria uma
opção mais apropriada?

SISD - Prof. Dr. Raphael Gomes 87 de 63


Resumo dos modelos de comunicação indireta

SISD - Prof. Dr. Raphael Gomes 88 de 63


Para pensar ...
 Considere um sistema onde toda comunicação ocorre com o padrão 1:1.
Neste caso, cite três razões que justificam o uso de comunicação indireta
em vez de RMI/RPC.

SISD - Prof. Dr. Raphael Gomes 89 de 63


Referências
 G. Coulouris, J. Dollimore, T. Kindberg e G. Blair. Sistemas
Distribuídos: Conceitos e Projetos. 5a Edição.
 Slides Prof. Dr. Fábio Moreira Costa, INF/UFG.
 Slides Prof. Dr. Vagner J. do Sacramento Rodrigues, INF/UFG.
 http://www.jgroups.org/tutorial/html/ch02.html
 https://cgi.csc.liv.ac.uk/~frans/OldLectures/COMP101/AdditionalStuff/
JavaSpaces/spaceAccess.html

SISD - Prof. Dr. Raphael Gomes 90 de 63

Você também pode gostar