Download - Troca de Mensagens
![Page 1: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/1.jpg)
Troca de Mensagens�Sistemas Fracamente Acoplados
![Page 2: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/3.jpg)
modelos de comunicação
• publish/subscribe e espaços de tuplas
![Page 4: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/6.jpg)
desacoplamento espacial
NewInfo()
NewInfo()
NewInfo()
NewInfo()
serviço de eventos
produtor
produz
![Page 7: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/7.jpg)
desacoplamento temporal
NewInfo() NewInfo()
NewInfo()
serviço de eventos
produtor
produz
NewInfo()
serviço de eventos
produtor
![Page 8: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/8.jpg)
desacoplamento de sincronização
NewInfo()
NewInfo()
serviço de eventos produtor
produz
• casamento com assincronismo
![Page 9: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/10.jpg)
Espaços de Tuplas
• idéia originada com Linda • dualidade: memória compartilhada X
troca de mensagens
![Page 11: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/14.jpg)
Linda - exemplo de programa
![Page 15: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/17.jpg)
interpretações do espaço de tuplas
• muitas vezes chamado de espaço virtual compartilhado
espaço compartilhado
processos
![Page 18: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/29.jpg)
comunicação
• mensagens
• invocações – oneway ou assíncronas
![Page 30: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/30.jpg)
arquiteturas
• centralizadas e distribuídas
serviço de pub/sub
serviço de pub/sub
![Page 31: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/31.jpg)
arquiteturas centralizadas
• facilidade de ordenação • consistência e transações • problemas de escalabilidade
![Page 32: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/32.jpg)
arquiteturas distribuídas
• redes de servidores
• rede homogênea de clientes/servidores – mais complicado de manter
![Page 33: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/34.jpg)
Fluxos de Eventos
![Page 35: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/40.jpg)
p2p - arquitetura
• redes de overlay – noções de vizinhança e conectividade
independentes daquelas da rede subjacente
![Page 41: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/43.jpg)
ñ 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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/44.jpg)
exemplo ñ estruturada descentralizada
![Page 45: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/45.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/47.jpg)
exemplo busca estruturada
![Page 48: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/48.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/49.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/50.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/51.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/52.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/53.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/54.jpg)
segurança
• integridade • confidencialidade • identificação
– reputação • controle de acesso
![Page 55: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/55.jpg)
anonimato
– publicador (usuário ou nó) – interessado (usuário ou nó) – detalhes da consulta
• paranóia X usabilidade
![Page 56: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/56.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/57.jpg)
exemplo: Tor
http://tor.eff.org/�
![Page 58: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/58.jpg)
Tor
![Page 59: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/59.jpg)
Tor
![Page 60: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/60.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/61.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/62.jpg)
grades
![Page 63: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/63.jpg)
grades - ex ourgrid
![Page 64: Troca de Mensagens](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/64.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052419/587361af1a28ab027e8bd252/html5/thumbnails/65.jpg)
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