Você está na página 1de 20

1

Sistemas Distribuidos (COS+70)


http:ffwww.gta.ufrj.brfcos+70
Jos Ferreira de Rezende
rezende@gta.ufrj.br
Ementa do Curso
Conceitos Fundamentais de Sistemas Distribuidos
Paradigmas de Sistemas Distribuidos
Definioes de Processos e Threads
Comunicaao em Sistemas Distribuidos
Sincronizaao em Sistemas Distribuidos
Conceitos de Niddleware
Redes P2P: conceitos basicos, arquiteturas, aplicaoes
!ntroduao a Grades Computacionais
Tecnologias de Niddleware Tradicionais
Niddlewares de Nova Geraao
Bibliografia
G. Coulouris, J. Dollimore e T. Kindberg, Sistemas
Distribuidos: Conceitos e Projetos", +a ediao.
A.S. Tanenbaum and N.v. Steen, Distributed
Systems: Principles and Paradigms", 2nd Edition.
S. Ghosh, Distributed Systems: An Algorithmic
Approach".
Sistemas Distribuidos
definiao: coleao de computadores independentes que se
apresenta para os usuarios como um unico sistema
coerente.
caracteristicas desejaveis
transparente
aberto
escalavel
seguro
tolerante a falhas
tipos: computacionais, pervasivos e de informaao
Definiao de Sistemas Distribuidos
middleware
camada de software que fornece
uma abstraao de programaao
que mascara a heterogeneidade
das redes, do hardware, de SOs
e linguagens de programaao
subjacentes
ex. CORBA, Java RN!, servios
web, ODP e DCON
fornece um modelo de
computacional uniforme para ser
usado pelos programadores de
aplicativos distribuidos
invocaao remota de objetos
notificaao remota de eventos
acesso remoto a banco de dados
processamento distribuido de
transaoes
fonte: slides do livro do Tanenbaum
Aplicativos
Middleware
Sistema Operacional
Hardware de computador e rede
P
l
a
t
a
f
o
r
m
a
Camadas do Sistema
Aplicaes, servios
Plataforma
Middleware
SO: kernel,
bibliotecas
e servidores
SO1
Hardware de
computador e rede
N 1 N 2
Processos, threads,
comunicao, ...
SO2
Processos, threads,
comunicao, ...
Hardware de
computador e rede
fonte: slides do livro do Coulouris
2
Tipos de Sistemas Distribuidos
Sistemas Computacionais
Clusters
Grades
Sistemas de !nformaao
Sistemas Pervasivos (Ubiquos)
Transparncia em Sistemas Distribuidos
Diferentes formas de transparncia num sistema distribuido
(!SOfTanembaumfCoulouris)
Oculta reconfiguraoes do sistema para se adaptar a carga
variavel, mantendo o desempenho
Desempenho
Oculta a falha e a recuperaao de um recurso Falha
Oculta que um recurso pode ser usado por diversos
usuarios concorrentes
Concorrncia
Oculta que um recurso pode ser replicado Replicaao
Oculta que um recurso pode ser movido para uma outra
localizaao enquanto em uso
Nobilidade
Oculta que um sistema e os aplicativos se expandam em
escala
Escalabilidade
Oculta onde o recurso esta localizado Localizaao
Oculta diferenas na representaao de dados e no modo de
acesso ao recurso
Acesso
Descrio Transparncia
Nodelos de Arquitetura
cliente-servidor
peer-to-peer
variaoes
servios fornecidos por varios servidores
alta disponibilidade, balanceamento de carga, processamento paralelo e
alto desempenho
servidores proxies e cache
maior disponibilidade e desempenho, menor carga nos servidores e rede
remotos
cdigo mvel
applets
agentes mveis
cdigo+dados que transitamfmigram entre computadores de uma rede
Processos e Threads
um processo consiste em um ambiente de execuao, junto
com uma ou mais threads
thread uma abstraao do S.O. de uma atividade (ou fio de
execuao)
o ambiente de execuao a unidade de gerenciamento de recursos
(conjunto de recursos locais gerenciados pelo nucleo do S.O.) aos
quais suas threads tm acesso
espao de endereamento
recursos de comunicaao e sincronizaao entre threads
recursos de mais alto nivel, tais como arquivos e janelas abertas
analogia de Chris Lloyd (jarro com ar e alimento + moscas)
Trabalho, Processos e Threads
Trabalho
Processo 1
Thread 1
Thread 2
.
.
Processo n
Thread m
Programaao Nulti-threading
por que?
maquinas com multiplos coresfCPUs se tornaram comuns
quando
tarefas bem definidas e longas suficientes
dados usados para completar as tarefas nao sao (ou sao
pouco) compartilhados
sem interaao com o usuario (background)
3
Processos versus Threads
processo
programa em execuao
S.O. fornece total proteao e torna transparente o
compartilhamento de recursos por multiplos processos
alto grau de transparncia de concorrncia -> degradaao de
desempenho (na comutaao de processos)
thread
um minimo de informaao mantido para permitir o
compartilhamento de uma CPU por multiplas threads
exige um esforo adicional no desenvolvimento
threads nao sao protegidas uma das outras
vantagens de Nultiplas Threads (S.N.D.)
em processos com thread unica (single-threaded process)
sempre que uma chamada de sistema bloqueante
executada, o processo como um todo bloqueado
com multiplas threads, algumas threads podem ficar bloqueadas
enquanto outras continuam realizando suas tarefas
permite explorar o paralelismo quando o programa
executado em maquinas com multiplas CPUsfCores
com o barateamento dessas maquinas, isso torna-se cada vez mais
importante
um bom projeto: transparncia de paralelismo
vantagens de Nultiplas Threads (S.N.D.)
em aplicaoes complexas compostas por uma coleao de
programas executados por multiplos processos, a
cooperaao entre processos exige o uso de !PC que por sua
vez exige comutaao de contexto
comunicaao entre threads normalmente feita por
compartilhamento de dados
questao de engenharia de software: muitas aplicaoes sao
mais facilmente projetadas usando se multiplas threads
aplicaoes que precisam realizar multiplas tarefas independentes (ou
pouco dependentes)
!mplementaao de Threads
na forma de um pacote
criaaofdestruiao de threads e sincronizaao entre elas
espao usuario (biblioteca)
vantagem: desempenho (criaaofdestruiao e comutaao de threads)
desvantagem: o bloqueio numa chamada leva ao bloqueio de todo o
processo
espao kernel
desvantagens: toda manipulaao exige uma chamada ao sistema e a
comutaao de threads se torna tao lenta quanto a de processos
hibrido (lightweight processes + user-level library)
multiplos LWPs por processo que executam threads
pacote no espao usuario para manipulaao de threads sem
intervenao do kernel
!mplementaao de Threads
kernel-level lightweight processes + user-level threads.
fonte: slides do livro do Tanembaum
Construindo um servidor
paralelismo, chamadas ao sistema no-
bloqueantes
mquina de estados finita
(evento-ao)
sem paralelismo, chamadas ao sistema
bloqueantes
thread nica
paralelismo (usando processos sequenciais),
chamadas ao sistema bloqueantes
mltiplas threads
Caractersticas ModeIo
4
Nultithreading em S.D.
multiplas threads permite realizar mais facilmente
uma comunicaao na forma de multiplas conexoes
lgicas ocorrendo simultaneamente
bastante usado na implementaao de servidores
simplifica o cdigo
explora paralelismo, maximizando taxa de rendimento
Cliente e Servidor com Threads
servidor
N threads
E/S
cliente
thread 2 faz
pedidos ao servidor
T1
thread 1
gera
resultados
pedidos
recepo e
enfileiramento
fonte: slides do livro do Coulouris
Arquiteturas de Servidores Nulti-threaded
a. Thread por pedido b. Thread por conexo c. Thread por objeto
objetos
remotos
workers
E/S /O
threads
por conexo
threads
por objeto
objetos
remotos
objetos
remotos
fonte: slides do livro do Coulouris
Comunicaao !nter-Processo (!PC)
procedimento atravs do qual processos trocam
informaoes e coordenam suas atividades
rede
computador
computador
computador
computador
processo
processo
Nodelos de Comunicaao
basico: troca de mensagens (message-passing)
orientado a mensagens
orientado a fluxo (stream)
comunicaao de grupo (multicasting)
de mais alto nivel
Remote Procedure Call (RPC)
comunicaao cliente-servidor
Remote Nethod !nvocation (RN!)
comunicaao entre objetos distribuidos
Camadas de Niddleware
Aplicaes e servios
camadas de
middleware protocolo do tipo requisio-resposta
empacotamento (marshalling) e
representao de dados externos
UDP e TCP
RPC, RM e eventos
fonte: slides do livro do Coulouris
5
Tipos de Comunicaao (1)
sincrona
processos remetente e destino sao sincronizados a cada mensagem
operaao de send causa bloqueio
processo remetente desbloqueia apenas quando:
a mensagem passada ao middleware
a mensagem recebida pelo processo destino
a mensagem processada pelo destino que entao retorna uma resposta
assincrona
operaao send nao-bloqueante
mensagem copiada para um buffer local
transmissao em paralelo com o processamento no remetente
operaao receive bloqueantefnao-bloqueante
processo bloqueado enquanto mensagem nao chega
processo continua execuao podendo ser notificado (p.ex. por uma
interrupao) da chegada de uma mensagem
Tipos de Comunicaao (2)
persistente
a mensagem transmitida armazenada pelo sistema de comunicaao
at que ela seja entregue ao receptor
nao necessario que a aplicaao transmissora continue executando
aps ter transmitido a mensagem e a aplicaao receptora nao
precisa estar executando quando da transmissao da mensagem
ex. sistema de correio eletrnico
transiente
a mensagem armazenada pelo sistema de comunicaao somente
enquanto as aplicaoes transmissora e receptora estao executando
ex. servios de comunicaao no nivel de transporte
Persistncia e Sincronismo na Comunicaao
a. comunicaao persistente assincrona
b. comunicaao persistente sincrona
fonte: slides do livro do Tanembaum
Persistncia e Sincronismo na Comunicaao
c. comunicaao transiente assincrona
d. comunicaao transiente sincrona (receipt-based)
fonte: slides do livro do Tanembaum
Persistncia e Sincronismo na Comunicaao
e. comunicaao transiente sincrona (delivery-based)
f. comunicaao transiente sincrona (response-based)
fonte: slides do livro do Tanembaum
Comunicaao via sockets
transmissao entre o socket de um processo e o
socket de outro processo
mensagens enviadas para destinos identificados por
<endereo destino, porta destino>
cada computador tem 2
16
portas locais
processo nao pode compartilhar uma porta com outros
processos (exceao multicast)
para um processo receber mensagens, o seu socket
deve estar associado a uma porta local e a um dos
endereos !P do computador em que executado
6
Sockets e portas
mensagem
porta
escolhida
qualquer
porta socket
socket
endereo P = 138.37.88.249 endereo P = 138.37.94.248
outras portas
cliente
servidor
fonte: slides do livro do Coulouris
Comunicaao UDP
sem confiabilidade
mensagens perdidas: problema na comunicaao e
transbordo de buffer
mensagens fora de ordem: mudanas no roteamento e
escalonamento de pacotes nos roteadores
um servio confiavel pode ser construido acima do
UDP pela prpria aplicaao
AP! Sockets: TCPf!P
termina a conexao close
recebe dados receive
envia dados send
tenta ativamente estabelecer uma conexao connect
bloqueia o chamador at que chegue um pedido de conexao accept
anuncia desejo em aceitar conexoes listen
associa um endereco local ao socket bind
cria um ponto final de conexao socket
significado primitiva
Comunicaao TCP (stream de dados)
fonte: slides do livro do Tanembaum
Sockets usados para datagramas
enviando uma mensagem recebendo uma mensagem
bind(s, ClientAddress)
sendto(s, "message", ServerAddress)
bind(s, ServerAddress)
amount = recvfrom(s, buffer, from)
s = socket(AF_NET,SOCK_DGRAM,0) s = socket(AF_NET,SOCK_DGRAM,0)
fonte: slides do livro do Coulouris
Sockets usados para fluxos de dados
solicitando uma conexo ouvindo e aceitando uma conexo
bind(s, ServerAddress);
listen(s,5);
sNew = accept(s, ClientAddress);
n = read(sNew, buffer, amount)
s = socket(AF_NET, SOCK_STREAM,0)
connect(s, ServerAddress)
write(s, "message", length)
s = socket(AF_NET, SOCK_STREAM,0)
fonte: slides do livro do Coulouris
7
Nessage-Passing !nterface (NP!)
surgiu da necessidade dos desenvolvedores de aplicaoes
para computadores paralelos de alto desempenho de:
usar primitivas com um nivel mais alto de abstraao para facilitar o
desenvolvimento de aplicaoes
contar com diferentes formas de bufferizaao e sincronizaao
usar eficientemente protocolos de alta velocidade proprietarios
comunicaao transiente assincrona e sincrona
comunicaao de grupo (grupo de processos envolvidos
numa determinada computaao)
Nessage-Passing !nterface (NP!):
Algumas primitivas
verifica se chegou alguma mensagem (nao-bloqueante) NP!_irecv
recebe a mensagem (bloqueante) NP!_recv
passa referncia para mensagem de saida e espera at que
inicie recepao
NP!_issend
passa referncia para mensagem de saida e continua NP!_isend
envia uma mensagem e espera por resposta NP!_sendrecv
envia uma mensagem e espera at que recepao inicie NP!_ssend
envia uma mensagem e espera at que ela seja copiada para
um buffer local ou remoto
NP!_send
coloca mensagem num buffer local de emissao NP!_bsend
significado primitivas
Sistema de Enfileiramento de Nensagens
(Nessage-Queuing System)
comunicaao persistente assincrona
aplicaoes se comunicam inserido mensagens em
filas, as quais sao encaminhadas atravs de uma
srie de servidores de comunicaao, sendo
eventualmente entregues ao destino
Nodelo de Enfileiramento de Nensagens
+ tipos de comunicaao de acordo com acoplamento no tempo entre
emissor e receptor
fonte: slides do livro do Tanembaum
Nodelo de Enfileiramento de Nensagens:
AP! basica
instala um handler para ser chamado quando uma mensagem for colocada
na fila determinada
notify
verifica se uma fila especifica contm mensagens, removendo a primeira
(nao-bloqueante)
poll
bloqueia at que uma determinada fila esta nao-vazia, removendo a
primeira mensagem
get
insere uma mensagem numa determinada fila put
significado primitiva
Remote Procedure Call (RPC)
modelo de alto nivel para a comunicaao cliente-servidor
198+: Birrell 8 Nelson
mecanismos para chamadas de procedimento em outras maquinas
processo numa maq. A pode chamar procedimentos na maq. B
A suspensa
execuao continua em B
quando B retorna, o controle passado de volta para A
exatamente como uma chamada normal de procedimento
vantagem: simplifica o desenvolvimento de aplicaoes
RPC esconde todo o cdigo relacionado a rede
programadores nao precisam se preocupar com detalhes de sockets,
portas, ordenaao dos bytes, etc.
8
Nodelo RPC
estado
bloqueado
cliente servidor
request
reply
estado de
execuao
chama
procedimento
e espera pela
resposta
recebe pedido e inicia
execuao
envia resposta e espera
por prxima execuao
continua
execuao
Stubs: Cliente e Servidor
procedimento do cliente chama client stub
client stub contri msg e chama SO local
SO do cliente envia msg para o SO remoto
SO remoto passa msg para server stub
server stub desempacota argumentos e
chama servidor
servidor executa procedimento e retorna o
resultado ao stub
server stub empacota resultados em uma
msg e chama SO local
SO do servidor envia msg ao SO do cliente
SO do cliente passa mensagem ao client stub
stub desempacota resultado e retorna ao
cliente
client
stub
function
Communication
module
Local
return
Local
call
Client computer Server computer
server
stub
function
client
service
procedure
Receive
reply
Send
request
Unmarshal
results
Narshal
arguments
Receive
request
Send
reply
Select procedure
Unmarshal
arguments
Narshal
results
Execute procedure
RPC Assincrono (1)
a. RPC tradicional
b. RPC Assincrono
2-12
RPC Assincrono (2)
cliente e servidor interagem atravs de dois RPCs Assincronos
Problemas com RPC
o procedimento chamado esta em outro processo que pode
residir em outra maquina
processos nao compartilham o mesmo espao de endereamento
problema com a passagem de parametros
desempenho
1 a 3 ordens de magnitude mais lento
segurana
mensagens visiveis na rede
autenticacao mutua cliente e servidor
Passagem de Parametros
por valor
apenas copia os dados para a mensagem
por referncia
nao faz sentido sem memria compartilhada
soluao
copia itens referenciados para a msg e envia
desempacota no servidor e passa ponteiro local para
funao do server stub
envia valores de volta
9
Passagem de Parametros por valor (1) RPC: componentes
Request
Reply
despachante
client stub server stub
processo cliente processo servidor
procedimento
de servio
programa
cliente
mdulo de
comunicao
mdulo de
comunicao
Passagem de Parametros por valor (2)
a. mensagem original no Pentium
b. a mensagem depois de recebida pela SPARC
c. a mensagem depois de ser invertida.
Representaao dos dados
assume que sistemas sao heterogneos:
diferentes ordenaoes dos bytes (little endian, big endian)
diferentes tamanhos para inteiros e outros tipos
diferentes representaoes de ponto flutuante
diferentes conjuntos de caracteres (EBCD!C, ASC!!, etc.)
requer uma codificaao padrao dos dados da aplicaao (parametros)
para permitir a comunicaao entre processos remotos
tipagem implicita
apenas valores sao transmitidos
SUN RPC: XDR (eXternal Data Representation)
tipagem explicita
tipos sao transmitidos juntamente com os valores
ex. !SO ANS.1, XNL
Associaao entre cliente e servidor
(Binding)
como localizar a maquina e o processo do servidor?
soluao 1: uso de uma base de dados central (diretrio)
DCE
soluao 2: cliente precisa do nome do servidor e o servidor
mantm a base de dados
Sun RPC
Tratamento de Falhas
RPC mais vulneravel a falhas do que chamadas de
procedimento locais
rede, crash do cliente ou servidor, erros gerados pelo servidor, etc.
aplicaoes devem estar preparadas para falhas do RPC
quebra de transparncia
reenvio de mensagens de pedido
cliente retransmite at que chegue uma resposta ou assuma que o
servidor falhou
servidor deve filtrar mensagens duplicadas
retransmissao de respostas:
servidor mantm um histrico das mensagens de resposta para evitar
que seja necessaria a re-execuao dos procedimentos do servidor em
caso de retransmissao de respostas perdidas
10
Semantica da Chamada RPC
chamadas locais de procedimentos: exactly-once
at-least-once - aceitavel somente se as operaoes do servidor sao
idempotentes: f(x) = f(f(x))
Nedidas de Tolerancia a Falhas Semantica da
chamada RPC
Reenvia
mensagens
de pedido
Filtragem
de
duplicatas
Resposta
NayBe Nao Nao
aplicavel
Nao aplicavel
At-least-once Sim Nao Reexecuta
procedimento
At-most-once Sim Sim Retransmite
resposta
(cache)

Programaao com RPC
suportado por poucas linguagens
compiladores nao geram client e server stubs
soluao: compilador separado (pre-compilador) para gerar stubs
!nterface Definition Language (!DL)
permite aos programadores especifcar interfaces de procedimentos
remotos (nomes, parametros, valores retornados)
usado pelos pre-compiladores para gerar stubs
cdigo de (un)marshalling e protocolos de transporte
exige modificaoes no cdigo do cliente
inicializaao de opoes relacionadas ao RPC
tipo de transporte, localizaao do servio e tratamento de falhas
poucas (ou nenhuma) modificaoes no servidor
Sun RPC
um servidor RPC oferece um ou mais conjuntos de
procedimentos
cada conjunto chamado de um programa, sendo unicamente
identificado por um numero de programa
portmap
marshallingfunmarshalling
formato XDR (eXternal Data Representation)
pre-compilador: rpcgen
http:ffwww.cisco.comfenfUSfdocsfiosfsw_upgradesfinterlinkfr2_0frpc_prfrprpcgen.html
comunicaao: TCP ou UDP
servios implementados usando Sun RPC: N!S e NFS
RPC DCE: Codificando um Cliente e
um Servidor
DCE: Associando (Binding) um Cliente a
um Servidor
!nvocaao a Ntodo Remoto
Remote Nethod !nvocation (RN!)
fornece uma maneira eficiente e transparente de
comunicaao entre objetos distribuidos, permitindo a
computaao distribuida orientada a objetos
aplicaoesfsistemas de objetos distribuidos
similar a RPC, mas com instanciaao dinamica de novos
objetos e suas respectivas interfaces
suportado por CORBA (independente de linguagem) e JAvA
componentes: referncias para objetos, interfaces, aoes
(mtodos), exceoes e coleta de lixo (garbage collection)
11
Componentes de um modelo de objetos
referncias a objetos
referencia objetos de uma classe
podendo ser atribuido e solicitado
interfaces
aoes
provocadas pelas invocaoes aos mtodos
se a fronteira de um processo ou computador ultrapassada, entao
a RN! sera usada para gerar a aao
iniciado por um objeto invocando um mtodo em outro objeto
efeitos possiveis
mudana de estado do invocado
podendo desencadear outras invocaoes a mtodos
Componentes de um modelo de objetos
exceoes
reaoes definidas pelo programador e do prprio sistema a situaoes
inesperadas e de erro
permite a recuperaao de situaoes de erro
problemas especificos devido ao ambiente distribuido
servidor pode ter falhado (crash) ou estar muito ocupado para responder
dentro de limites de tempo razoaveis
exceoes especificas
temporizadores (timeouts)
devido a infra-estrutura distribuida subjacente
coleta de lixo
determina se existem referncias restantes para um objeto no
sistema
liberaao de recursos (memria) ocupados por objetos que nao sao
mais referenciados e nao serao mais necessarios no futuro
RN!: Principio de Base
a definiao de comportamento e a implementaao desse
comportamento sao conceitos distintos
RN! permite que o cdigo que define o comportamento e o
cdigo que o implementa executem em maquinas distintas
num sistema distribuido, clientes se preocupam com a definiao do
servio e o servidores focam em como prover o servio
p.ex. a definiao de um servio remoto codificado usando
uma interface Java enquanto a implementaao do servio
codificado em uma classe Java
interfaces definem comportamento e classes definem implementaao
Referncia para o Objeto
antes de invocar um mtodo em um
objeto remoto necessario uma
referncia para o objeto
existem algumas formas de achar
essa informaao
protocolos de descoberta
servios de nomeaao, p.ex. RN!
Registry (rmiregistry)
servidores registram objetos remotos
com nomes
clientes procuram por referncias de
objetos que casem com um nome
nomes usam o formato URL
rmi:ff<maq:<port>f<NomeServico>
rmi:ff1+6.16+.69.2:3180fChat
!nvocaoes Remotas e Locais
invocao
remota invocao
invocao
remota
local
local
local
invocao
invocao
A
B
C
D
E
F
fonte: slides do livro do Coulouris
Objeto remoto e sua interface remota
interface
remota
m1
m2
m3
m4
m5
m6
Dados
implementao
objeto remoto
{ dos mtodos
fonte: slides do livro do Coulouris
12
!nstanciaao de objetos remotos
C
N M
K
invocao
remota
L
instanciao instanciao
invocao
remota
fonte: slides do livro do Coulouris
RN!: proxy e esqueleto
objeto A
objeto
remoto B
esqueleto
& despachante
da classe de B
Request
proxy
de B
Reply
mdulo de
comunicao
mdulo de
referncia remota
cliente
servidor
servente
mdulo de
comunicao
mdulo de
referncia remota
fonte: slides do livro do Coulouris
!mplementaao de RN!
mdulo de comunicaao
mensagens requestfreply
no servidor
seleciona despachante para a classe do objeto a ser invocado
obtm uma referncia local a partir do identificador do objeto remoto
usando o mdulo de referncia remota
passa a referncia local ao escalonador
mdulo de referncia remota
translaao entre referncias locais e remotas usando uma tabela de
objetos remotos
contm entradas para todos os objetos remotos mantidos pelo servidor
e para todos os proxies
usado quando (de)codificando referncias a objetos remotos
Componentes do RN!
proxies (no cliente): cpias locais de objetos remotos
despachante (no servidor): recebe pedido e usa method!D
para selecionar msgs apropriadas no esqueleto (skeleton)
esqueleto (no servidor): implementa mtodos da interface
remota
decodifica (unmarshaling) os argumentos
invoca mtodo correspondente no objeto remoto
espera terminar a execuao da invocaao
codifica (marshaling) os resultados, possiveis exceoes, e retorna-os
em uma mensagem de reply ao mtodo invocado pelo proxy
implementaao
em alguns sistemas, eles podem ser automaticamente compilados:
CORBA: usa descrioes !DL de interfaces remotas para compilar a
camada RN!, gerando cdigo C++
Java RN!: classes do proxy, esqueleto e despachante sao geradas a
partir da classe do objeto remoto
Alguns componentes adicionais da RN!
mtodos de fabrica (factory methods)
interfaces de objetos remotos nao incluem construtores
mtodos de fabrica (factory methods) substitui construtores na
criaao de objetos remotos
binders
servio que mantm o mapeamento de nomes textuais de objetos
em referncia de objetos remotos
uso de threads no servidor
toda invocaao a mtodo remoto normalmente passada para uma
thread para execuao
vantagens: se a RN! invoca outros mtodos locais ou remotos que
causam tempos de espera
Notificaao de Eventos Distribuida
idia
um objeto reage a mudanas que ocorrem em um outro objeto
SD baseados em eventos permitem que objetos em diferentes
localizaoes sejam notificados de eventos que acontecem em um
determinado objeto
exemplos de eventos
modificaoes de um documento
livro com etiqueta eletrnica entrando numa nova sala
modificaao do preo de uma aao
paradigma publishfsubscribe
o gerador de eventos publica (publish) tipos de eventos
o receptor de eventos assina (subscribe) aos tipos de eventos que
ele tem interesse
quando um evento ocorre, o receptor notificado
13
Sistemas Distribuidos
baseados em Eventos
duas caracteristicas principais
heterogeneidade dos seus componentes
assincronismo entre publish e subscriber
notificaoes sao objetos que contm informaoes sobre os
eventos
eventos podem ser de diferentes tipos
cada evento pode ter diferentes atributos
tipos e atributos sao usados tanto nas assinaturas quanto nas
notificaoes
servio de eventos CORBA e Jini
Arquitetura de Notificaao de
Eventos Distribuida
observadores
permitem desvincular um objeto de interesse de seus assinantes
assume o papel do publisher
caso 3: observador consulta o objeto de interesse e gera as notificaoes
assinante observador objeto de interesse
Servio de evento
objeto de interesse
objeto de interesse observador
assinante
(subscriber)
assinante
3.
1.
2.
notificao
notificao
notificao
notificao
Arquitetura
os observadores podem desempenhar diversos papis:
apenas encaminhamento
realiza a funao de notificaao dos assinantes
filtragem
reduao do numero de notificaoes
padroes de eventos
relacionamento entre varios eventos
caixa de correio
armazena as notificacoes
a especificaao do sistema de evento distribuido Jini permite
um subscriber numa JvN assinar e receber notificaoes de
eventos em um objeto de interesse em outra JvN
Sistema de corretora de aoes
Computador do operador
informao
provedor de
operador
fonte
externa
fonte
externa
informao
provedor de
operador
operador
operador
Notificao
Notificao
Notificao
Notificao
Notificao
Notificao
Notificao
Notificao
Notificao
Notificao
Computador do operador
Computador do operador Computador do operador
Arquitetura ClientefServidor
modelo de grande sucesso na
!nternet
WWW, FTP, WebServices, etc.
fonte dos dados: servidor
conhecido, de alto poder
computacional e confiavel
clientes solicitam dados ao
servidor
nao explora o potencial de
computaao distribuida
dependente de servidores bem
configurados e com informaao
acessivel
administraao centralizada:
problema de escalabilidade
ponto unico de falha
recursos nas bordas nao
utilizados
ns (clientes) com capacidade
razoavel ficam escondidos"
a existncia de um ou milhares
de computadores indiferente
servidor
cliente
cliente cliente
cliente
!nternet
Arquitetura P2P
ns sao equivalentes (pares)
software executado em cada n
equivalente em funcionalidade
clientes e servidores: tanto fornecem
quanto consomem dados
sistema descentralizado e distribuido
sem fonte centralizada de dados
maior robustez
dados podem estar em qualquer n
e qualquer n pode iniciar uma
interaao
maior democracia e ameaa aos
direitos autorais
maior dinamicidade: ns entram e
saem da rede
escalabilidade
nao ha gargalo para crescimento
robustez
nao ha ponto de falha unico
flexibilidade
auto-configuraao f configuraao
dinamica
n
n
n n
n
!nternet
14
Definiao P2P (1)
O compartilhamento de recursos e servios
computacionais diretamente entre sistemas
A distributed network architecture may be called a Peer-to-Peer network, if
the participants share a part of their own hardware resources (processing
power, storage capacity, network link capacity, printers). These shared
resources are necessary to provide the Service and content offered by the
network (e.g. file sharing or shared workspaces for collaboration). They are
accessible by other peers directly, without passing intermediary entities.
The participants of such a network are thus resource (Service and content)
providers as well as resource (Service and content) requestors (Servent-
concept).
R.Schollmeier, "A Definition of Peer-to-Peer Networking for the Classification of P2P
Architectures and Applications, Proceedings of the First nternational Conference on Peer-to-
Peer Computing (P2P'01)
Definiao (2)
classe de aplicaoes que traz como vantagem a
utilizaao de recursos disponiveis nas bordas da
!nternet
quais recursos?
armazenamento
processamento
conteudo
presena humana
Objetivos
compartilhamentofreduao de custos
aumento da escalabilidadefconfiabilidade
agregaao de recursos
SET!@Home, distributed.net agregam capacidade de processamento.
Napster, Gnutella e FreeNet agregam espao de armazenamento e
largura de banda para transferir dados
aumento de autonomia
o servio nao fica dependente de servidores
privacidade e anonimato
esquema que permite esconder a identidade dos ns requisitantes e
fornecedores dos dados.
dinamismo
sistema flexivel em que os recursos entram e saem continuamente
Tipos de aplicaao (1)
Comunicaao e colaboraao
comunicaoes e colaboraao em tempo real entre pares
exemplo: chat e instant messaging (Yahoo, msn, Jabber,.).
Computaao distribuida
utilizar tempo de cpu disponivel nos pares
exemplo: seti@home (http://setiathome.ssl.berkeley.edu)
The Search for Extraterrestrial !ntelligence
usuarios executam partes da busca"
!nternet Service Support
servios de internet que se baseiam em infraestruturas p2p
exemplo: multicast e aplicaoes de segurana (DoS e virus)
Tipos de aplicaao (2)
Sistemas de Bases de Dados
BDs distribuidas baseadas em infra-estruturas p2p
exemplo: Edutella.
Distribuiao de conteudos
a maior parte dos sistemas enquadra-se neste tipo de aplicaao
compartilhamentofdistribuiao de conteudos digitais (documentos,
videos, musica, etc).
aumenta a area de armazenamento e a disponibilidade de
informaoes
pode prover o anonimato e apresentar problemas de violaao de
direitos autorais
exemplos: Napster, Gnutella, Freenet, Kazaa, etc.
Nodelos de Sistemas P2P: Classificaao 1
modelo centralizado
indice global mantido por uma autoridade central
contato direto entre clientes e provedores
exemplo: Napster
modelo descentralizado (rede p2p pura)
sem indice global (sem coordenaao global)
exemplos: Gnutella, Freenet
modelo hierarquico (rede p2p hibrida)
introduao dos super-ns (super-nodes ou super-peers)
mistura dos modelos centralizado e descentralizado
exemplos: KaZaA, Norpheus
15
Nodelo Centralizado
Direforio
cenfroI
Cidode de
Deus7
Nodelo Centralizado
os pares se comunicam com um diretrio central para
publicarem o conteudo que oferecem para
compartilhamento
quando solicitado por um par, o indice central identifica o
par que melhor corresponde ao pedido
por ser o mais barato, o mais disponivel ou o mais rapido, em funao
dos requisitos do usuario
transferncia de dados efetuada diretamente entre os
pares (requisitante e provedor)
desvantagem: escalabilidade e ponto unico de falha
exemplo: Napster
Nodelo Descentralizado (Rede P2P Pura)
todos os ns sao iguais (sem hierarquia): par
sem administraao central
rede auto-mantida e com elevada resilincia
a falha de um n nao implica a falha da rede
problema: como que um n pode se juntar a uma rede?
bootstrap
atravs de uma mensagem de inundaao para efetuar a busca de um
n da rede p2p
se ligar a um n pr-definido (p.ex. arquivo de configuraao
atualizado a cada nova participaao na rede p2p)
exemplos: Gnutella e Freenet
Rede P2P Hibrida
definiao (1) + uma entidade central para prover parte dos
servios oferecidos pela rede
primeiro contactado um super-n para obter uma
metainformaao para facilitar o bootstrap
identidade de outros pares
verificar credenciais de segurana
no passo seguinte estabelecida a comunicaao p2p
exemplos: Napster, Groove, Aimster, Nagi, Softwax e iNesh
Nodelo de Super-Ns (Super-Peer)
alguns ns funcionam como super-ns por
possuirem maior capacidade, conectividade ou
confiabilidade.
um super-n pode acelerar o processo de adiao de
novos pares, mantendo uma lista de ns de ligaao
exemplo: KaZaa
Nodelo de Super-Ns
Super-Mos
16
Nodelos de Busca P2P: Classificaao 2
Centralized Service Location (CSL)
Busca centralizada
Exemplo: Napster
Flooding-based Service Location (FSL)
Busca baseada em inundaao
Exemplo: Gnutella
Distributed Hash Table-based Service Location (DHT)
Busca baseada em tabela de hash distribuida
Exemplos: CAN, Pastry, Tapestry, Chord
Nodelo por !nundaao de Pedidos
sistema p2p puro
nao existe publicaao dos recursos compartilhados
o pedido enviado (flooded) aos pares conectados ao n
que por sua vez enviam aos seus pares
o processo para quando o pedido recebe uma resposta ou
um certo limite no numero de inundaoes atingido
desvantagem: escalabilidade (exige maior largura de banda)
exemplo: Gnutella
aplicaoes: redes pequenas como e.g. rede de empresa
soluoes: super-ns (indexaao), caching de pedidos
Nodelo por !nundaao de Pedidos Nodelo por !nundaao de Pedidos
Nodelo de Roteamento do Documento
a cada par atribuido um !D que conhece um conjunto de
outros pares
um documento, ao ser publicado, recebe um !D de acordo
com o seu conteudo e nome e encaminhado ao par com o
!D mais prximo do seu
neste encaminhamento cada par guarda uma cpia local
os pedidos de documentos sao redirecionados ao par com o
!D mais prximo ao !D do documento requisitado
o processo se repete at o documento ser encontrado, sendo depois
transferido ao requisitante
desvantagem: o !D do documento deve ser conhecido antes
de um par requisita-lo
exemplo: FreeNet
aplicaoes: redes de grande dimensao
Nodelos de Sistemas P2P: Classificaao 3
Nodelo Centralizado
garantia de localizaao e buscas flexiveis
Napster, mensagens (!CQ, etc)
Nodelo Descentralizado e Nao Estruturado
super-Ns: KaZaA
inundaao: Gnutella
buscas flexiveis e sem garantia de sucesso
Nodelo Descentralizado e Estruturado
DHT
topologias bem definidas: anel, arvore, grade, hipercubo, etc.
buscas exatas e garantia de sucesso em log(N)
Chord, etc.
17
Redes P2P Descentralizadas e
Estruturadas
segunda geraao de redes P2P
auto-organizavel
balanceamento de carga
tolerante a falhas
garantias quanto ao numero de saltos para responder a uma
solicitaao
principal diferena com relaao as redes nao-estruturadas
baseada em DHT
Distributed Hash Tables (DHT)
versao distribuida de uma tabela hash
armazena pares (chave, valor) (key, value)
chave (key) - nome de um arquivo
valor (value) - pode ser o conteudo do arquivo ou a localizaao do conteudo
objetivo: inserirfprocurarfapagar pares (chave, valor)
cada par (peer) armazena um subconjunto de pares (chave, valor) do
sistema
funcionamento de base:
achar o n responsavel por uma determinada chave
mapeamento chave n
rotear eficientemente pedidos de inserefprocurafapaga a este n
DHT Generic !nterface
Node id: m-bit identifier (similar to an !P address)
Key: sequence of bytes
value: sequence of bytes
put(key, value)
store (key,value) at the node responsible for the key
value = get(key)
retrieve value associated with key from the appropriate node
DHT: !dia Basica
DHT: !dia Basica
insere
(I
I
,V
I
)
DHT: !dia Basica
insere
(I
I
,V
I
)
18
DHT: !dia Basica DHT: !dia Basica
recupero (I
I
)
Propriedades Desejaveis da DHT
chaves mapeadas uniformemente em todos os ns da rede
em geral, qualquer funao aleatria de hash boa" suficiente: padrao SHA-
1 (colisao praticamente impossivel)
cada n deve manter informaao apenas de alguns poucos outros ns
o numero de vizinhos por n deve ser escalavel
mensagens devem ser eficientemente roteadas a um outro n
o diametro de busca deve ser escalavel (log N)
o roteamento deve ser distribuido (sem hotspots)
a chegada e saida de um n somente afeta poucos ns
precisa re-dividir as chaves pelos ns existentes e reorganizar o conjunto de
vizinhos de cada n
mecanismo de entrada" (bootstrap) na rede, para conectar novos ns na
infra-estrutura DHT
Protocolos de Roteamento DHT
DHT uma interface genrica
existem varias implementaoes dessa interface:
Chord [N!T|
Pastry [Nicrosoft Research UK, Rice University|
Tapestry [UC Berkeley|
Content Addressable Network (CAN) [UC Berkeley|
SkipNet [Nicrosoft Research US, Univ. of Washington|
Kademlia [New York University|
viceroy [!srael, UC Berkeley|
P-Grid [EPFL Switzerland|
Freenet [!an Clarke|
Caching, replicaao e migraao de
conteudos
os sistemas p2p baseiam-se na replicaao dos
conteudos que disponibilizam de modo a:
aumentar a disponibilidade dos conteudos
aumentar o desempenho
aumentar a resistncia a uma eventual tentativa de
censura (tornar conteudos indisponiveis)
Replicaao de conteudos
replicaao passiva
os conteudos sao replicados devido as transferncias ocorridas
quando um documento pedido por um par.
replicaao por caching
o documento fica temporariamente guardado nos pares por onde
passa at chegar ao par destino.
replicaao ativa
utilizada para melhorar a localidade dos dados (tempo de acesso aos
dados) e a disponibilidade (evitar que a falhafinativaao de pares
torne os documentos indisponiveis)
obs.: a replicaao de documentos impoe dois requisitos
adicionais: consistncia e sincronizaao dos dados.
19
Outras caracteristicas
segurana
relacionada com a disponibilidade, privacidade, confidencialidade,
integridade e autenticidade.
anonimato
em relaao ao autor do documento; do n em que esta armazenado;
a identidade e detalhes do prprio conteudo; os detalhes da query
necessaria para obter o conteudo.
negaao de conhecimento
possibilidade do usuario desconhecer o conteudo guardado no seu
n (atravs de codificaao sem distribuiao de chaves).
o usuario nao pode ser responsabilizado pelo conteudo do seu n
uma vez que nao tem acesso aos dados.
Redes Sobrepostas (Overlay)
Redes Sobrepostas: Definiao
rede construida sobre uma outra rede pr-existente
ns de uma rede sobreposta conectados por enlaces,
chamados lgicos ou virtuais
cada enlace virtual corresponde a caminhos, possivelmente de
multiplos saltos, na rede subjacente
exemplos e usos
redes P2P sobreposta a !nternet: busca de informaao
!nternet discada" sobre a rede publica de telefonia.
roteamento (multicast)
distribuiao de conteudo: CDN
resilincia
Redes Sobrepostas: Construao e
Nanutenao
como a rede se inicia?
primeiro n?
bootstrap
como novo n entra na rede sobreposta?
manutenao de vizinhana
como o n mantm conhecimento sobre seus vizinhos na
rede sobreposta?
como ocorre fusao (join) de redes?
Redes Sobrepostas P2P
Recursos
Funo de
mapeamento
Redes
Pares
Espao de dentificadores
Funo de
mapeamento
1. Escolha do espao de identificadores
2. Mapeamento dos recursos e pares para o espao de identificadores
3. Gerenciamento do espao de identificadores pelos pares
4. Estrutura lgica da rede
5. Estratgia de roteamento
6. Estratgia de manuteno
Redes Sobrepostas P2P: Resumo
escolha do espao de identificadores
mapeamento dos recursos e pares no espao de
identificadores
dependente da aplicaao e balanceamento de carga
gerenciamento do espao de identificadores pelos pares
pode variar com o tempo
politica do mais prximo
redundancia (um identificador em varios pares)
estrutura lgica da rede
conexoes entre pares
estratgia de roteamento
centralizada, inundaao e DHT
estratgia de manutenao
proativas e reativas
20
23
24
25
26
27
28
29
30
31
22
17
18
19
21
20
9
10
11
12
13
14
15 16
0
8
7
6
1
5
4
3
2
17-25 25
10-16 16
6-9 9
2631 e 0-5 5

25 25 (9 16) 4
25 17 (9 8) 3
16 13 (9 4) 2
16 11 (9 2) 1
16 10 (9 1) 0 9
25 21 (5 16) 4
16 13 (5 8) 3
9 9 (5 4) 2
9 7 (5 2) 1
9 6 (5 1) 0 5
No IdentiIicador (5 2

Indice ( Nos 21
Redes Sobrepostas P2P: Chord
Histrico do Compartilhamento de
Arquivos P2P: Wikipedia
1a geraao: cliente-servidor
lista de arquivos centralizada
exemplos:
Napster (sistema pago)
eDonkey2000 na versao servidor (Overnet e KAD)
Limewire
web-based sharing
em redes sociais: Facebook
2a geraao: decentralizaao
Gnutella: problemas de escalabilidade
soluao FastTrack: alguns ns more equal than others" (super-ns)
(indexaao)
Gnutella (super-ns)
DHTs: varios (ou todos) ns indexando hashes
vantagem: busca rapida e eficiente
desvantagem: nao permite busca por palavras-chave (apenas exact-match)
exemplos: Gnutella, Kazaa (servidor central para login), eNule (com Kademlia).
Histrico do Compartilhamento de
Arquivos P2P: Wikipedia
3a geraao: indireto e criptografado (anonymous P2P)
roteamento atravs de outros ns e criptografia forte
WASTE, JetiANts, Tor e !2P
friend-to-friend
exemplos: ANts P2P, RShare, Freenet, !2P, GNUnet e Entropy.
Example software includes
+a geraao: streams over P2P
radio e Tv
exemplos:
geral: Broadcatching e Podcast
arvore: CoolStreaming e Peercast
Swarming (BT-like): Djingle, !cecast, Joost, NediaBlog, PeerCast, PPLive,
PPStream, SopCast, TvUPlayer e vuze
Bibliografia
A survey of Peer-to-Peer Content Distribution
Technologies", S. Androutsellis-Theotokis and D.
Spinellis, ACN Computing Surveys, vol. 36, N. +,
December 200+, pp. 335-371.
A Definition of Peer-to-Peer Networking for the
Classification of P2P Architectures and
Applications", R. Schollmeier, Proceedings of the
First !nternational Conference on Peer-to-Peer
Computing (P2P'01)

Você também pode gostar