troca de mensagens

Post on 09-Jan-2017

227 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Troca de Mensagens�Sistemas Fracamente Acoplados

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

modelos de comunicação

•  publish/subscribe e espaços de tuplas

pub/sub

serviço de distribuição

P

P

P

P

C

C P

C

C

C

C

•  serviço desacopla produtores de consumidores

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

desacoplamento espacial

NewInfo()

NewInfo()

NewInfo()

NewInfo()

serviço de eventos

produtor

produz

desacoplamento temporal

NewInfo() NewInfo()

NewInfo()

serviço de eventos

produtor

produz

NewInfo()

serviço de eventos

produtor

desacoplamento de sincronização

NewInfo()

NewInfo()

serviço de eventos produtor

produz

•  casamento com assincronismo

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

Espaços de Tuplas

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

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

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

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?

Linda - exemplo de programa

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; }

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.

interpretações do espaço de tuplas

•  muitas vezes chamado de espaço virtual compartilhado

espaço compartilhado

processos

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

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

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

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

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.

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

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

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

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…

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

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

comunicação

•  mensagens

•  invocações – oneway ou assíncronas

arquiteturas

•  centralizadas e distribuídas

serviço de pub/sub

serviço de pub/sub

arquiteturas centralizadas

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

arquiteturas distribuídas

•  redes de servidores

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

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

Fluxos de Eventos

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.

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

.  

.  

.

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

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

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

p2p - arquitetura

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

independentes daquelas da rede subjacente

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

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

ñ 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

exemplo ñ estruturada descentralizada

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

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

exemplo busca estruturada

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)

Pastry – tabela de roteamento

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

mapeamento de ID para IP

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

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”

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

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

segurança

•  integridade •  confidencialidade •  identificação

–  reputação •  controle de acesso

anonimato

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

•  paranóia X usabilidade

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

exemplo: Tor

http://tor.eff.org/�

Tor

Tor

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

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!

grades

grades - ex ourgrid

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

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

top related