• Nenhum resultado encontrado

Comunicação orientada a mensagens

N/A
N/A
Protected

Academic year: 2021

Share "Comunicação orientada a mensagens"

Copied!
69
0
0

Texto

(1)
(2)

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

(3)

Sistemas de mensagens

•  suporte para ponto a ponto e grupos

•  desacoplamento

–  temporal

•  persistência das mensagens –  espacial

(4)

Comunicação em grupo

•  primitiva única transmite msgs a grupo de procs

•  grupos abertos e fechados

•  grupos estáticos e dinâmicos

(5)

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

(6)

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();

(7)

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

(8)

Operações Coletivas no MPI

•  Barrier: sincronização pura

•  Broadcast

•  Gather

•  Scatter

•  Reduction

(9)
(10)

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)

(11)
(12)

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 "

(13)

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++ •  ...

(14)

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

(15)
(16)

OO-SPMD Jacobi

•  barreiras forçam sincronização antes da execução de nova

chamada assíncrona  chamadas assíncronas    

(17)

sistemas de comunicação em grupo

•  forte vínculo com tolerância a falhas

–  gerência do grupo –  restrições de ordenação

•  outros

–  espaços de tuplas –  sistemas pub/sub –  ...

(18)

replicação e grupos

FE C RM RM RM FE C •  transparência •  consistência

(19)

Grupos de processos

–  serviços de envio •  envio atômico

•  envios ordenados: fifo, causal e total

–  serviços de controle de participantes

–  servidor de grupo ou membership server

–  saídas do grupo também podem ocorrer por falhas

(20)

ordenação com falhas

X

•  multicast confiável

(21)

ordenação total

•  todos os pontos devem processar as

mensagens em uma mesma ordem

–  independentemente da real ordem de envio

(22)

ordenação causal

•  aplicações só devem ser processar uma mensagem depois de ter visto mensagens "precedentes

causalmente"

–  independentemente da real relação de causa e efeito –  não implica ordem total

(23)

serviços de grupos

•  relação com sincronização e coordenação

(24)

“grupos” com baixo acomplamento

•  espaços de tuplas

•  pub/sub

Notify() serviço de comunicação origem destinatários

(25)
(26)

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

(27)

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

(28)

casamento de tuplas

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

associativa)

–  valores e tipos:

int x; float y;

in (3, ?x, "blablabla", ?y)

(29)
(30)

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;

(31)

exemplo

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

(32)

interpretações do espaço de tuplas

•  muitas vezes chamado de espaço virtual compartilhado

espaço compartilhado

(33)

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)

(34)

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

(35)

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

(36)

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

(37)

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.

(38)

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

(39)

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.

(40)

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

(41)

desacoplamento espacial

Notify() Notify() Notify() Notify() serviço de eventos publicador publica

(42)

desacoplamento temporal

Notify() Notify() Notify() serviço de eventos publicador publica Notify() serviço de eventos publicador

(43)

desacoplamento de sincronização

Notify() Notify() serviço de eventos publicador publica

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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

(49)

linguagens com filtros

•  filtros podem ser dados por:

–  strings •  SQL

•  expressões lógicas –  templates

–  código executável •  relação com strings

(50)

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

(51)

arquiteturas

•  centralizadas e distribuídas

serviço de pub/sub serviço de pub/sub

(52)

arquiteturas centralizadas

•  facilidade de ordenação

•  consistência e transações

•  problemas de escalabilidade

(53)

arquiteturas distribuídas

•  redes de servidores

•  rede de overlay

(54)

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

(55)

roteamento

•  inscrições usadas para estabelecer rotas

comuns

•  uso de anúncios para facilitar roteamento

–  Siena, Rebecca

val<10 val<5

(56)

relação com p2p

•  contexto de p/s é um dos que estimulou

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.

(57)

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

.

.

.

(58)

características

•  compartilhamento de recursos sem

necessidade de um elemento centralizador

–  ciclos de CPU, armazenamento, banda ...

•  instabilidade e conectividade variável como

normal

(59)

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

(60)

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

(61)

p2p - arquitetura

•  redes de overlay

–  noções de vizinhança e conectividade

(62)

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

(63)

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

(64)

ñ estruturadas descentralizadas

•  todos os participantes têm papel simétrico

–  uso de bases de dados ou até servidores para encontrar algum participante corrente

(65)
(66)

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

(67)

arquiteturas estruturadas

•  roteamento baseado em endereço

/identificador de nó

•  conteúdo: arquivos armazenados em nós

com identificador próximo ao seu

(68)
(69)

relação com forma de comunicação

•  como se encaixaria um sistema de RPC

aqui?

Referências

Documentos relacionados

After selecting the participants, we applied a standardized questionnaire which had been previously tested by the research group, and collected data on socioeconomic

De acordo com SUKHIANI e colaboradores (1996), JERRAM &amp; DEWEY (1999b) e MAYHEW e colaboradores (2004), cães que realizam cirurgia descompressiva podem reapresentar os

In a study with 5,306 patients carried out by the Global Research on Acute Conditions Team (GREAT), among a great number of biomarkers measured at admission in patients with

Figure 1 – Percentage cost reduction in delivered prescription drugs purchased via reverse auction in comparison with private costs according to each drug group in heart failure

The aim of this study was first to evaluate the production of ethanol and volatile compounds by eight yeast strain utilizing coffee residues coffee pulp and coffee wastewater

O objetivo principal dessa dissertação é apresentar uma proposta de redesign de um Protótipo Inicial de WebGIS para facilitar sua utilização e aumentar as percepções

Regarding the design of the study, we included randomized clinical trials, clinical trials, community studies with comparison of an intervention group with a control group,

Este projeto, voltado para o meio da animação e ilustração, desenvolve material abordando a mecânica de corpos de animais (O estudo de anatomia, estrutura, movimentação