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