Anda di halaman 1dari 25

Sistemas Distribudos

Comunicao
Jorge Cavalcanti Fonsca (jorge.fonseca@upe.br)

SD Modelos Arquiteturais

Rpida reviso

O que arquitetura
Modelos

Cliente Servidor

Proxy

Peer to Peer

Comunicao

Sistema Distribudo x Sistema Centralizado

Sistemas Distribudos trocam e sincronizam


informaes para executar processos atravs de
mensagens

Complexidade de comunicao entre processos

O que so mensagens?

Modelos de sincronizao facilitam a


coordenao de execuo distribuda

Comunicao
Processo A

Processo B

Processo A constri uma


mensagem e envia para destino
( S.O Rede)

O que enviado/recebido pela rede?

Pacotes (sequncia de bytes)

Como o processo B entende os dados


que chegam pela rede?

Protocolo / Regras (processos falam o


mesmo idioma)

Comunicao
Elementos

Bsicos

Transmisso de dados
Endereamento
Sincronismo
Enfileiramento (Bufferizao)
Confiabilidade

Endereamento

Para o usurio:

Acesso a um servidor especfico

Sabemos que nem sempre verdade...


Tipos de endereamento

Cliente Mquina especfica


Cliente mquina.processo
Descoberta de endereo via Broadcasting
Descoberta de endereo via Servidor de nomes

Endereamento
Cliente Servidor

Cliente

request to 222

Servidor

IP: 111

IP: 222

P1

P1
reply to 111

Endereamento
Cliente Servidor.Processo
Servidor
Servidor
IP: 333

Cliente
IP: 111
request to 333.P2

P1

P1

P2
reply to 111.P1

Desvantagens?

- Falta de Transparncia de localizao

Endereamento - Broadcasting
Quem tem o processo A?
IP: 222

P1

IP: 555
P1

Cliente

IP: 111
IP: 333
P1
P1

IP: 666
P1

IP: 444
P1

P2 A

Endereamento - Broadcasting
IP: 222

P1

Cliente guarda informao para


request futuros e estabelece
conexao com servio/servidor

IP: 555
P1

Cliente

IP: 111
IP: 333
P1
IP: 666

P1

P1
IP: 444
P1

Eu tenho o processo A
como servio

P2 A

Endereamento Servidor de Nomes


Quem tem o processo A?

IP: 555

IP: 222

P1

P1

Cliente

IP: 111
IP: 333
P1
IP: 666

P1

P1
IP: 444
P1

Servio

Endereo

666.P2

444.P1

P2 A

Endereamento Servidor de Nomes


IP: 222

Cliente guarda informao para


request futuros

IP: 555
P1

P1

Cliente

IP: 111
IP: 333
P1
IP: 666

P1

P1

666.P2
IP: 444
P1

Servio

Endereo

666.P2

444.P1

P2 A

Endereamento Servidor de Nomes


IP: 222

P1

Comea a trocar informao


com o processo P2

IP: 555
P1

Cliente

IP: 111
IP: 333
P1
P1

IP: 666
P1

IP: 444
P1

P2 A

Transmisso de Dados

Dados em programas so estruturados enquanto


que mensagens carregam informao sequencial

Linearizao / Restaurao de dados

Heterogeneidade na representao dos dados em


computadores:

Uso de formato externo comum (XDR)


Incluso de uma identificao de arquitetura na
mensagem

Transmisso de Dados

Marshalling

Linearizao de uma coleo de dados estruturados


Traduo dos dados em formato externo

Unmarshalling

Traduo do formato externo para local


Restaurao dos itens de dados de acordo com sua
estrutura

Comunicao/Sincronismo

Formas de Comunicao

Direta (processos conhecidos)


Cliente

Receive

Servidor

Send

Comunicao/Sincronismo

Formas de Comunicao

Direta (processos conhecidos)


Indireta (processos no se conhecem)

Quero receber mensagem


Buffer pode ser na prpria mquina

Cliente
Send

Forma de Sincronizao

Sncrona ou bloqueante
Assncrona ou no-bloqueante

Receive
(loop)

Comunicao sncrona

Servidor

Somente primitivas sncronas

Comunicao assncrona

Pelos menos 1 primitiva assncrona

Exemplos:
- Browser

(sncrono)

- Callback / Listener (assncrono)

Enfileiramento

Situaes:

Send ocorre antes de Receive


Um cliente faz um Send enquanto o servidor ainda
atende a outro cliente

Soluo trivial: clientes devem insistir ...


Soluo pragmtica: mailbox (uma fila de
mensagens controlada pelo ncleo):

mailbox criado a pedido do servidor


mensagens endereadas ao mailbox

Confiabilidade

Mensagens se perdem, atrasam, duplicam...

Quem deve garantir que a mensagem foi entregue?


Usurio? Aplicao? Middleware? S.O?

Request (1)

Cliente

Servidor
Reply + ACK (2)

Confiabilidade

Mensagens se perdem, atrasam, duplicam...

Quem deve garantir que a mensagem foi entregue?


Usurio? Aplicao? Middleware? S.O?

Request (1)

Cliente

ACK (2)

Reply (3)

Servidor

Confiabilidade

TCP vs UDP

Vocs lembram qual a principal diferena entre esses


dois protocolos?

Socket

O que Socket?

Para que server?

Entidade lgica que representam uma conexo entre um


aplicao e uma porta de comunicao local ou remota.
Permitir comunicao entre sistemas/hosts/mquinas em
uma rede.

Endereo Socket

(IP, Port)

Socket

Vimos socket e prtica de socket nas primeiras aulas...

Vdeos

Rede de Computadores - Animao em 3D

https://www.youtube.com/watch?v=Iqcp3k8DgGw

Como funciona o DNS

https://www.youtube.com/watch?v=eRDzVZvOYV0

Sistemas Distribudos
Comunicao
Jorge Cavalcanti Fonsca (jorge.fonseca@upe.br)