48
Comunicação orientada a mensagens

Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

Comunicação orientada a mensagens

Page 2: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

críticas a RPC

•  sincronismo •  modelo um a um •  dificuldades de tratamento de falhas •  dificuldades com arquiteturas não cliente-

servidor

  volta ao modelo de troca de mensagens ⇒  com diferentes níveis de abstração

Page 3: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

Sistemas de mensagens

•  suporte para ponto a ponto e grupos

•  desacoplamento –  temporal

•  persistência das mensagens

–  espacial •  canais e congêneres

Page 4: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

Comunicação em grupo

•  primitiva única transmite msgs a grupo de procs

•  grupos abertos e fechados •  grupos estáticos e dinâmicos

–  serviços de controle de participantes

Page 5: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

Comunicação em Grupo

•  motivações –  replicação e tolerância a falhas –  ferramentas para colaboração

•  jogos •  conferências •  edição colaborativa

•  um primeiro exemplo: no MPI, ligado a modelo SPMD –  operações coletivas

Page 6: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

MPI - message passing interface

MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { strcpy(message, "Hello, world"); for (i = 1; i < size; i++) MPI_Send(message, 13, MPI_CHAR, i, type,

MPI_COMM_WORLD); } else MPI_Recv(message, 20, MPI_CHAR, 0, type,

MPI_COMM_WORLD, &status); printf( "Message from process = %d : %s\n",

rank, message); MPI_Finalize(); }

Page 7: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

grupos no MPI

•  todos os processos de uma aplicação pertencem a um comunicador (grupo) –  MPI_COMM_WORLD

•  grupos fechados com comunicação sincronizada •  operações coletivas têm como um de seus

parâmetros um comunicador –  MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);

•  novos comunicadores podem ser criados dentro do programa

Page 8: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

Operações Coletivas no MPI

•  Barrier: sincronização pura •  Broadcast •  Gather •  Scatter •  Reduction

todas criam barreira implícita

Page 9: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

exemplo: MPI_Scatterv

Page 10: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

Header for MPI_Scatterv

int MPI_Scatterv ( void *send_buffer, int *send_cnt, int *send_disp, MPI_Datatype send_type, void *receive_buffer, int receive_cnt, MPI_Datatype receive_type, int root, MPI_Comm communicator)

Page 11: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

ex. simétrico: Function MPI_Gatherv

Page 12: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

outros modelos de comunicação em grupo

•  integração com modelos de chamadas de objetos •  divulgação de um para muitos

–  distribuição em escala geográfica –  sistemas pub/sub

•  replicação e tolerância a falhas –  réplicas ativas X passivas

–  necessidade de multicast ordenado e confiável discutido nos tópicos de sincronização e tolerância a falhas

Page 13: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

RMI e grupos

•  alguns trabalhos estendem o conceito de chamada remota para chamada em um grupo de objetos –  relação com programação SPMD

•  ProActive •  Charm++ •  ...

Page 14: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

programação SPMD no ProActive

•  suporte a operações coletivas –  grupos tipados: coleções de objetos de

determinada classe (ou subclasses) A ag = (A) ProActiveGroup.newGroup (“A”, params, {node1, node2, node3}); ag.foo() // operação coletiva ... V vg = ag.bar() // vg é um grupo de classe “V” vg.f(); // outra operação coletiva // chamadas sobre f’s disparadas a medida // em que resultados se tornam disponíveis

Page 15: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

interface Group

Page 16: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

OO-SPMD Jacobi

•  barreiras forçam sincronização antes da execução de nova chamada assíncrona

chamadas assíncronas

Page 17: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

publish/subscribe

•  sistema onde se registra interesse em receber mensagens –  filtragem de assuntos

•  diferentes níveis –  aplicação final: newsgroups –  primitivas de comunicação

•  modelos –  push e pull –  relação com orientação a eventos e arquitetura da

aplicação

Page 18: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

pub/sub

serviço de pub/sub

P

P

P

P

A

A P

A

A

A

A

•  P. Eugster, P. Ferrer, R. Guerraoui e A. Kermarrec. The many faces of publish/subscribe. ACM Computing Surveys, 35(2), jun 2003.

Page 19: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

padrão básico de interação

•  assinantes registram interesse em eventos ou padrões de eventos

•  publicação de evento gera notificação assíncrona

•  desacoplamento –  tempo –  espaço –  sincronização

Page 20: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

desacoplamento espacial

Notify()

Notify()

Notify()

Notify()

serviço de eventos

publicador

publica

Page 21: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

desacoplamento temporal

Notify() Notify()

Notify()

serviço de eventos

publicador

publica

Notify()

serviço de eventos

publicador

Page 22: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

desacoplamento de sincronização

Notify()

Notify()

serviço de eventos publicador

publica

•  estilo assíncrono permite que partes se comuniquem sem se sincronizar

Page 23: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

usos

–  exemplo clássico de bolsa de valores… –  notícias em geral –  bancos de dados –  jogos e simuladores – monitoramento de recursos

•  interesse de combinar paradigmas em uma mesma aplicação

Page 24: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

variações nos sistemas p/s

1.  baseados em tópicos –  listas de interesse

–  similaridade com grupos –  alguns sistemas p/s baseados no ISIS

–  canais de comunicação –  em geral, strings usados como identificação de

canal –  uso de strings hierárquicos

Page 25: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

public class StockQuote implements Serializable { public String id, company, trader; public float price; public int amount; } public class StockQuoteSubscriber implements Subscriber { public void notify (Object o) { if (((StockQuote)o).company == 'TELCO'&& ((StockQuote)o).price < 100) buy(): } } … Topic quotes = EventService.connect ("/LondonMarket/Stock/StockQuotes"); Subscriber sub = new StockQuoteSubscriber(); quotes.subscribe(sub);

inscrição com tópicos

Page 26: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

variações nos sistemas p/s

2.  baseados em conteúdo –  em geral atributos internos –  eventos são conjuntos de pares (atributo, valor)

–  uso de filtros para estabelecer registro

4.  baseados em tipo…

Page 27: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

public class StockQuote implements Serializable { public String id, company, trader; public float price; public int amount; } public class StockQuoteSubscriber implements Subscriber { public void notify (Object o) { buy(): } } … String criteria = ("company == 'TELCO'and price < 100") Subscriber sub = new StockQuoteSubscriber(); EventService.subscribe(sub);

inscrição por conteúdo

Page 28: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

linguagens com filtros

•  filtros podem ser dados por: –  strings

•  SQL •  expressões lógicas

–  templates –  código executável

•  relação com strings •  segurança e otimização

Page 29: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

p/s e espaços de tuplas

•  distinção feita qto ao sincronismo no acesso à informação – modelo pull

•  interface de acesso adequada para p/s por tópicos e por conteúdo

•  limitação na linguagem de filtros

Page 30: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

arquiteturas

•  centralizadas e distribuídas

serviço de pub/sub

serviço de pub/sub

Page 31: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

arquiteturas centralizadas

•  facilidade de ordenação •  consistência e transações •  problemas de escalabilidade

Page 32: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

arquiteturas distribuídas

•  redes de servidores

•  rede de overlay –  mais complicado de manter

Page 33: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

redes de servidores

•  como distribuir trabalho?

•  sistemas de tópicos: tópicos podem ser distribuídos entre servidores –  cada servidor fica responsável por disseminação de alguns

tópicos –  ex: Scribe

•  sistemas sem estruturas de tópicos –  roteamento a partir de diferentes pontos –  ex: Siena, Rebecca

Page 34: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

roteamento

•  inscrições usadas para estabelecer rotas comuns

•  uso de anúncios para facilitar roteamento –  Siena, Rebecca

val<10 val<5 val<10

Page 35: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

relação com p2p

•  contexto de p/s têm estimulado discussão sobre arquiteturas simétricas

•  o que é um sistema p2p?

•  disc. no contexto de distribuição de conteúdo –  Androutsellis-Theotokis e Spinellis. A Survey of

P2P Content Distribution Technologies. ACM Computing Surveys, 36(4), dez 2004.

Page 36: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

o que é p2p?

•  sistemas onde todos os nós são equivalentes em funcionalidade e no papel desempenhado

•  sistemas que utilizam recursos nas bordas da Internet

.

.

.

Page 37: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

características

•  compartilhamento de recursos sem necessidade de um elemento centralizador –  ciclos de CPU, armazenamento, banda ...

•  instabilidade e conectividade variável como normal –  população flutuante

Page 38: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

exemplos de uso

•  comunicação entre usuários –  chat, trabalho colaborativo

•  serviços –  específicos: multicast –  genéricos: infras de computação distribuída

•  sistemas replicados –  bancos de dados –  servidores web

•  distribuição de conteúdo

Page 39: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

p2p - questões

•  localização de recursos •  adaptação a entradas e saídas •  escalabilidade •  privacidade e confidencialidade •  disponibilidade e persistência •  …

  diferentes objetivos criam diferentes necessidades…   anonimato X reputação

} arquitetura

Page 40: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

p2p - arquitetura

•  redes de overlay –  noções de vizinhança e conectividade

independentes daquelas da rede subjacente

Page 41: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

p2p - arquiteturas

•  qto a centralização –  híbridas

•  servidores usados para algumas tarefas –  parcialmente centralizadas

•  supernós escolhidos dinamicamente –  totalmente distribuídas

•  servents

•  qto a estrutura –  não estruturadas –  estruturadas: localização de recurso baseada em chave

Page 42: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

arquiteturas não estruturadas híbridas

•  uso de um servidor central para informação de disponibilidade de recursos –  em distribuição de conteúdo:

•  índices de arquivos •  listas de conexões correntes

•  simplicidade •  falta de escalabilidade

–  ? para que escala?

Page 43: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

ñ estruturadas descentralizadas

•  todos os participantes têm papel simétrico –  uso de bases de dados ou até servidores para

encontrar algum participante corrente •  roteamento por inundação

Page 44: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

exemplo ñ estruturada descentralizada

Page 45: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

arquiteturas ñ estrut. parcialmente centralizadas

•  supernós atuam como servidores de cache ou de indexamento

•  disponibilidade de banda e de memória usados como critério de escolha de supernós

•  adaptação à heterogeneidade

•  relação com free riding

Page 46: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

arquiteturas estruturadas

•  roteamento baseado em endereço/identificador de nó

•  conteúdo: arquivos armazenados em nós com identificador próximo ao seu –  útil para busca por nome exato

Page 47: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

exemplo busca estruturada

Page 48: Comunicação orientada a mensagens - PUC-Rionoemi/sd-09/aula6.pdf · Comunicação orientada a mensagens . críticas a RPC • sincronismo • modelo um a um • dificuldades de

relação com forma de comunicação

•  como se encaixaria um sistema de RPC aqui?

•  uso de mensagens tradicionais ou pub/sub é mais conveniente