Académique Documents
Professionnel Documents
Culture Documents
0::0::::
R1
0::0::::
.
.
Repo si t6ri o c o m regra s
e pro gra m a s de c o n versa o
roker de mensagens nao e considerado como uma
~integral do sistema de enfileiramento.
Urn broker de mensagens pode ser tao simples como
reformatador para mensagens. POl'exemplo, suponha
~uma mensagem que chega contenha uma tabela de
banco de dados na qual os registros sac separados pOl'
delimitador especial definal de registro eque os cam-
- - dentro de urn registro tenham urn comprimento fixo
ecido. Se aaplicac:;aodestinatana esperar urn delimi-
r diferente entre registros, e tambem esperar que os
os tenham comprimentos variaveis, urn broker de
-= agens pode ser usado para converter mensagens para
:ormato esperado pelo destinatario.
Emurn ambiente mais avanc:;ado,urn broker de men-
_ gens pode agir como urn gateway de nivel de aplicac:;ao
-;....i'. pOl'exemplo, manipule aconversao entre duas aplica-
_- - diferentes debancos dedados. Nesses casos, freqiien-
~ntenao sepode garantir que toda ainformac:;aoconti-
_ na mensagem de entrada possa ser realmente transfor-
emalgo apropriado para amensagem de safda.
Contudo, 0mais comum e utilizar urn broker de
-=ll agens para integra~ao avanc:;ada de aplica~oes
presariais (E nterprise Application Integration -
, como discutimos no Capitulo I. Nesse caso, em
~z de (apenas) converter mensagens, urn broker e res-
.: avel pOl' combinar aplicac:;6es com base nas mensa-
~=ns que sac trocadas. Nesse modelo, denominado
ublicar/subescrever, aplicac:;6es enviam mensagens na
=arma de publicar. Em particular, elas podem publicar
a mensagem sobre 0t6pico X, que depois e enviada
..:. broker. Entao, aplicac:;6es que declararam seu interes-
:~em mensagens sobre 0topico X, isto e, subscreveram
_ ~ as mensagens, as receberao do broker. Formas mais
..:. :anc:;adasde intermediac:;ao tambem sac possiveis, mas
'aremos discuss6es mais detalhadas ate 0Capitulo 13,
o centro deurnbroker demensagens encontra-se urn
::-eposit6riode regras e programas que podem transformar
a mensagem do tipo Tl emuma mensagem do tipo 72.
oproblema edefinir as regras edesenvolver os programas.
.-\maioria dos produtos debroker demensagens vemacom-
?afi.hada de sofisticadas ferramentas de desenvolvirnento
mas, narealidade, 0reposit6rio ainda precisa ser preenchi-
o par especialistas. Este eurnexemplo perfeito deproduto
-omercial cuja propaganda enganosa declara que eleforne-
'inteligencia' quando, na verdade, a unica inteligencia
que sepode encontrar esta nacabec:;ados especialistas.
b s e rvac ao s ob re s i s t e m as d e e nnl e i ram e nt o d e m e ns ag e ns
Considerando 0que dissemos sobre sistemas deenfi-
leiramento de mensagens, poderiamos concluir que eles
existem ha longo tempo na forma de implementac:;6es
para servic:;osde e-mail. Sistemas de e-mail geralmente
sao implementados par meio de urn conjunto de servido-
res de correio que armazenam e repassam mensagens em
nome dos usuarios em hospedeiros diretamente conecta-
dos ao servidar. Em geral, 0roteamento e excluido, por-
que sistemas de e-mail podem fazer usa direto dos servi-
c:;osde transporte subjacentes. Par exemplo, no protocolo
de correio para a Internet, SMTP (Postel, 1982), uma
mensagem e transferida estabelecendo uma conexao TCP
direta com 0servidor de correio destinatario.
oque tomaos sistemas de e-mail especiais emcom-
parac:;aocom os sistemas de enfileiramento de mensagens
e que eles visam primariamente a prover suporte direto a
usuarios finais. Isso explica, pOl'exemplo, pOl'que varias
aplicac:;6esde groupware sac baseadas diretamente emurn
sistema de e-mail (Khoshafian e Buckiewicz, 1995).
Ademais, sistemas de e-mail podem tel' requisitos muito
especificos como filtragem automatica de mensagens,
supOltepara bancos dedados avanc:;adosdemensagens (pOl'
exemplo, para recuperar comfacilidade mensagens arma-
zenadas anteriormente) e assim pOl'diante.
Sistemas gerais de enfileiramento de mensagens nao
visam a suportar somente usuarios finais. Uma questao
importante e que eles sac montados para possibilitar
comunicac:;ao persistente entre processos, independente-
mente de urn processo estar ou nao executando uma apli-
cac:;aode usuario, manipular acesso aurn banco de dados,
realizar calculos e assim par diante. Essa abordagem
resulta em urn conjunto de requisitos para sistemas de
enfileiramento de mensagens diferente do conjunto de
requisitos para sistemas de e-mail pmos. Par exemplo,
em geral, sistemas de e-mail nao precisam fornecer
entrega garantida de mensagens, prioridades de mensa-
gens, facilidades de registro, multicasting eficiente,
balanceamento de carga, tolerancia a falha e assim pOl'
diante, para uso geral.
POl' conseguinte, sistemas de enfileiramento de
mensagens de usa geral tern ampla faixa de aplicac:;6es,
incluindo e-mail, fluxo de trabalho, groupware e proces-
samento em lotes. Entretanto, como ja afirmamos antes,
aarea de aplicac:;aomais importante eaintegrac:;aode urn
conjunto de bancos de dados e aplicac:;6es (possivelmen-
te amplamente dispersos) em urn sistema federativo de
informac:;6es (Hohpe e Woolf, 2004 ). POl' exemplo, uma
consulta que abranja varios bancos de dados pode preci-
sar ser repartida emsubconsultas que sac repassadas para
bancos de dados individuais. Sistemas de enfileiramento
de mensagens ajudam fornecendo meios basicos para
empacotar cada subconsulta em uma mensagem e rotea-
la ate 0banco de dados adequado. Outras facilidades de
comunicac:;ao que discutimos neste capitulo sac muito
menos adequadas.
4 . 3 . 3 E x e m p l o: s i s t e m a d e e nfi l e i ram e nt o d e m e ns ag e ns
W e b Sp h e re d a I B M '
Para ajudar a entender como sistemas de enfileira-
mento de mensagens funcionam na pratica, vamos estu-
dar urn sistema especifico, a saber, 0sistema de enfilei-
ramento de mensagens que faz parte do produto
WebSphere da IBM. Conhecido anteriormente como
MQSeries, agora seu nome e WebSphere MQ. Ha uma
profusao de documentac;;ao sobre 0WebSphere MQ e,
no que vamos expor a seguir, so podemos recorrer aos
princfpios basicos. Muitos detalhes arquitet6nicos refe-
rentes as redes de enfileiramento de mensagens podem
ser encontrados em IBM (2005b, 2005d). Programar
redes de enfileiramento de mensagens nao e algo que
possa ser aprendido em uma tarde de domingo, e 0guia
de programac;;ao do MQ (IBM, 2005a) e urn born exem-
plo para mostrar que ir dos princfpios a pratica requer
consideravel esforc;;o.
A arquitetura basica de uma redede enfileiramen-
to MQ ebastante direta, como mostrado na Figura 4 .19.
Todas as filas sao gerenciadas por gerenciadores de
fila. Urn gerenciador de fila e responsavel por retirar
mensagens de suas filas erepassa-las a outros gerencia-
dores de fila. Da mesma maneira, urn gerenciador de
fila e responsavel por manipular mensagens que che-
gam retirando-as da rede subjacente e, na sequencia,
armazenando cada mensagem na fila de entrada adequa-
da. Para dar uma ideia do que a troca de mensagens
pode significar: uma mensagem tern urn tamanho
padrao maximo (default) de 4 MB, mas este pode ser
aumentado ate 100MB. Normalmente uma fila e res-
tringida a 2 GB de dados, porem, dependendo do siste-
ma operacional subjacente, e facil ajustar esse maximo
para urn valor mais alto.
Gerenciadores de fila sao conectados aos pares por
meio de canais de mensagens, que sao uma abstrac;;aode
conexoes de myel de transporte. Urn canal de mensagens
euma conexao unidirecional confiavel entre urn gerencia-
dor de fila de envio e urn gerenciador de fila de recebi-
mento, pela qual as mensagens enfileiradas sao transpor-
tadas. Por exemplo, urn canal de mensagens baseado na
Tro c a de m en sa gen s
(a ssi n c ro n a s)
Internet e implementado como uma conexao TCP. Cada
uma das duas extrernidades de urn canal de mensagens e
gerenciada por urn agente de canal de mensagens
(Message Channel Agent - MCA).
Basicamente, urn MCA de envio nada mais faz do
que verificar filas de envio em busca de uma mensagem,
embrulhar essa mensagem em urn pacote de nlvel de
transporte e envia-la pela conexao a seu MCA de recebi-
mento associado. Da mesma maneira, a tarefa basica de
urn MCA de recebimento e ficar a escuta de urn pacote
que chega, desempacota-lo e, na sequencia, armazenar a
mensagem desempacotada na fila apropriada.
Gerenciadores de fila podem ser ligados ao
mesmo processo que a aplicac;;ao cujas filas eles geren-
ciam. Nesse caso, as filas ficam ocultas da aplicac;;ao
por tras de uma interface padronizada mas, na verdade,
podem ser manipuladas diretamente pela aplicac;;ao.
Uma organizac;;ao alternativa e aquela em que gerencia-
dores de fila e aplicac;;oes executam em maquinas dife-
rentes. Nesse caso, e oferecida a aplicac;;ao a mesma
interface oferecida quando 0gerenciador de fila ecolo-
cado na mesma maquina. Contudo, ainterface eimple-
mentada como urn proxy que se comunica com 0
gerenciador de fila usando a tradicional comunicac;;ao
slncrona baseada em RPC. Desse modo, 0MQ conser-
va basicamente 0modelo no qual so filas locais para
uma aplicac;;ao podem ser acessadas.
Urn componente importante do MQ eformado pelos
canais de mensagens. Cada canal de mensagens tern exa-
tamente uma fila de envio associada, naqual ele obtem as
mensagens que deve transferir para a outra extrernidade.
A transferencia ao longo do canal pode ocorrer se os seus
MCAs, de envio e de recepc;;ao, estiverem ligados e em
funcionamento. Exceto a iniciac;;aomanual de ambos os
MCAs, ha diversos modos alternativos de iniciar urn
canal, alguns dos quais discutiremos a seguir.
-ma alternativa e fazer com que uma aplica~ao ini-
- - tamente sua extremidade de urn canal ativando 0
~de envio ou de recebimento. Contudo, do ponto de
transparencia, essa alternativa nao emuito atraen-
-ma abordagem mais apropriada para iniciar urn
_~ de envio e configurar a fila de envio do canal de
a acionar urn gatilho logo que uma mensagem for
da na fila. Esse gatilho esta associado com urn
ulador para iniciar 0MCA de envio de modo que
aremover mensagens da fila de envio.
Lma outra alternativa e iniciar urn MCA pel a rede.
7_ ?CUticular,seurn lado de urn canal ja estiver ativo, ele
enviar uma mensagem de controle requisitando que
MCA seja iniciado. Tal mensagem de controle e
da a urn daemon que esta a escuta em urn endere~o
onhecido na mesma maquina eIl).que 0outro MCA
- r er iniciado.
Canais param automaticamente ap6s a expira~ao de
ernpo especificado durante 0qual nenhuma mensa-
foi colocada na fila de envio.
Cada MCA tern urn conjunto de atributos associados
_~ determinam 0comportamento global de urn canal.
= desses atributos sao apresentados na Tabela 4 .4 .
_ ;alores dos atributos do MCA de envio erecebimento
- em ser compativeis e talvez negociados antes de urn
poder ser estabelecido. Por exemplo, e 6bvio que
os MCAs devem suportar 0mesmo protocolo de
orte. Urn exemplo de urn atributo nao negociavel e
mensagens devem ou nao ser entregues na mesma
_ ~rn em que foram colocadas na fila de envio. Se urn
_ CA quiser entrega emordem Fifo, 0outro deve aquies-
_ . Urn exemplo de urn valor de atributo negociavel e 0
primento maximo da mensagem, que sera escolhido
nas como 0valor minimo especificado por qualquer
dos MCAs.
Desc ri ~ a o
Determ i n a 0pro to c o lo de tra n s po rte
a ser u sa do
In di c a qu e a s m en sa gen s devem ser
en tregu es n a o rdem em qu e fo ra m en vi a da s
C o m pri m en to m a xi m o de u m a u n i c a
m en sa gem
Espec i fi c a 0n u m ero m a xi m o de n o va s
ten ta ti va s de i n i c i a r 0MC A rem o to
Nu m ero m a xi m o de vezes qu e 0MC A ten ta ra
c o lo c a r u m a m en sa gem rec ebi da n a fi la
C c m pri m en to
de m en sa gem
'u ste de c o n ta gem
de n o va s ten ta ti va s
o va s ten ta ti va s
de en trega
a bela 4.4 Algu n s a tri bu to s a sso c i a do s c o m a gen tes de c a n a l
de m en sa gen s.
frans fe re nc i a d e m en sa gen s
Para transferir uma mensagem de urn gerenciador
de fila para outro gerenciador de fila (possivelmente
remoto), e necessario que cada mensagem contenha 0
endere~o de seu destinatario, para 0que e usado urn
cabe~alho de transmissao. Urn endere~o em MQ e com-
posta de duas partes. A primeira parte consiste no nome
do gerenciador de fila para 0qual a mensagem deve ser
entregue. A segunda parte e 0nome da fila destinataria
que esta sob os cuidados do gerenciador ao qual a men-
sagem deve ser anexada.
Alem do endere~o do destinatario, tambem e
necessario especificar a rota que a mensagem deve
seguir. A especifica~ao da rota e feita com 0forneci-
mento do nome da fila de envio local a qual a mensa-
gem deve ser anexada. Portanto, nao enecessario forne-
cer a rota completa em uma mensagem. Lembre-se de
que cada canal de mensagens tern exatamente uma fila
de envio. Quando determinamos a qual fila de envio
uma mensagem deve ser anexada, na verdade estamos
especificando para qual gerenciador de fila uma mensa-
gem deve ser repassada.
Na maioria dos casos, as rotas estao armazenadas
explicitamente dentro de urn gerenciador de fila em uma
tabela de roteamento. Uma entrada de uma tabela de
roteamento eurn par (destQM, sendQ), onde destQM e 0
nome do gerenciador da fila destinataria, e sendQ e 0
nome da fila de envio local a qual uma mensagem para
aquele gerenciador de fila deve ser anexada. [Urnaentra-
da de tabela de roteamento e denominada 'apelido'
(alias) emMQ.]
E possivel que uma mensagem precise ser transferi-
da por varios gerenciadores de fila antes de chegar a seu
destino. Sempre que urn desses gerenciadores intermedia-
rios de fila recebe amensagem, ele simples mente extrai 0
nome do gerenciador da fila destinataria do cabec;:alhoda
mensagem e faz uma consulta a tabela de roteamento
local para descobrir aqual fila de envio local amensagem
deve ser anexada.
E importante perceber que cada gerenciador de fila
tern urn nome exclusivo no ambito do sistema, e esse
nome eefetivamente usado como identificador para esse
gerenciador de fila. 0problema de usar tais nomes eque
substituir urn gerenciador de fila ou mudar seu nome
afetara todas as aplica~6es que the enviam mensagens.
Os problemas podem ser amenizados utilizando urn ape-
lido local para nomes de gerenciadores de fila. Urn ape-
lido definido dentro de urn gerenciador de fila M1e urn
outro nome para 0gerenciador de fila M2, mas que s6
esta disponivel para aplicac;:6es que tenham interface
para M1. Urn apelido permite a utilizac;:ao do mesmo
nome (16gico) para uma fila, mesmo que 0gerenciador
dessa fila mude. Mudar 0nome de urn gerenciador de
fila requer que mudemos seu apelido em todos os geren-
ciadores de fila. Contudo, as aplicac;:6es podem conti-
nuar sem ser afetadas.
oprincipio da utiliza~ao de tabelas de roteamento e
apelidos e mostrado na Figura 4 .20. Por exemplo, uma
aplica~ao ligada ao gerenciador defila QMA pode serefe-
rir aurn gerenciador remoto defila usando 0apelido local
LAI. Em primeiro lugar, 0gerenciador de fila consul tara
o destinatario real na tabela de apelidos para descobrir
que ele e 0gerenciador de fila QMC. A rota para QMC e
encontrada na tabela de roteamento, que determina que
mensagens para QMC devem ser anexadas a fila de saida
SQI, usada para transferir mensagens para 0gerenciador
de fila QMB. Esse ultimo usara sua tabela de roteamento
para repassar a mensagem para QMC.
Seguir essa abordagem de roteamento e apelido
resulta em uma interface de programa~ao que, em essen-
cia, e relativamente simples, denominada interface de
fila de mensagens (Message Queue Interface - MQI).
As primitivas mais importantes da MQI estao resumidas
na Tabela 4 .5.
Atri bu to
MOo pen
MOc i o se
MOpu t
MOget
Descri"iio
Abra u m a fi la (po ssi velm en te rem o ta )
Fec he u m a fi la
C o lo qu e u m a m en sa gem em u m a fi la a berta
Obten ha u m a m en sa gem de u m a fi la (lo c a l)
Tabela 4 .5 P ri m i ti va s di spo n i vei s n a i n terfa c e de en fi lei ra m en to
de m en sa gen s.
Para colocar mensagens emuma fila, uma aplica~ao
chama a primitiva MQo pen , especificando uma fila des-
tinataria em urn gerenciador de fila especifico. 0geren-
ciador de fila pode ser nomeado usando 0apelido dispo-
nivel no local. Se afila destinataria e, na verdade, remota
ou nao e completamente transparente para a aplica~ao.
MQo pen tambem deve ser chamada se aaplica~ao quiser
obter mensagens de sua fila local. Somente filas locais
podem ser abertas para ler mensagens que chegam.
Quando uma aplica~ao concluir 0acesso auma fila, deve
fechar chamando MQc lo se.
Mensagens podem ser escritas para uma fila com 0
uso de MQpu t ou lidas de uma fila com 0uso de MQget.
Em principio, mensagens sac retiradas de uma fila de
acordo com uma prioridade. Mensagens com a mesma
prioridade sac retiradas com base no criterio primeira a
entrar, primeira a sair, isto e, a mensagem que esta pen-
dente hii mais tempo e retirada em primeiro lugar.
Tambem epossivel requisitar mensagens especificas. POl'
fim, MQ fornece facilidades para sinalizar as aplica90es
quando chegaram mensagens, evitando assim que uma
aplica9ao tenha de sondar continuamente uma fila de
mensagens aprocura de mensagens que entram.
G eren c i a m en to de redes de so brepo si c a o
Pela descri~ao que fizemos ate aqui, deve ter fica-
do claro que uma parte importante do gerenciamento de
sistemas MQ e conectar os varios gerenciadores de fila
por uma rede de sobreposi~ao consistente. Ah~m do
mais, essa rede precisa ser mantida ao longo do tempo.
Para redes pequenas, essa manuten~ao nao exigira mais
do que urn trabalho medio de administra9ao, mas as
coisas se complicam quando 0enfileiramento de men-
sagens e usado para integrar e desintegrar grandes sis-
temas existentes.
Uma questao importante em MQ e que redes de
sobreposi~ao precisam ser administradas manualmente.
Essa administra~ao nao envolve apenas erial' canais
entre gerenciadores de fila, mas tambem preencher as
tabelas de roteamento. E 6bvio que isso pode se trans-
formar em urn pesadelo. Infelizmente, 0suporte de
gerenciamento para sistemas MQ e avan9ado somente
no sentido de que urn administrador pode ajustar prati-
camente todos os atributos posslveis e retocar qualquer
configura~ao imaginavel. Todavia, a verdade nua e crua
e que os canais e tabelas de roteamento precisam ser
mantidos manualmente.
No centro do gerenciamento darede de sobreposi~ao
esta 0componente fun~ao de controle de canal que logi-
camente esta situado entre agentes de canais de mensa-
gens. Esse componente permite que urn operador monito-
:;c exatamente 0que estl acontecendo nas duas extremi-
de urn canal. Adernais, ele eusado para criar canais
las de roteamento, mas tambem para gerenciar os
_ nciadores de fila que hospedam os agentes de canais
- mensagens. De certo modo, essa abordagem do geren-
ento da sobreposi~ao e muito parecida com a do
;=-"n iamento de urn cluster de servidores no qual e
- 0urn unico servidor de administra~ao. Nesse ultimo
- . 0servidor oferece, emessencia, somente uma shell
_ ota para cada maquina no cluster, junto com algumas
~oes coletivas, para manipular grupos de maquinas.
a noticia sobre gerenciamento de sistemas distribui-
. =eque ele oferece varias oportunidades se voce estiver
urando uma area na qual explorar novas solu~oes
problemas serios.
C om u ni c ac ao ori e nt ad a a fl u x o
A discussao sobre comunica~ao que fizernos ate aqui
~ oncentrou na troca de unidades de informa~ao mais
_ menos completas e independentes. Entre os exemplos
__- 0urna requisi~ao para invocar urn procedimento, a
5pOsta a essa requisi~ao e mensagens trocadas entre
lica~6es, como em sistemas de enfileiramento de men-
- ~ens. 0aspecto caracteristico desse tipo de comunica-
>- 0eque nao importa em que ponto particular do tempo
_ omunica~ao ocorre. Embora 0funcionarnento de urn
rnapossa ser muito lento ou muito rapido, aternpori-
,ao nao tern efeito sobre a corre~ao.
Tambem ha formas de comunica~ao nas quais a
-~mporiza~ao desempenha papel crucial. Considere, por
i'xemplo, urn fluxo de audio construido como uma
seqUencia de amostras de 16bits, cada uma representan-
o a amplitude de uma onda sonora, como e feito na
:nodula~ao por codifica~ao de pulso (Pulse Code
_lodulation - PCM). Suponha tambem que 0fluxo de
audio represente qualidade de CD, o.que significa que a
onda sonora original foi amostrada auma freqUencia de
.100Hz. Para reproduzir 0som original, e essencial
que as amostras no fluxo de audio sejam tocadas na
ordem em que aparecem no fluxo, mas tambem a inter-
valos de exatamente 1/44.100 segundos. Reproduzi-Ias a
uma taxa diferente resultara em uma versao incorreta do
om original.
A questao que abordamos nesta se~ao equais SaGas
facilidades que urn sistema distribuido deve oferecer
para trocar informa~6es dependentes de tempo como
fluxos de audio e video. Varios protocolos de rede que
tratam de comunica~ao orientada a fluxo sao discutidos
em Halsall (2001). Steinmetz e Nahrstedt (2004) ofere-
cern uma introdu~ao global a questoes de multimidia,
das quais faz parte a comunica~ao orientada a fluxo.
Processamento de consulta em fluxos de dados e discu-
tido em Babcock et a1, (2002).
4 . 4 . 1 Su p ort e p ara m T d i a c onI T nu a
osuporte para a troca de informa~6es dependentes
do tempo costuma ser denominado suporte para midia
continua. Midia se refere aos meios pelos quais a infor-
ma~ao e transmitida, nos quais estao incluidos meios de
armazenamento e transmissao, meios de apresenta~ao
como urn monitor e assim por diante. Urn tipo importan-
te de meio e 0modo como a informa~ao e representada.
Em outras palavras, como a informa<;ao e codificada em
urn sistema de computa<;ao? Diferentes representa~oes
sao usadas para diferentes tipos deinforma~ao. Por exem-
plo, em geral, 0texto e codificado como ASCII ou
Unicode. Imagens podem ser representadas emdiferentes
formatos como GIF ou J PEG. Fluxos de audio podem ser
codificados em urn sistema de computa~ao, por exemplo,
tomando amostras de 16bits usando PCM.
Emmidia continua (de representa(,;ao), as rela<;oes
temporais entre diferentes itens de dados san fundamen-
tais para interpretar corretamente 0que os dados realmen-
te significam. J a demos urn exemplo da reprodu~ao de
onda sonora correspondente a urn fluxo de audio. Como
outro exemplo, considere 0movimento. 0 moviinento
pode ser representado por uma serie de imagens na qual
imagens sucessivas devem ser apresentadas aespa~os uni-
formes detempo, T, sendo que urn valor tipico e30-4 0ms
por imagem. A reprodu~ao correta requer nao somente
mostrar cadaquadro individual de imagem na ordem cor-
reta, mas tambem aurna freqUencia constante de lIT ima-
gens por segundo.
Ao contrario da midia continua, a midia discreta
(de representa(,;ao) e caracterizada pelo fato de que as
rela~oes temporais entre itens de dados nao sao funda-
mentais para interpretar corretamente os dados. Exemplos
tipicos de midia discreta sao representa<;oes de texto e
imagens estaticas, mas tambem c6digo-objeto ou arqui-
vos executaveis.
Para capturar troca de informa~6es dependentes de
tempo, emgeral os sistemas distribuidos fornecem supor-
te para fluxos de dados. Urn fluxo de dados nada mais e
do que uma seqUencia de unidades de dados. Fluxos de
dados podem ser aplicados amidia discreta, bem como a
midia continua. Por exemplo, pipes Unix ou conex6es
TCP/IP sao exernplos tipicos de fluxos discretos de dados
(orientados abytes). Reproduzir urn arquivo de audio nor-
malmente requer estabelecer urn fluxo continuo de dados
entre 0arquivo e 0dispositivo de audio.
A temporiza~ao e crucial para fluxos continuos de
dados. Para capturar asp~ctos da temporiza~ao, costuma-
se fazer uma distin~ao entre diferentes modos de trans-
missao. No modo de transmissao assincrono os itens de
dados emurn fluxo sao transmitidos urnap6s 0outro, mas
nao ha nenhuma restri~ao de temporiza~ao sobre quando
a transmissao de itens deve ocorrer. Esse e 0caso tfpico
de fluxos discretos de dados. Por exemplo, urn arquivo
pode ser transferido como urn fluxo de dados mas, na
maioria das vezes, e irrelevante 0momenta exato emque
atransferencia de cada item e conclufda.
No modo de transmissao sincrono, ha urn atraso
fim-a-fim maximo definido para cada unidade em urn
fluxo de dados. Nao importa seuma unidade de dados for
transferida com muito mais rapidez do que 0atraso maxi-
mo tolerado. Por exemplo, urn sensor pode tomar uma
amostra detemperatura acerta taxa etransmiti-la por uma
rede ate urn operador. Nesse caso, pode ser importante
garantir que 0tempo de propagac;ao fim-a-fim pela rede
seja menor do que 0intervalo de tempo entre tomadas de
amostras, mas nenhum dano sera causado se as amostras
forem propagadas commaior rapidez do que anecessaria.
Por fim, emmodo de transmissao isocrono eneces-
sano que as unidades de dados sejam transferidas no
tempo certo. Isso significa que a transferencia de dados
esta sujeita aumatraso fim-a-fim que tern urn valor maxi-
mo e urn valor mfnimo, tambem denominados varia~5es
de atraso delimitado. 0modo de transmissao is6crono e
particularmente interessante para sistemas distribuidos de
multimidia, porque ele desempenha papel crucial na
representa~ao de audio e video. Neste capitulo, conside-
ramos fluxos de dados usando transmissao is6crona, aos
quais vamos nos referir simplesmente como fluxos.
Fluxos podem ser simples ou complexos. Urn fluxo
simples consiste em uma unica sequencia de dados, ao
passo que urn fluxo complexo consiste em vanos fluxos
simples relacionados denominados subfluxos. A rela~ao
entre os subfluxos emurn fluxo complexo tambem costu-
ma ser dependente de tempo. Por exemplo, audio estereo
pode ser transmitido por meio deurn fluxo complexo con-
sistindo em dois subfluxos, cada urn usado por urn unico
canal de audio. Contudo, eimportante que esses dois sub-
fluxos estejam continuamente sincronizados. Em outras
palavras, unidades de dados de cada fluxo devem ser
comunicadas aos pares para garantir 0efeito estereo.
Urn outro exemplo de fluxo complexo e 0que trans-
mite urn filme. Esse fluxo poderia consistir em urn unico
fluxo de video junto com dois fluxos para transmitir 0
Servi do r de
m u lti m i di a
Da do s de
m u lti m i di a
c o m pri m i do s
som do filme emestereo. Urn quarto fluxo poderia conter
legendas para surdos ou uma tradu~ao para uma lingua
diferente da do audio. Mais uma vez, asincroniza~ao dos
subfluxos eimportante. Se asincroniza~ao falhar, arepro-
du~ao do filme falhara. Voltaremos a sincroniza~ao de
fluxos mais adiante.
Da perspectiva de sistemas distribuidos, podemos
distinguir diversos elementos que sao necessarios para
suportar fluxos. Para simplificar, vamos nos concentrar
em fluxos de dados armazenados, ao contrario de fluxos
de dados transmitidos ao vivo. Nesse ultimo caso, dados
capturados em tempo real sao enviados a receptores pela
rede. A principal diferen~a entre os dois eque atransmis-
sao de fluxos de dados ao vivo oferece menos oportunida-
des de sintonizar urn fluxo. Entao, segundo Wu et al.
(2001), podemos esquematizar uma arquitetura cliente-
servidor geral para suportar fluxos continuos de multirni-
dia, como mostra aFigura 4 .21.
Essa arquitetura geral revela varias quest5es impor-
tantes que precisam ser enfrentadas. Em primeiro lugar,
os dados de multimfdia, em particular de video e, em
menor propor~ao, de audio, precisarao ser comprirnidos
substancialmente de modo a reduzir 0armazenamento
requerido e, em especial, a capacidade da rede. 0mais
importante da perspectiva de comunica~ao sao 0controle
da qua1idade da transmissao e as quest5es de sincroniza-
~ao. N6s os discutiremos em seguida.
4 . 4 . 2 F l u x os e Q u al i d ad e d e s e rvi c o
Requisitos de temporiza~ao (e outros nao funcio-
nais) geralmente sao expressos como requisitos de quali-
dade de servi~o (Quality of Service - QoS). Esses
requisitos descrevem 0que enecessano da parte do siste-
ma distribuido subjacente e da rede para assegurar que,
por exemplo, as rela~5es temporais em urn fluxo possam
ser preservadas. QoS para fluxos continuos dedados refe-
rem-se principalmente apontualidade, ao volume eacon-
fiabilidade. Nesta se~ao, exarninaremos mais de perto a
QoS e sua rela~ao com 0estabelecimento de urn fluxo.
Muito ja foi dito sobre como especificar QoS requeri-
da (veja, por exemplo, J in eNahrstedt, 2004 ). Da perspec-
aplicac;ao, emmuitos casos tudo se resume a espe-
algumas propriedades importantes (Halsall, 2001):
A taxa debits requerida aqual os dados devem ser
transportados.
o maximo atraso ate 0estabelecimento de uma
essao, isto e, quando uma aplicac;ao pode come-
>ar aenviar dados.
omaximo atraso fim-a-fim, isto e, quanta tempo
levara ate que uma unidade de dados chegue aurn
receptor.
A maxima variancia de atraso, ou vibrac;ao.
omaximo atraso de viagem de ida e volta.
E precise observar que ha muitos refinamentos que
~mser feitos para essas especificac;6es, como expli-
. por exemplo, por Steinmetz eNahrstadt (2004 ).
rudo, quando se trata de comunicac;ao orientada a
o baseada na pilha de protocolos da Internet, temos
as de aceitar viver com 0fato de que a base de
unicac;ao eformada por urn servic;o de datagramas de
or esforc;o extremamente simples: 0IF. Quando as
ficam pretas, como e facil de acontecer na
--ernet, a especificac;ao do IP perrnite que uma imple-
tac;ao do protocolo descarte pacotes sempre que
_ ar necessario. Hoje em dia, muitos (se nao todos) sis-
distribufdos que suportam comunicac;ao orientada
_ =uxo sao construfdos em cima da pilha de protocolos
=- Internet. La se van as especificac;6es de QoS! (Na ver-
e, 0IP fornece algum suporte de QoS, mas ele rara-
-~nte e implementado.)
Dado que 0sistema subjacente oferece apenas urn
::ervic;ode entrega de melhor esforc;o, urn sistema distri-
- ido pode tentar ocultar 0maximo possfvel afalta de
-:. .dade de servic;o. Felizmente ha varios mecanismos
que ele pode disponibilizar.
Em primeiro lugar, a situac;ao nao e realmente tao
ruim quanta a pintamos ate agora. Por exemplo, a
- ternet proporciona meios para diferenciar classes de
dos por meio dos seus servil;os diferenciados. Em
e encia, urn hospedeiro remetente pode marcar pacotes
de safda como pertencentes auma de varias classes, entre
P a c o te sa i da fo n te ~ 00B~ ~ 60
P a c o te c hega n o bu ffer ~ 0 0B~ ~
I ! I
5
elas uma classe de repasse acelerado que, basicamente,
especifica que urn pacote deve ser repassado pelo
repassador corrente com absoluta prioridade (Davie et
aI., 2002). Alem disso, ha tambem uma classe de repas-
se garantido, pela qual 0trafego e dividido em quatro
subclasses, aliadas atres modos de descartar pacotes se a
rede ficar congestionada. Por conseguinte, 0repasse
garantido define efetivamente uma faixa de prioridades
que podem ser designadas a pacotes e, por isso, perrnite
que as aplicac;6es diferenciem pacotes sensfveis ao
tempo de pacotes nao crfticos.
Alem dessas soluc;6es em nfvel de rede, urn sistema
distribufdo tambem pode ajudar a levar dados ate os
receptores. Embora em geral nao haja muitas ferramen-
tas disponfveis, uma que e particularmente util e usar
buffers para reduzir variancia de atraso. 0principio e
simples, como mostra aFigura 4 .22. Considerando certa
variancia no atraso da entrega de pacotes quando trans-
mitidos pela rede, 0receptor apenas os armazena emurn
buffer pelo tempo maximo. Isso permitira que 0receptor
passe pacotes para aaplicac;ao auma taxa regular, porque
sabe que sempre havera numero suficiente depacotes
entrando no buffer que garantira a reproduc;ao posterior
aquela taxa.
Claro que as coisas podem dar errado, como ilustra-
do pelo pacote #8 na Figura 4 .22. 0tamanho do buffer do
receptor corresponde a9 segundos de pacotes para passar
para a aplicac;ao. Infelizmente, 0pacote #8 levou 11
segundos para chegar ao receptor, quando entao 0buffer
ja estava completamente vazio. 0resultado e uma lacuna
na reproduc;ao da aplicac;ao. A unica soluc;ao e aumentar
o tamanho do buffer. A desvantagem 6bvia eque 0atraso
com que aaplicac;ao receptora pode comec;ar areproduzir
os dados contidos nos pacotes tambem aumenta.
Outras tecnicas tambem podem ser usadas. Perceber
que estamos lidando comurn servic;osubjacente demelhor
esforc;o tambem quer dizer que pacotes podem ser perdi-
dos. Para compensar essa perda na qualidade de servic;o,
precisamos aplicar tecnicas de correc;ao de erros (Perkins
et aI., 1998; Wah et aI., 2000). Requisitar que 0remetente
retransrnita urnpacote que esta faltando emgeral esta fora
de questao, portanto eprecise aplicar correl;3o de erro de
envio (forward error correction - FEC). Uma tecnica
~ 00B~ ~ ~ c u n a n a repro dU9a o
I I I
10 15 20
Tem po (s)
bem conhecida ecodificar os pacotes de saida de modo tal
que k de n pacotes recebidos seja 0suficiente para recons-
truir k pacotes corretos.
Urn problema que pode ocorrer e que urn unico
pacote contenha varios quadros de audio evideo. Por con-
sequencia, quando urn pacote e perdido, 0receptor pode-
ra realmente perceber uma grande lacuna durante arepro-
du<;aodos quadros. Esse efeito pode ser contornado, ate
certo ponto, intercalando quadros, como mostra a Figura
4 .23. Desse modo, quando urn pacote eperdido, alacuna
resultante em quadros sucessivos e distribuida ao longo
do tempo. Todavia, observe que essa abordagem requer
urn buffer de recebimento maior em compara~ao com a
nao-intercala~ao e, por isso, imp5e urn atraso de partida
mais alto para a aplica~ao receptora. Por exemplo, consi-
deremos a Figura 4 .23(b). Para repJ ;oduzir os primeiros
quatro quadros, 0receptor precisara ter quatro pacotes
entregues, em vez de so urn pacote, em compara~ao com
atransmissao nao intercalada.
4 . 4 . 3 Si nc roni zaG ao d e fl u x os
Uma questao importante em sistemas multirnfdia e
que fluxos diferentes, possivelmente na forma de urn
fluxo complexo, sao mutuamente sincronizados. A sin-
croniza~ao de fluxos trata de manter rela~5es temporais
entre fluxos. Ocorrem dois tipos de sincroniza~ao.
A forma mais simples e a sincroniza~ao entre urn
fluxo discreto de dados e urn fluxo continuo de dados.
Considere, por exemplo, uma exibi~ao de slides na Web
que foi aprimorada com audio. Cada slide etransferido do
servidor para 0cliente na forma de urn fluxo discreto de
dados. Ao mesmo tempo, 0cliente deve reproduzir urn
fluxo (ou parte dele) de audio especffico que combina
com 0slide emapresenta~ao e que tambem ebuscado no
servidor. Nesse caso, 0fluxo de audio tern de ser sincro-
nizado com a apresenta~ao dos slides.
Urn tipo mais exigente de sincroniza~ao e entre flu-
xos continuos de dados. Urn exemplo diario e a reprodu-
~ao de urnfilme na qual 0fluxo de video precisa estar sin-
cronizado com 0fluxo de audio, algo mais conhecido
como sincroniza~ao dos labios (lipsync). Urn outro exem-
plo de sincroniza~ao eareprodu~ao de urn fluxo de audio
estereo que consiste em dois subfluxos, urn para cada
canal. A reprodu~ao adequada requer que asincroniza~ao
entre os dois subfluxos seja bem exata: uma diferen~a de
mais de 20IlS pode distorcer 0efeito estereo.
A sincroniza~ao ocorre no nivel das unidades de
dados que comp5em urn fluxo. Em outras palavras, pode-
mos sincronizar dois fluxos somente entre unidades de
dados. A escolha doqueeexatamente uma unidade dedados
depende muito do nivel de abstra~ao no qual urn fluxo de
dados e visto. Para trazer as coisas para 0terreno concre-
to, considere mais uma vez urn fluxo de audio de qualida-
de de CD (de urn so canal). Em sua granularidade mais
fina, esse fluxo aparece como uma sequencia de amostras
de 16bits. Com uma frequencia de amostragem de4 4 .100
Hz, a sincroniza~ao com os outros fluxos de audio pode-
ria, em teoria, ocorrer aproximadamente a cada 23 IlS.
Ocorre que, para efeitos de estereo de alta qualidade, tal
myel de sincroniza~ao erealmente necessario.
Contudo, quando consideramos sincroniza~ao entre
urn fluxo de audio eurn fluxo de video para sincroniza~ao
dos labios (lipsync), podemos admitir uma granularidade
muito mais grosseira. Como explicamos, quadros de
video precisam ser apresentados a uma taxa de 25 Hz ou
mais. Considerando 0popular padrao NTSC de 29,97 Hz,
poderfamos agrupar amostras de audio em unidades logi-
cas que durassem tanto quanta aapresenta~ao de urn qua-
dro (33 ms). Assim, com uma frequencia de amostragem
de 4 4 .100Hz, 0tamanho de uma unidade de dados de
audio poderia ser de ate 1.4 70amostras, ou 11.760bytes
(considerando que cada amostra tenha 16 bits). Na prati-
P a c o te perdi do
En vi a do s IITJ0 0~ 110~ [2]~ IIrn [illlTIJ@]II ~ G] [ill IT ] I
P a c o tes perdi do s
I ITJ 0rn ~ 110~ [ill G] 110[2]lTIJ[illil ~ ~ @]IT ]I
ITJ 0~~rn~@]~G] 15 IT ]
Qu a dro s perdi do s
Ibl
~dades maiores, que duram 4 0, ou ate 80ms, podem
~oleradas (Steinmetz, 1996).
~ i sm o s d e s i nc roni zac ao
Agora vamos ver como a sincroniza<;ao e realmente
E preciso distinguir duas quest6es: (1) os mecanis-
- . asicos para sincronizar dois fluxos e (2) adistribui-
esses mecanismos emurn ambiente de rede.
~ecanismos de sincroniza<;ao podem ser vistos em
- -::rentes niveis de abstra<;ao. No nivel mais baixo, asin-
:=Diliza<;aoe feita explicitamente por opera<;6es sobre
Cl des de dados de fluxos simples. Esse principio e
::uado na Figura 4 .24 . Em essencia, ha urn processo
_-= -implesmente executa opera<;6es de leitura e escrita
~ Yarios fluxos simples, assegurando que essas opera-
_- - obede<;amas restri<;6es especificas de temporiza<;ao
= croniza<;ao.
Por exemplo, considere urn filme que e apresentado
o dois fluxos de entrada. 0fluxo de video contem
~ens nao comprimidas de baixa qualidade de
X~4 0pixels, cada uma codificada par urn unico byte,
_ e resulta em unidades de dados de video de 76.800
_ - cada. Suponha que as imagens sejam apresentadas a
~ 3z. ou uma imagem acada 33 ms. Adotamos apremis-
que 0fluxo de audio contem amostras de audio
~adas emunidades de 11.760bytes, cada uma corres-
: ente a 33 ms de audio, como acabamos de explicar.
- 0processo de entrada puder manipular 2,5 MB/s,
: ~mos conseguir sincroniza<;ao entre imagem e som
P ro c edi m en to qu e
Ie du a s u n i da des de
da do s de a u di o pa ra c a da
u n i da de de da do s de vi deo
simplesmente alternando entre aleitura de uma imagem e
aleitura de urn bloco de amostras de audio acada 33 ms.
A desvantagem dessa abardagem e que a aplica<;ao
fica total mente responsavel par implementar asincroniza-
<;ao, embora s6 tenha a disposi<;ao facilidades de baixo
nive!' Uma abardagem mais apropriada e oferecer auma
aplica<;ao uma interface que Ihepermita urn controle mais
facil de fluxos edispositivos. Voltando ao nosso exemplo,
suponha que a tela de video tenha uma interface de con-
trole que the permita especificar ataxa a qual as imagens
devem ser apresentadas. Alem disso, ainterface oferece a
facilidade para registrar urn manipulador definido por
usuario que e chamado toda vez que chegarem k novas
imagens. Uma interface semelhante e oferecida pelo dis-
positivo de audio. Com essas interfaces de controle, urn
desenvolvedor de aplica<;ao pode escrever urn programa
monitor simples que consiste emdois manipuladares, urn
para cada fluxo, que, em conjunto, verificam se os fluxes
de video eaudio estao suficientemente sincronizados e, se
necessario, ajustam a taxa com que sao apresentadas as
unidades de vIdeo ou audio.
Esse ultimo exemplo esta ilustrado na Figura 4 .25 ee
tipico de muitos sistemas middleware de multimidia. Na
verdade, middleware de multimidia oferece urn conjunto
de interfaces para controlar fluxos de audio e video,
incluindo interfaces para controlar dispositivos como
monitares, cameras, microfones e assim por diante. Cada
dispositivo tern suas proprias interfaces de alto nivel, entre
elas interfaces para avisar uma aplica<;ao quando ocorre
C o n tro le de m u lti m i di a
epa rte do m i ddlewa re
C a m a da de m i ddlewa re- {
Flu xo de en tra da
Apli c a qa o di z a o
m i ddlewa re 0qu e
la zer c o m Ilu xo s
de en tra da
algum evento. Esses eventos sao usados para escrever
manipuladores para sincronizar fluxos. Exemplos dessas
interfaces sao dados emBlair e Stefani (1998).
A distribuic.;ao de mecanismos de sincronizac.;ao e
uma outra questao que precisa ser examinada. Emprimei-
ro lugar, 0lado receptor de urn fluxo complexo, que con-
siste em subfluxos que requerem sincronizac.;ao, precisa
saber exatamente 0que fazer. Em outras palavras, ele
deve ter uma especijicar;iio de sincronizar;iio completa
disponivel no local. Uma pnitica comum e fomecer essa
informac.;ao de modo implicito, pela multiplexac.;ao de
diferentes fluxos em urn unico fluxo que contem todas as
unidades de dados, incluindo as de sincronizac.;ao.
Essa ultima abordagem para asincronizac.;aoe adota-
da por fluxos MPEG. Os padroes MPE G (Motion
Picture E xperts Group - grupo de especialistas em
cinema) formam urn conjunto de algoritmos para compri-
mir video e audio. Existem vanos padroes MPEG. 0
MPEG-2, por exemplo, foi projetado originalmente para
comprimir video de qualidade para transmissao broadcast
em4 a6Mbps. EmMPEG-2, urnmimero ilirnitado deflu-
xos continuos e discretos pode ser fundido em urn unico
fluxo. Cada fluxo de entrada e primeiro transformado em
urn fluxo de pacotes que transport a uma marca de tempo
baseada em urnrelogio de sistema de 90kHz. Na sequen-
cia, esses fluxos sao multiplexados em urn fluxo de pro-
grama que, entao, consiste em pacotes de comprimentos
variaveis, mas que tern algo em comum: todos eles tern a
mesma base de tempo. 0lado receptor demultiplexa 0
fluxo, usando as marcas de tempo de cada pacote como 0
mecanismo' basico para sincronizac.;aoentre fluxos.
Uma outra questao importante e se a sincronizac.;ao
deve ocorrer no lado remetente ou no lado receptor. Se 0
remetente manipular a sincronizac.;ao, pode ser possivel
fundir fluxos emurn unico fluxo comurn tipo diferente de
unidade de dados. Considere mais uma vez urn fluxo de
audio estereo que consiste em dois subfluxos, urn para
cada canal. Uma possibilidade etransferir cada fluxo inde-
pendentemente ao receptor e deixar que este sincronize as
amostras par apar. Como cada subfluxo pode estar sujeito
a atrasos diferentes, e obvio que a sincronizac.;ao pode ser
extremamente dificil. Uma abordagem mais apropriada e
fundir os dois subfluxos no remetente. 0fluxo resultante
consiste em unidades de dados compostas de pares de
amostras, uma para cada canal. Agora, basta apenas 0
receptor ler uma unidade de dados e subdividi-la em uma
amostra direita e outra esquerda. Nessa circunstancia, os
atrasos para ambos os canais sao identicos.
4 . 5 C om u ni c ac ao m u l t i c as t
Urn topico importante da comunicac.;ao em sistemas
distribuidos e 0suporte para enviar dados a varios recep-
tores, tambem conhecido como comunicac.;ao multicast.
Durante muitos anos, esse topico pertenceu ao dominio
dos protoccilos de rede, no qual foram implementadas e
avaliadas varias propostas para soluc.;oesno nivel de rede
e no nivel de transporte (J anie, 2005; Obraczka, 1998).
Uma questao importante emtodas as soluc.;oesera estabe-
lecer caminhos de comunicac.;ao para a disseminac.;ao de
informac.;oes. Na pr<itica, isso envolvia urnimenso esfon;o
de gerenciamento que, em muitos casos, exigia interven-
c.;aohumana. Ademais, como nao havia nenhuma conver-
gencia de propostas, os ISPs se mostravam relutantes em
suportar multicasting (Diot et aI., 2000).
Com 0advento da tecnologia peer-to-peer e, princi-
pal mente, do gerenciamento estruturado de sobreposic.;ao.
ficou mais facil estabelecer caminhos de comunicac.;ao.
Como as soluc.;oespeer-to-peer costumam ser disponibili-
zadas na camada de aplicac.;ao, varias tecnicas de multi-
casting de nivel de aplicac.;aoforam apresentadas. Nesta
sec.;ao,faremos urn breve estudo dessas tecnicas.
A comunicac.;aomulticast tambem pode ser consegui-
da de outros modos alem de por meio do estabelecimento
de caminhos explicitos de comunicac.;ao. Como veremos
nesta sec.;ao,a disseminac.;ao de informac.;oes baseada em
gossiping, termo explicado mais adiante, oferece modos
simples (se bem que menos eficientes) para multicasting.
4 . 5 . 1 M u l t i c as t i ng d e nl ve l d e ap l i c ac ao
A ideia basica do multicasting no nivel de aplicac.;ao
e que os nos se organizem em uma rede de sobreposic.;ao
que entao e usada para disseminar informac.;oes para seus
membros. Uma observac.;ao importante e que os repas-
sadores da rede nao estao envolvidos na associac.;ao ao
grupo. Por consequencia, as conexoes entre nos narede de
sobreposic.;ao podem cruzar vanos enlaces ffsicos e, por
isso, 0roteamento de mensagens dentro da rede de sobre-
posic.;aopode nao ser otimo em comparac.;ao com 0que
poderia ser conseguido por roteamento no nivel de rede.
Uma questao crucial de projeto e a construc.;ao da
rede de sobreposic.;ao. Em essencia, ha duas abordagens
(El-Sayed, 2003). Na primeira, os nos podem seorganizar
diretamente em uma arvore, 0que significa que ha urn
unico caminho (de sobreposic.;ao) entre cada par de nos.
Uma abordagem altemativa e os nos se organizarem em
uma rede emmalha na qual cada no tera vanos vizinhos e,
em geral, existem vanos caminhos entre cada par de nos.
A principal diferenc.;aentre as duas eque, emgeral, aulti-
ma oferece mais robustez: se uma conexao for interrompi-
da (por exemplo, porque urn no falhou), ainda assim have-
ra uma oportunidade para propagar informac.;oes sem ter
dereorganizar imediatamente toda arede de sobreposic.;ao.
Para ficar emterreno concreto, vamos considerar urn
esquema relativamente 'simples paraconstruir uma arvore
multicast emChord, que descrevemos no Capitulo 2. Esse
esquema foi proposto originalmente pelo Scribe (Castro
et aI., 2002), que e urn esquema de multicasting no nivel
de aplicac.;aoconstruido em cima do Pastry (RowstrQn e
- bel, 2001).0 ultimo tambem e urn sistema peer-to-
baseado emDHT.
uponha que urn no queira iniciar uma sessao multi-
- Com essa finalidade, ele simplesmente gera urn iden-
or multicast, digamos, mid, que eapenas uma chave
~~60bits escolhida aleatoriamente. Emseguida, ele con-
succ(mid), que e 0no responsavel por aquela chave,
_ _romove, transformando-o emraiz da arvore multicast
__ sera usada para enviar dados a nos interessados. Para
tar it arvore, urn no P simplesmente executa aopera-
OOKUP (m i d). Apos essa opera<;ao, uma mensagem
oonsulta munida da requisi<;ao para sejuntar ao grupo
ticast mid sera roteada dePate succ(mid). Como men-
os antes, 0algoritmo de roteamento em si sera
Iicado com detalhes no Capftulo 5.
Emseu caminho atearaiz, uma requisi<;aodeassocia-
- ao grupo passara por VaDOSnos. Suponha que ela che-
= primeiro ao no Q. Se Q nunca tiver visto uma requisi-
- de associa<;aopara mid antes, ele setomara urnrepas-
or para aquele grupo. Nesse ponto, P se tomara urn
- - deQ, enquanto 0ultimo continuara arepassar arequi-
- de associa<;aoate araiz. Se0no seguinte no carninho
~ raiz, digamos, R, tambem nao for ainda urn repassador,
~setomara urn eregistrara Q como seu filho, bemcomo
rinuara aenviar arequisi<;aode associa<;ao.
Por outro lado, se Q (ou R) ja for urnrepassador para
.. ele tambem registrara 0remetente anterior como seu
o (isto e, P ou Q, respectivamente), porem nao havera
- necessidade de enviar uma requisi<;ao de associa<;ao
...:..0. araiz, porque Q (ou R) ja sera urn membro da arvo-
~ do multicast.
as como P, que requisitaram explicitamente a
ocia<;ao it arvore multicast, sao, por defini<;ao, tam-
_'m repassadores. 0 resultado desse esquema e que
:0 trufmos uma arvore multicast de urn lado a outro da
:<rlede sobreposi<;ao com dois tipos de nos: repassadores
;: os que agem como ajudantes e nos que tambem saG
:-cpassadores, mas requisitaram explicitamente aassocia-
~o it arvore. Agora, 0multicasting e simples: urn no
_ yia uma mensagem multicast em dire<;ao it raiz da
.:...'ore simplesmente executando mais uma vez a opera-
- 0LOOKUP (m i d), apos a qual a mensagem pode ser
uYiada ao longo da arvore.
Observamos que essa descri<;ao de alto nfvel de mul-
. asting em Scribe nao faz justi<;aa seu projeto original.
Portanto, incentivamos 0leitor interessado a dar uma
olbada nos detalhes, que podem ser encontrados em
Castro et al. (2002).
o n stru c a o d a so brepo si c a o
Pela descri<;ao de alto nfvel que acabamos de fazer,
deve estar claro que, embora construir uma arvore nao
eja em si tao diffcil, uma vez que tenhamos organizado
o nos em sobreposi<;ao, construir uma arvore eficiente
pode ser uma histori a bem diferente. Observe que, ate
esse ponto de nossa descri<;ao, asele<;aode nos que parti-
cipam da arvore nao leva em conta nenhuma metrica de
desempenho: ela e puramente baseada no roteamento
(logico) de mensagens pela rede de sobreposi<;ao.
Para entender 0problema que temos em maos,
observe a Figura 4 .26, que mostra urn pequeno conjunto
de quatro nos organizados em uma rede' de sobreposi<;ao
simples, na qual 0no A forma araiz de uma arvore mul-
ticast. Os custos para atravessar urn enlace ffsico tambem
saG mostrados. Agora, sempre que A fizer multicast de
uma mensagem para os outros nos, vemos que a mensa-
gem atravessara cadaurn dos enlaces, <B, Rb>, <Ra, Rb>,
<Rc, Rd> e <D, Rd>, duas vezes. A rede de sobreposi<;ao
teria sido mais eficiente se nao tivessemos construfdo urn
enlace de sobreposi<;ao deB para D, mas simdeA para C.
Tal configura<;ao teria poupado a dupla travessia pelos
enlaces <Ra, Rb> e <Rc, Rd>.
Figuril 4 .26 Rela <;a o en tre en la c es em u m a rede de so brepo si <;a o
e a s ro ta s rea i s n o n i vel de rede.
A qualidade de uma arvore multicast de nfvel de
aplica<;ao em geral e medida por tres parametros de
medi<;ao diferentes: estresse de enlace, alongamento e
custo da arvore. Estresse de enlace e definido por enla-
ce econta quantas vezes urn pacote cruza 0mesmo enla-
ce (Chu et aI., 2002). Urn estresse de enlace maior do
que 1resulta do fato de que, embora em urn nfvellogi-
co urn pacote possa ser repassado ao longo de duas
conex6es diferentes, parte dessas conex6es pode, na ver-
dade, corresponder ao mesmo enlace fisico, como mos-
tramos na Figura 4 .26.
oalongamento ou penalidade de atraso relativo
(Relative Delay Penalty - RDP) mede a razao entre 0
atraso entre dois nos na sobreposi<;ao e 0atraso que esses
dois nos sofreriam na rede subjacente. Por exemplo, na
rede de sobreposi<;ao, mensagens de B a C seguem arota
B ~ Rb ~ Ra ~ Rc ~ C, com urn custo total de 59 uni-
dades. Entretanto, na rede subjacente, as mensagens
teriam sido roteadas ao longo do caminho B ~ Rb ~ Rd
~ Rc ~ C, com urn c\J sto total de 4 7 unidades, 0que
resulta em urn alongamento de 1,255. E obvio que, ao
construir a rede de sobreposi<;ao, a meta e minimizar 0
alongamento agregado ou, de modo semelhante, a RDP
media medida entre todos os pares de nos.
Por fim, 0custo da arvore eurn parametro de medi-
~ao global, relacionado com a rrtinirrtiza~ao dos custos
agregados de enlaces. POl' exemplo, se 0custo de urn
enlace for considerado como 0atraso entre dois nos
finais, otimizar 0custo da arvore se resume a achar a
spanning tree minima na qual 0tempo total para dissemi-
nar informa~6es para todos os nos e mini mo.
Para simplificar urn pouco as coisas, suponha que
urn grupo multicast tenha urn no associado e bem conhe-
cido que monitora os nos que se associaram a arvore.
Quando urn no emite uma requisi~ao de associa~ao, ele
contata esse no de encontro para obter uma lista (poten-
cialmente parcial) de membros. 0objetivo e selecionar 0
melhor membro que pode funcionar como 0pai do novo
no na arvore. Qual ele deve selecionar? Ha muitas alter-
nativas, e propostas diferentes freqyentemente seguem
solu~6es muito diferentes.
Considere, por exemplo, urngrupo multicast comuma
unica fonte. Nesse caso, asele~ao do melhor no eobvia: ele
deve ser a fonte porque, com isso, podemos estar seguros
de que 0alongamento sera igual a 1. Contudo, sefizermos
isso, introduziriamos uma topologia emestrela comafonte
no meio. Embora simples, nao e dificil imaginar que seria
facil a fonte ficar sobrecarregada. Em outras palavras, a
sele~ao de urn no geralmente sera restringida de modo tal
que somente poderao ser escolhidos os nos que tiverem k
ou menos vizinhos, sendo k urnparametro deprojeto. Essa
restri~ao complica seriamente 0algoritmo de estabeleci-
mento de arvore, porque uma boa solu~ao pode exigir que
parte da arvore existente seja reconfigurada.
Tan et al. (2003) apresentam uma visao geral eavalia-
~ao extensa de varias solu~6es para esse problema. Como
ilustra~ao, vamos exarrtinar mais de perto uma fann1ia
espedfica, conhecida como arvores de troca (Helder e
J amin, 2002). A ideia basica e simples. Suponha que ja
temos uma arvore multicast com uma unica fonte como
raiz. Nessa arvore, urn no P pode trocar de pais descartan-
do 0enlace com seu pai atual emfavor de urn enlace com
urn outro no. As unicas restri~6es impostas a troca deenla-
ces eque 0novo pai nunca pode ser urn membro da subar-
yorecomraiz emP - porque issorepartiria aarvore ecria-
ria urn la~o isolado - e que 0novo pai nao tera muitos
filhos imediatos. Essa ultima restri~ao e necessaria para
lirrtitar acarga de repasse de mensagens de urn unico no.
Ha diferentes criterios para decidir a troca de pais.
Urn simples e otimizar a rota ate a fonte, minimizando
efetivamente 0atraso quando uma mensagem deve ser
propagada pOl' multicast. Com essa finalidade, cada no
recebe informa~6es periodicas sobre outros nos (logo
adiante explicaremos urn modo espedfico para fazer isso.
Nesse ponto, 0no pode avaliar se urn outro no seria urn
pai melhor em termos do atraso ao longo da rota ate a
fonte e, caso seja, iniciar uma troca.
Urn outro crite110poderia ser se 0atraso ate outro pai
potencial for menor do que 0atraso ate0pai atual. Se todo
no adotar esse criterio, entao os atrasos agregados da arvore
resultante seriam idealmente rninimos. Em outras palavras.
esse e urn exemplo de otirrtiza~ao do custo da arvore como
explicamos antes. Contudo, seria preciso mais informa~ao
para construir uma arvore dessas, mas averdade e que esse
esquema simples e uma heurlstica razoavel que resulta em
uma boa aproxima~ao de uma spanning tree minima.
Como exemplo, considere 0caso em que urn no P
recebe informa~6es sobre os vizinhos de seu pai. Note
que os vizinhos consistem no avo de P junto com os
outros irmaos gerados pelo pai de P. Entao, 0no P pode
avaliar os atrasos para cada urn desses nos e, na sequen-
cia, escolher como seu novo pai aquele que tenha 0
menor atraso, digamos, Q. Com essa finalidade, ele
envia uma requisi~ao de troca a Q. Para evitar a forma-
~ao de la~os por causa de requisi~6es de troca concor-
rentes, urn no que tenha uma requisi~ao de troca em
aberto simplesmente se recusara a processar quaisquer
requisi~6es que cheguem. Na verdade, isso resulta em
uma situa~ao em que so trocas completamente indepen-
dentes podem ser executadas simultaneamente. AMmdo
mais, P fornecera a Q informa~6es suficientespara per-
mitir que 0ultimo conclua que ambos os nos tern 0
mesmo pai, ou que Q e 0avo.
Urn problema importante que ainda nao atacamos e
afalha do no. No caso de arvores de troca, eproposta uma
solu~ao simples: sempre que urn no percebel' que seu pai
falhou, ele simplesmente se liga a raiz. Nesse ponto, 0
protocolo de otimiza~ao pode continuar como sempre e, a
certa altura, colocara 0no em urn born ponto na arvore
multicast. Experimentos descritos em Helder e J amin
(2002) mostram que a arvore resultante e, de fato, proxi-
ma a uma spanning tree minima.
4 . 5 . 2 D i s s e m i nac ao d e d ad os b as e ad a e m g os s i p i ng
Uma tecnica cada vez mais importante para dissemi-
nar informa~6es e confiar em urn comportamento epide-
mico. Observando como enferrnidades se espalham entre
as pessoas, ha muito tempo pesquisadores investigam se
seria possivel desenvolver tecnicas simples para espalhar
informa~6es em sistemas distribuidos de escala muito
grande. 0objetivo principal dos protocolos epidemicos e
propagar informa~6es rapidamente entre urn grande con-
junto de nos usando somente informa~6es locais. Em
outras palavras, nao ha nenhum componente central que
coordena adissemina~ao de informa~6es.
Para explicar os principios gerais desses algoritmos,
adotamos como prerrtissa que todas as atualiza~6es para urn
item de dado especifico sao iniciadas em urn unico no.
Desse modo, simplesment~ evitamos conflitos de escrita. A
apresenta~ao que fazemos a seguir e baseada no classico
artigo deDemers et al. (1987) sobre algoritrnos epidemicos.
Uma visao geral recente de disserrtina~ao epiderrtica de
informa~6es pode ser encontrada emEugster et al. (2004).
Como 0nome sugere, algoritmos epidemic os sao
- dos na teoria das epidemias, que estuda a propaga-
_~ de doen<;asinfecciosas. No caso de sistemas distribui-
~- de grande escala, em vez de propagar doen<;as, eles
: pagam informa<;6es. A pesquisa sobre epidemias para
mas distribuidos tambem visa aurn objetivo comple-
ente diferente: enquanto as organiza<;6es de saude
- -00maximo possivel para impedir que doen<;asinfec-
se propaguem por grandes grupos de pessoas, os
: ~etistas de algoritmos epidemicos para sistemas distri-
'dos tentarao 'infectar' todos os nos comas novas infor-
.6es 0mais rapidamente possive!.
Usando a terminologia das epidemias, urn no que e
: e de urn sistema distribuido e denominado infectado
~ ontiver dados que esta dispostoa espalhar para os
o nos. Urn no que ainda nao tenha visto esses dados
= enominado suscetivel. Por fim, urn no atualizado que
- esta disposto ou capacitado para propagar os dados e
ominado removido. Observe que consideramos que
emos distinguir dados novos de dados antigos, por
emplo, porque receberam uma marca de tempo ou estao
outra versao. Sob essa luz, diz-se tambem que nos
_~pagam atualiza<;6es.
Urn modelo popular depropaga<;ao e0da antientro-
__ esse modelo, urn no P escolhe aleatoriamente urn
no Q e, na sequencia, troca atualiza<;6es com Q. Ha
" abordagens para a troca de atualiza<;6es:
1. P so envia suas proprias atualiza<;6es a Q
2. P so recebe novas atualiza<;6es de Q
3. P e Q enviam atualiza<;6es urn ao outro, isto e,
uma abordagem enviar-receber
Quando setrata depropagar atualiza<;6es rapidamen-
apenas enviar atualiza<;6es se revela uma ma ideia.
rnitivamente, isso pode ser entendido como segue. Em
~eiro lugar, note que, emuma abordagem enviar pura,
aliza<;6es podem ser propagadas somente por nos
ectados. Contudo, se muitos nos forem infectados, a
probabilidade de cada urn selecionar urn no suscetivel e
relativamente pequena. Por consequencia, a probabilida-
de maior e que determinado no permane<;a suscetivel por
urn longo periodo simplesmente porque nao foi seleciona-
do por urn no infectado.
Por compara<;ao, a abordagem baseada no recebi-
mento funciona muito melhor quando muitos nos sao
infectados. Nesse caso, apropaga<;ao de atualiza<;6es e,
em essencia, disparada por nos suscetfveis. Sao gran-
des as chances de que tal no contatara urn infectado
para, na sequencia, buscar as atualiza<;6es e tambem
tornar-se infectado.
Pode-se demonstrar que, seso urnno for infectado, as
atualiza<;6es sepropagarao rapidamente para todos os nos
usando qualquer uma das formas de anti entropia, embora
enviar-receber continue sendo amelhor estrategia (J elasity
et aI., 2005a). Definimos que uma rodada abrange urn
periodo no qual todo no tera tornado, no minimo uma vez,
a iniciativa de trocar atualiza<;6es com urn outro no esco-
lhido aleatoriamente. Portanto, pode-se mostrar que 0
numero de rodadas para propagar uma unica atualiza<;ao
para todos os nos leva O(log(N)) rodadas, onde N e 0
numero de nos no sistema. Isso indica, de fato, que propa-
gar atualiza<;6es erapido; porem, acima detudo, escalavel.
Uma variante especifica dessa abordagem eapropa-
gal;ao de boato, ou apenas gossiping. Funciona da
seguinte maneira: se 0no P acabou de ser atualizado com
o item de dado x, ele contata urn outro no arbitrario Q e
tenta enviar a atualiza<;ao a Q. Contudo, epossivel que Q
ja tenha sido atualizado por urn outro no. Nesse caso, P
pode perder 0interesse emlevar adiante apropaga<;ao da
atualiza<;ao, digamos, com aprobabilidade 11k. Em outras
palavras, ele se torna removido.
Gossiping e completamente analogo a vida real.
Quando Bob tern alguma noticia quente que quer espa-
lhar, ele pode telefonar para sua amiga Alice e the contar
tudo. Alice, como Bob, ficara muito animada e tambem
espalhara 0boato para suas amigas. Contudo, ela ficara
desapontada setelefonar para urn amigo, digamos Chuck,
k - -
2 3 4 5 6 7 8 9 10 11 12 13 14 15
- 2,5
- 5,0
- 7,5
- 10,0
In (s)
t
- 12,5
- 15,0
Fi gu ra 4.27 Rela c ;:a o en tre a fra c ;:a o 5 de n 6s i gn o ra n tes da s a tu a li za c ;:o ese 0pa ra m etro k em go ssi pi n g pu ro .
o gra fi c o m o stra In(sjcomo u m a fu n c ;:a o de k.
e este lhe disser que anotfcia ja chegou aele. A probabi-
lidade e que Alice nao telefonara mais, porque de que
. adiantaria, se eles ja sabem?
Gossiping mostrou ser urn modo excelente de espa-
lhar notfcias rapidamente. Contudo, ele nao pode garantir
que todos os nos realmente serao atualizados (Demers et
aI., 1987). Pode-se mostrar que, quando ha urn grande
numero de nos que participam da epidemia, a frac;aos de
nos que continuam ignorantes em relac;ao a uma atualiza-
c;ao,isto e, que permanecem suscetfveis, satisfaz aequac;ao:
A Figura 4 .27 mostra In(s) como uma func;ao de k.
Por exemplo, se k = 4 , In(s) = -4 ,97, de modo que s e
menor do que 0,007, 0que significa qu~menos de 0,7%
dos nos permanece suscetfve1. Ainda assim, sao necessa-
rias medidas especiais para garantir que esses nos tam-
bem serao atualizados. Combinar antientropia com gos-
siping resolvera 0problema.
Uma das principais vantagens de algoritmos epide-
micos e sua escalabilidade devido ao fato de que 0nume-
ro de sincronizac;6es entre processos e relativamente
pequeno em comparac;ao com outros metodos de propa-
gac;ao. Para sistemas de longa distancia, Lin e Marzullo
(1999) mostram que faz sentido levar emconta a topolo-
gia da rede propriamente dita para conseguir melhores
resultados. Na abordagem desses autores, nos que estao
conectados a apenas alguns outros nos sao contatados
com uma probabilidade relativamente alta. A premissa
subjacente e que tais nos formam uma ponte com outras
partes remotas darede; por conseguinte, devem ser conta-
tados tao logo seja possfve1. Essa abordagem edenomina-
da gossiping direcional e tern diferentes variantes.
Esse problema refere-se a uma importante premissa
adotada pela maioria das soluc;6es epidemic as, a saber,
que urn no pode selecionar aleatoriamente qualquer outro
no com 0qual fazer gossiping. Isso implica que, emprin-
cipio, 0conjunto completo de nos deve ser conhecido por
cada membro. Em urn sistema de grande porte, essa pre-
missa podera nunca valer.
Felizmente, nao ha nenhuma necessidade de ter tal
lista. Como explicamos no Capftulo 2, manter uma visao
parcial que e atualizada mais ou menos continuamente
organizara 0conjunto de nos emurn grafico aleatorio. Se
a visao parcial de cada no for atualizada periodicamente,
a selec;ao aleatoria deixara de ser urn problema.
R e m oc ao d e d ad os
Algoritrnos epidemicos sao extremamente bons para
propagar atualizac;6es. Contudo, eles tern urnestranho efei-
to colateral: propagar aremo~ aodeurnitemdedado ediff-
ci1. A essencia do problema encontra-se no fato de que a
remoc;ao de urn item de dado destroi todas as informac;6es
naquele item. Por consequencia, quando urn item de dado
e simplesmente removido de urn no, a certa altura esse no
recebera capias velhas do item de dado e as interpretara
como atualizac;6es de algo que ele nao tinha antes.
ojeito e gravar a remoc;ao de urn item de dados
como apenas mais uma atualizac;ao e manter urn registro
dessa remoc;ao. Desse modo, capias vel has nao serao
interpretadas como algo novo, mas tratadas como meras
vers6es que foram atualizadas por uma operac;ao deremo-
c;ao. 0registro de uma remoc;ao e feito pela propagac;ao
decertificados de 6bito.
Claro que 0problema dos certificados de abita e
que, a certa altura, sera preciso desfazer-se deles, senao
cada no acumulara gradativamente urn enorme banco de
dados local de informac;6es historicas sobre itens dedados
removidos que, quanta ao mais, nao serao usados.
Demers et a1. (1987) prop6em usar 0que denQminam cer-
tificados deobito dormentes. Cada certificado recebe uma
marca de tempo quando ecriado. Se adotarmos como pre-
missa que as atualizac;6es se propagam para todos os nos
dentro de urn perfodo fmito de tempo conhecido, entao
certificados de obito podem ser removidos apos 0termi-
no desse tempo maximo de propagac;ao.
Contudo, para dar garantia certa de que as remoc;6es
serao realmente propagadas para todos os nos, alguns
poucos nos mantern certificados de obito dormentes que
nunca sao jogados fora. Suponha que P tenha urn certifi-
cado desses para 0item de dado x. Se, por algum acaso,
uma atualizac;ao obsoleta de x chegar aP, P reagira ape-
nas propagando novamente 0certificado de obito para x.
R p l i c ac oe s
Para encerrar, vamos examinar algumas aplicac;6es
interessantes de protocolos epidemicos. J a mencionamos
apropagac;ao de atualizac;6es, que talvez seja a aplicac;ao
mais amplamente conhecida. No Capitulo 2 tambem dis-
cutimos como fornecer informac;6es sobre 0posiciona-
mento de nos pode ajudar na construc;ao de topologias
especificas. Sob amesma luz, 0gossiping pode ser usado
para descobrir nos que tenham alguns enlaces desafdapara
redes de longa distancia para, na sequencia, aplicar gos-
siping direcional, como ja mencionamos.
Uma outra area de aplicac;ao interessante e simples-
mente colher ou, na verdade, agregar informac;6es
(J elasity et aI., 2005b). Considere a seguinte troca de
informac;6es. Cada no i escolhe inicialmente urn numero
arbitrario, digamos, Xi' Quando 0no i contata 0noj, cada
urn deles atualiza seu valor como:
E obvio que, apos essa .troca, ambos, i ej, terao 0
mesmo valor. Na verdade, nao e diffcil perceber que, a
certa altura, todos os nos terao 0mesmo valor, ou seja, a
media de todos os valores iniciais. Mais uma vez, avelo-
cidade de propagac;ao e exponencia1.
Qual e a utilidade de calcular a media? Considere a
>- 0em que todos os nos i ajustaram Xi para zero,
_ 0Xl> que 0ajustou para I:
{
1 5e i = 1
Xi f- 1 5e i >1
e houver N nos, entao, a certa altura, cada no cal-
, a media, que e lIN. Por conseqtiencia, todo no i
- - ~ e. timar 0tamanho do sistema como se fosse 1lxi'
- _-sa informa<;ao ja basta para ser usada afim de ajus-
cinamicamente varios parametros. Por exemplo, 0
o da visao parcial - isto e, 0numero de vizinhos
da no monitora - deve ser dependente do numero
de nos participantes. Conhecer esse numero permi-
..:..ue urn no ajuste dinamicamente 0tamanho de sua
- parcial. Na realidade, isso pode'ser visto como uma
_ 'edade de autogerenciamento.
- Calcular a media pode ser dificil quando nos entram
= - "'ill do sistema periodicamente. Vma solu<;aopratica
~ _ e. seproblema eintroduzir epocas. Considerando que
- ' I ejaestavel, elesimplesmente inicia uma novaepoca
~'"ezem quando. Quando urn no i vir uma nova epo-
__ ~la primeira vez, ele reajustara sua propria variavel Xi
_ zero e come<;aa calcular amedia novamente.
Claro que tambem podem ser calculados outros
cltados. Por exemplo, emvez deurn no fixo (Xl) iniciar
.::aI ulo da media, podemos facilmente escolher urn no
~-orio como segue. Todo no i ajusta Xi inicialmente
_~ urn numero aleatorio pertencente ao mesmo interva-
digamos, [0,1], e tambem 0armazena permanente-
tecomo mi' Quando ocorre uma troca entre os nos i e
da urn muda seu valor para:
Cada no i para 0qual mi <Xi perdera a competi<;ao
ser 0iniciador do calculo da media. No final, havera
-' urn vencedor. Claro que, embora seja facil concluir que
no perdeu, emuito mais diffcil decidir que ele ganhou,
: .-quecontinua incerto se todos os resultados entraram.
_-" olu<;aopara esse problema e ser otimista: urn no sem-
:;;eentende que ele e 0vencedor ate que se prove 0con-
~o. Nesse ponto, ele apenas reajusta para zero avaria-
'el que esta usando a fim de calcular a media. Observe
e, a essa altura, varios calculos diferentes (em nosso
;xemplo calcular urn maximo e calcular uma media)
;xxlem estar em execu<;aoconcorrentemente.
Dispor defacilidades poderosas eflexiveis para comu-
mca<;aoentre processos e essencial para qualquer sistema
. tribufdo. Emaplica<;6estradicionais derede, acomunica-
<;aocostuma ser baseada nas primitivas de troca de mensa-
gens de baixo nfvel oferecidas pela camada de transporte.
Vma questao importante em sistemas middleware e ofere-
cer urn nfvel mais alto de abstra<;aoque facilitara expressar
comunica<;ao entre processos mais do que 0suporte ofere-
cido pela interface comacamada de transporte.
Vma das abstra<;6es mais amplamente utilizadas e a
chamada de procedimento remoto (RPC). A essencia de
uma RPC e que urn servi<;oe implementado por meio de
urn procedimento cujo corpo eexecutado emurn servidor.
o cliente recebe apenas a assinatura do procedimento,
isto e, 0nome do procedimento junto com seus parame-
tros. Quando 0cliente chama 0procedimento, a imple-
menta<;ao do lado do cliente, denominada apendice, fica
encarregada de embrulhar os val ores dos parametros em
uma mensagem e envia-Ia ao servidor. Este chama 0pro-
cedimento propriamente dito eretorna os resultados, mais
uma vez emuma mensagem. 0apendice do cliente extrai
os valores do resultado da mensagem de retorno eapassa
de volta a aplica<;ao cliente chamador.
RPCs oferecern facilidades de comunica<;ao sfncro-
na, pelas quais urn cliente ebloqueado ate que 0servidor
tenha enviado uma resposta. Embora existam varia<;6esde
qualquer urn dos mecanismos pelos quais esse modelo
sfncrono estrito e amenizado, ocorre que os modelos de
uso geral de alto nfvel orientados a mensagens muitas
vezes saDmais convenientes .
Emmodelos orientados amensagem, asquest6es giram
emtorno de seuma comunica<;aoe ou nao persistente e se
uma comunica<;aoeou nao slncrona. A essencia dacomuni-
ca<;aopersistente e que uma mensagem apresentada para
transrnissao earmazenada pelo sistema decomunica<;aopelo
tempo que for necessario para entrega-Ia. Em outras pala-
vras, nem0remetente nem0receptor precisam estar liga~os
efuncionando para que atransrnissao da mensagem ocorra.
Emcomunica<;aotransiente, nenhuma facilidade dearmaze-
namento eoferecida, demodo que 0receptor deveestar pre-
parado para aceitar amensagem quando ela for enviada.
Emcomunica<;ao assfncrona, 0remetente ternperrnis-
saDde continuar irnediatamente apos amensagem ter sido
apresentada para transrnissao, possivelmente antes mesmo
de ela ter sido enviada. Emcomunica<;ao sfncrona, 0reme-
tente e bloqueado no rnfnimo ate que uma mensagem seja
recebida. Alternativamente, 0remetente pode ser bloquea-
do ate ocorrer aentrega da mensagem ou mesmo ateque 0
receptor tenha respondido, como acontece com as RPCs.
Modelos de rniddleware orientado a mensagem em
geral oferecern comunica<;ao assfncrona persistente e saD
usados onde RPCs nao saD adequadas. Esses sistemas
costumam ser utilizados para ajudar na integra<;ao de con-
juntos de bancos de dado.s (amplamente dispersos) a sis-
temas de informa<;6es de grande escala. Entre outras apli-
ca<;6esestao e-mail efluxo de trabalho.
Vma forma muito diferente de comunica<;ao e a
comunica<;ao por fluxos, naqual aquestao eseduas men-
sagens sucessivas tern ou nao uma rela~ao temporal. Em
fluxos continuos dedados, urn atraso fim-a-fim maximo e
especificado para cada mensagem. Alem disso, tambem e
requerido que as mensagens sejam enviadas sujeitas aurn
atraso fim-a-fim minimo. Exemplos tipicos desses fluxos
continuos de dados saG fluxos de audio evideo. Em geral,
ediffcil especificar e implementar quais sao, exatamente,
as rela~6es temporais ou 0que seespera do subsistema de
comunica~ao subjacente em termos de qualidade de ser-
vi~o. Urn fator complicador e0papel da variancia de atra-
so. Ainda que 0desempenho medio seja aceitavel, varia-
~6es substanciais no tempo de entrega podem resultar em
desempenho inaceitavel.
Por fim, uma importante classe de protocolos de
comunica~ao emsistemas distribuidos e0multicasting. A
ideia basica e disseminar informa~6e,s de urn remetente
para varios receptores. Discutimos duas abordagens dife-
rentes. Na primeira, 0multicasting pode ser conseguido
com 0estabelecimento de uma arvore entre 0remetente e
os receptores. Considerando que agora ja entendemos
bem como os nos se auto-organizam emsistemas peer-to-
peer, tambem apareceram solu~6es para estabelecer arvo-
res dinamicamente de modo descentralizado.
Uma outra classe importante de solu~6es de dissemi-
na~ao utiliza protocolos epidemicos. Esses protocolos
mostraram ser muito simples, porem extremamente
robustos. Exceto a simples propaga~ao de mensagens,
protocolos epidemicos tambem podem ser utilizados com
eficiencia para agregar informa~6es por toda a extensao
de urn sistema distribuido de grande porte.
1. Em muitos protocolos de camadas, cada camada tern
seu proprio cabe~alho. Par certo seria mais eficiente
ter urn unico cabe~alho a frente de cada mensagem
que contivesse todos os controles do que ter todos
esses cabe~alhos separados. Por que isso nao e feito?
2. Por que servi~os de comunica~ao denivel de transpor-
te frequentemente saG inadequados para construir
aplica~6es distribuidas?
3. Urn servi~o multicast confiavel permite que urn reme-
tente passe mensagens confiaveis para urn conjunto de
receptores. 0melhor lugar para esse servi~o e uma
camada de middleware, ou ele deveria ser parte de
uma camada de nivel mais baixo?
4 . Considere urnprocedimento incr comdois parametros
inteiros. 0procedimento adiciona urn acada parame-
tro. Agora suponha que ele seja chamado com a
mesma variavel duas vezes, por exemplo, como incr
(i, i). Se i for inicialmente 0, qual valor ele tera depois
sefor utilizada chamada por referencia? E sefor utili-
zada chamada copiar/restaurar?
5. C tern uma constru~ao denominada Union, na qual urn
campo de urn registro, denominado Struct emC, pode
conter qualquer uma de diversas altemativas. Em
tempo de execu~ao, nao hi! nenhum modo garantido
de dizer qual delas esta naquele campo. Essa caracte-
rfstica de C tern quaisquer implica~6es para a chama-
da de procedimento remoto? Explique sua resposta.
6. Urn modo de manipular conversao de parametro em
sistemas RPC e fazer com que cada maquina envie
parametros emsua representa~ao nativa, e aoutra fa~a
atradu~ao, se necessario. 0sistema nativo poderia ser
indicado por urn codigo no primeiro byte. Contudo,
uma vez que localizar 0primeiro byte na primeira
palavra eexatamente 0problema, isso pode funcionar?
7. Considere que urn cliente chama uma RPC assincrona
para urn servidor e, na sequencia, espera ate que 0ser-
vidor retome urn resultado usando uma outra RPC
assincrona. Essa abordagem e 0mesmo que deixar 0
cliente executar uma RPC normal?
B. Em vez de deixar que urn servidor registre asi mesmo
em urn daemon como em DCE, poderfamos tambem
preferir sempre designar a ele a mesma porta.
Portanto, essa porta pode ser usada em referencias a
objetos no espa~o de endere~o do servidor. Qual e a
principal desvantagem desse esquema?
9. Seria util fazer tambem uma distin~ao entre RPCs
dinamicas e estaticas?
10. Descreva como ocorre a comunica~ao sem conexao
entre urn cliente e urn servidor usando a interface
Sockets.
11. Explique a diferen~a entre as primitivas MP I_bsen d
e M P I i sen d emMPI.
12. Suponha que voce so possa usar primitivas de comu-
nica~ao assincronas transientes, entre elas apenas uma
primitiva assincrona receive. Como voce implementa-
ria primitivas para comunica~ao transiente sfncrona?
13. Suponha que voce so possa utilizar primitivas de
comunica~ao transiente sincrona. Como voce imple-
mentaria primitivas para comunica~ao transiente
assfncrona?
14 . Faz sentido implementar comunica~ao persistente
assincrona por meio de RPCs?
15. No texto, afirmamos que, para iniciar automatic amen-
teurn processo afimde buscar mensagens de uma fila
de entrada, frequentemente e usado urn daemon que
monitora a fila de entrada. De uma implementa~ao
altemativa que nao utilize urn daemon.
16. Tabelas de roteamento no WebSphere da IBM e em
muitos outros sistemas de enfileiramento de mensa-
gens saG configuradas manualmente. Descreva urn
modo simples de fazer isso automaticamente.
IT! comunica9ao persistente, urn receptor geral-
Ie tern seu proprio buffer local no qual mensa-
;=- podem ser armazenadas quando 0receptor nao
__ - 'er em execu9ao. Para criar tal buffer, talvez seja
. 0especificar seu tamanho. Cite urn argumento
_ :... 'or e outro contra a especifica9ao do tamanho.
~ lique par que a comunica~ao transiente sfncrona
problemas inerentes de escalabilidade e como
~'_- podem ser resolvidos.
...x: urn exemplo em que multicasting tambem e util
fluxos discretos de dados.
nba que temperaturas medidas em uma rede de
~ ores nao recebam marcas de tempo pelo sensor,
ejam enviadas imediatamente ao operador. Isso
-- -asuficiente para garantir apenas urn atraso fim-a-
maximo?
o voce poderia garantir urn atraso maximo fim-a-
quando urn conjunto de computadores estiver
'zado emurn ane! (1ogico ou ffsico)?
22. Como voce poderia garantir urn atraso fim-a-fim mfni-
mo quando urn conjunto de computadores estiver
organizado emurn anel (1ogico ou ffsico)?
23. Apesar de 0multicasting ser tecnicamente viavel, ha
pouqufssimo suporte para disponibiliza-Io na Internet.
A resposta para esse problema deve ser buscada em
puros e simples modelos de negocios: na realidade,
ninguem sabe como ganhar dinheiro com 0multicas-
ting. Voce pode inventar urn sistema?
24 . Normalmente, arvores multicast de nfvel de aplica9ao
sao otimizadas em rela9ao ao alongamento, que e
medido em termos de atraso ou contagens de saltos.
De urn exemplo em que essa metrica poderia resultar
em arvores muito ruins.
25. Quando se trata de procurar arquivos em urn sistema
peer-to-peer nao estruturado, pode ser util restringir a
busca a nos que tenham arquivos semelhantes aos
seus. Explique como 0gossiping pode ajuda-Io a
achar esses nos.