troca de mensagens

65
Troca de Mensagens Sistemas Fracamente Acoplados

Upload: dinhkiet

Post on 09-Jan-2017

227 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Troca de Mensagens

Troca de Mensagens�Sistemas Fracamente Acoplados

Page 2: Troca de Mensagens

Distribuição Geográfica

•  distribuição também administrativa •  limites de tempo de comunicação

desconhecidos •  conexão e desconexão frequentes •  número grande de participantes

Page 3: Troca de Mensagens

modelos de comunicação

•  publish/subscribe e espaços de tuplas

Page 4: Troca de Mensagens

pub/sub

serviço de distribuição

P

P

P

P

C

C P

C

C

C

C

•  serviço desacopla produtores de consumidores

Page 5: Troca de Mensagens

padrão básico de interação

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

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

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

Page 6: Troca de Mensagens

desacoplamento espacial

NewInfo()

NewInfo()

NewInfo()

NewInfo()

serviço de eventos

produtor

produz

Page 7: Troca de Mensagens

desacoplamento temporal

NewInfo() NewInfo()

NewInfo()

serviço de eventos

produtor

produz

NewInfo()

serviço de eventos

produtor

Page 8: Troca de Mensagens

desacoplamento de sincronização

NewInfo()

NewInfo()

serviço de eventos produtor

produz

•  casamento com assincronismo

Page 9: Troca de Mensagens

usos

•  sistemas de comunicação – exemplo clássico de bolsa de valores…

•  propagação de atualizações – bancos de dados –  jogos e simuladores – monitoramento de recursos

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

Page 10: Troca de Mensagens

Espaços de Tuplas

•  idéia originada com Linda •  dualidade: memória compartilhada X

troca de mensagens

Page 11: Troca de Mensagens

Linda

•  Carriero and Gelernter, 1986 – Yale

•  idéia de um espaço de tuplas compartilhado por diversos processos

•  inicialmente voltado para aplicações paralelas

espaço de tuplas

processos

Page 12: Troca de Mensagens

Linda - primitivas

•  out(tuple) –  coloca tupla t no espaço de tuplas

•  in (template) –  retorna retirando tupla que “case” com template do espaço

de tuplas –  bloqueante

•  rd(template) –  como in sem eliminar tupla do et

•  eval(t) –  dispara novo processo para calcular tupla e fazer out(t)

•  primitivas para C e FORTRAN •  comunicação dentro de uma aplicação fechada

Page 13: Troca de Mensagens

casamento de tuplas

•  endereçamento por conteúdo (ou memória associativa)

–  valores e tipos:

int x; float y; in (3, ?x, "blablabla", ?y)

–  dificuldade de implementação x utilidade?

Page 14: Troca de Mensagens

Linda - exemplo de programa

Page 15: Troca de Mensagens

exemplo em Linda

real_main (int argc, char *argv[ ]) { int procs, procid, hello( ), j; procs = atoi (argv[1]); for (j=0; j<procs; j++) eval ("worker", hello(j)); for (j=0; j<procs; j++) { in ("worker", ?procid); fprintf (stdout, "fim do proc %d\n",procid); } } hello (int i){ return i; }

Page 16: Troca de Mensagens

exemplo do wpp

N. Carriero e D. Gelernter. How to write parallel programs: a guide to the perplexed. ACM Computing Surveys, 21(3), set 1989.

Page 17: Troca de Mensagens

interpretações do espaço de tuplas

•  muitas vezes chamado de espaço virtual compartilhado

espaço compartilhado

processos

Page 18: Troca de Mensagens

interpretações do espaço de tuplas

•  mas também podemos ver como um sistema de canais de comunicação

out("canal1", tx)

out("canal2", tz)

in("canal1", ?t1) out("canal2", t1)

in("canal2", ?t)

out("canal1", ty) … out("canal3", tz)

canal1 canal2 canal3

Page 19: Troca de Mensagens

espaços de tuplas em Java

•  Tspaces e JavaSpaces –  space.write (entry, …) –  space.read (template, …) –  space.take (template, …)

–  read e take ainda bloqueantes –  eval não existe

•  entradas e templates são instâncias de classes –  um objeto encapsula a antiga tupla

Page 20: Troca de Mensagens

JavaSpaces

•  distanciamento de programação paralela e aproximação com sistemas distribuídos –  espaços "ainda mais" persistentes

•  aplicação não precisa estar em execução para tupla ser retirada

•  desacoplamento maior –  utilização simultânea de diferentes espaços

•  uso do registry RMI ou outros mecanismos de localização

–  integração com middleware Jini

Page 21: Troca de Mensagens

implementações

•  em geral centralizadas

•  algumas implementações distribuídas – e muita discussão

•  replicação completa de espaço, rd e in locais, e out com broadcast

•  out local e broadcast de in e rd

Page 22: Troca de Mensagens

Coordenação

•  separação – processamento X comunicação e

sincronização

– Gelernter, D. and Carriero, N. 1992. Coordination languages and their significance. Commun. ACM 35, 2 (Feb. 1992), 97-107.

Page 23: Troca de Mensagens

pub/sub

serviço de distribuição

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.

•  produtores: publishers •  consumidores: assinantes

–  registro de interesse vale indefinidamente

–  filtros variados e não apenas por casamento exato

•  arquiteturas mais variadas para o serviço de distribuição

Page 24: Troca de Mensagens

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: Troca de Mensagens

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: Troca de Mensagens

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: Troca de Mensagens

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, criteria);

inscrição por conteúdo

Page 28: Troca de Mensagens

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: Troca de Mensagens

comunicação

•  mensagens

•  invocações – oneway ou assíncronas

Page 30: Troca de Mensagens

arquiteturas

•  centralizadas e distribuídas

serviço de pub/sub

serviço de pub/sub

Page 31: Troca de Mensagens

arquiteturas centralizadas

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

Page 32: Troca de Mensagens

arquiteturas distribuídas

•  redes de servidores

•  rede homogênea de clientes/servidores –  mais complicado de manter

Page 33: Troca de Mensagens

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: Troca de Mensagens

Fluxos de Eventos

Page 35: Troca de Mensagens

tecnologias p2p

Androutsellis-Theotokis, S. and Spinellis, D. 2004. A survey of peer-to-peer content distribution technologies. ACM Comput. Surv. 36, 4 (Dec. 2004), 335-371.

Page 36: Troca de Mensagens

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: Troca de Mensagens

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: Troca de Mensagens

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: Troca de Mensagens

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

Page 40: Troca de Mensagens

p2p - arquitetura

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

independentes daquelas da rede subjacente

Page 41: Troca de Mensagens

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: Troca de Mensagens

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? –  servidores web...

•  exemplos –  Napster e Publius

Page 43: Troca de Mensagens

ñ 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 •  exemplos

– Gnutella

Page 44: Troca de Mensagens

exemplo ñ estruturada descentralizada

Page 45: Troca de Mensagens

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

•  exemplos – Kazaa –  versões mais recentes de Gnutella

Page 46: Troca de Mensagens

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: Troca de Mensagens

exemplo busca estruturada

Page 48: Troca de Mensagens

exemplo busca estruturada: Pastry

•  rede sobreposta de nós •  cada nó roteia requisições e interage com instâncias

locais de uma ou mais aplicações •  cada nó tem um identificador de 128 bits

–  atribuição aleatória com distribuição uniforme no espaço de 0 a 2^128-1

•  com N nós, roteamento para o nó numericamente mais próximo de uma chave em menos que log2^bN passos –  b um parâmetro (tipicamente 4)

•  entrega é garantida com até L/2 falhas de nós com ids adjacentes –  l é um parâmetro (tipicamente 16 ou 32)

Page 49: Troca de Mensagens

Pastry – tabela de roteamento

•  para b=2 e l=8 (números na base 4)

mapeamento de ID para IP

Page 50: Troca de Mensagens

Pastry - roteamento

•  se a chave da msg está na seção de folhas, envia direto para nó destino

•  se não, usa tabela de roteamento para enviar para nó com id: – que compartilha prefixo com a chave por

mais um dígito – que compartilha prefixo com a chave por

mesmo número de dígitos que o atual, mas é numericamente mais próximo do destino

Page 51: Troca de Mensagens

pastry – entrada de nós

•  assume-se que novo nó conhece algum nó pastry A – multicast IP ou canal externo

•  ID do novo nó computado: X – hash do seu IP ou chave pública

•  X pede a A para rotear mensagem “join”

Page 52: Troca de Mensagens

pastry - join

•  nó A roteia mensagem de adesão para nó Z com ID numericamente mais próximo de X

•  A, Z e todos os nós do caminho enviam suas tabelas de estado para X

•  X inspeciona essas tabelas, possivelmente pede info a outros nós, e iniicializa sua tabela

Page 53: Troca de Mensagens

replicação e caching

•  balanceamento de carga e tolerância a falhas –  replicação da própria tabela de roteamento

•  cache como consequência do roteamento –  replicação passiva

•  replicação introspectiva –  decorrente de monitoração de tráfego

•  relação com adaptação introspectiva em geral

•  replicação e sistemas estruturados

Page 54: Troca de Mensagens

segurança

•  integridade •  confidencialidade •  identificação

–  reputação •  controle de acesso

Page 55: Troca de Mensagens

anonimato

–  publicador (usuário ou nó) –  interessado (usuário ou nó) –  detalhes da consulta

•  paranóia X usabilidade

Page 56: Troca de Mensagens

anonimato

•  Freenet: obfuscação do nó que origina uma consulta e do nó que responde – cada nó só conhece seus vizinhos na rota

•  Publius: replicação e criptografia •  outros: uso de infraestrutura de

roteamento – onion-routing layer

Page 57: Troca de Mensagens

exemplo: Tor

http://tor.eff.org/�

Page 58: Troca de Mensagens

Tor

Page 59: Troca de Mensagens

Tor

Page 60: Troca de Mensagens

possibilidade de negar conhecimento

•  usuário pode afirmar que desconhecia conteúdo armazenado nele?

•  relação com anonimato do publicador •  armazenamento de partes

criptografadas de documentos

Page 61: Troca de Mensagens

mecanismos de incentivo

•  free-riding –  relação com tragedy of the commons –  exemplos: email, compartilhamento, …

•  mecanismos –  reputação (confiança) –  troca –  ignorar o problema

•  replicação em gde escala

•  importância para sistemas colaborativos –  em especial grades computacionais!

Page 62: Troca de Mensagens

grades

Page 63: Troca de Mensagens

grades - ex ourgrid

Page 64: Troca de Mensagens

reputação e micropagtos

•  relação com estrutura do sistema •  sistemas com suporte a anonimato:

–  incompatibilidade com reputação – ok com micropagamentos

•  sistemas com identificação de nós/usuários – diferenças no dinamismo do grupo de

usuários

Page 65: Troca de Mensagens

micropagtos

•  micropagtos –  em geral requer que serviços sejam realizados em

pequenos blocos associados à moeda de troca •  provas de trabalho (pow)

–  non-fungible •  trabalho executado não tem valor específico •  impede executor de inundar o sistema com pedidos

–  prova de gasto de ciclos de CPU •  exemplo com hash de segredo que tem que ser adivinhado

como pow

•  dinheiro eletrônico –  uso de corretores que emitem e controlam uso