Você está na página 1de 24

SISTEMAS DISTRIBUÍDOS

CAPÍTULO 4 – COMUNICAÇÃO
Slides cedidos pela professora Aline
Nascimento e do livro texto
CHAMADA DE PROCEDIMENTO REMOTO

 Resumindo:

 Permite a um cliente o acesso a um serviço remoto por meio


de uma simples chamada a um procedimento local

 Possibilita que programas clientes sejam escritos de modo


simples

 Pode localizar automaticamente o servidor correto

 Estabelece a comunicação entre software cliente e software


servidor
RPC ASSÍNCRONA

 Fornecem facilidades de modo a não bloquear o cliente


quando não há nenhum resultado a esperar
RPC ASSÍNCRONA

 Também podem ser úteis quando uma resposta será


retornada mas o cliente não está preparado para esperar
por ela

 Enquanto espera, o cliente pode realizar outras tarefas

 São combinadas duas RPCs assíncronas  denominada


RPC assíncrona deferida

 O cliente pode, também, não esperar aceite do servidor e


continuar sua execução  RPC de uma via

 Quando a confiabilidade não é garantida, o cliente não


saberá se a requisição será ou não processada
RPC ASSÍNCRONA DEFERIDA
COMUNICAÇÃO ORIENTADA A MENSAGEM

 Quando não se pode adotar que o lado receptor está


executando no momento em que uma requisição é emitida,
o que fazer?

 Como contornar estas limitações  Troca de mensagens

 Mensagens podem ser trocadas quando processos estão ou


não em funcionamento

 Existe a possibilidade de armazenamento para posterior


tratamento
COMUNICAÇÃO ORIENTADA A MENSAGEM

 Muitos SDs são construídos em cima do modelo simples


orientado a mensagem oferecido pela camada de transporte

 Algumas interfaces da camada de transporte foram


padronizadas: padrão POSIX
SOCKETS

 Um socket é um terminal de comunicação para o qual uma


aplicação pode ler/escrever dados que devem ser
recebidos/enviados pela rede subjacente

 Sockets são abstrações que representam pontos de


comunicação através dos quais processos se comunicam

 Protocolo de transporte específico

 Orientado a conexão: TCP (Transport Control Protocol)

 Sem conexão: UDP (User Datagram Protocol)


SOCKETS

 Para que dois computadores possam trocar informações


cada um utiliza um socket

 Sockets adotam o paradigma cliente-servidor


PRIMITIVAS DE SOCKET PARA TCP/IP
FUNCIONAMENTO DE SOCKETS

receive send

send receive
SISTEMA COM SOCKETS (SERVIDOR)

from socket import *


s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
(conn, addr) = s.accept() # returns new socket and addr.
client
while True: # forever
data = conn.recv(1024) # receive data from client
if not data: break # stop if client stopped
conn.send(str(data)+"*") # return sent data plus an "*"
conn.close() # close the connection
SISTEMA COM SOCKETS (CLIENTE)

from socket import *


s = socket(AF_INET, SOCK_STREAM)
s.connect((HOST, PORT)) # connect to server (block
until accepted)
s.send('Hello, world') # send same data
data = s.recv(1024) # receive the response
print data # print the result
s.close() # close the connection
FACILITANDO O USO DE SOCKETS

 Sockets exigem programação de baixo nível que induz a


erros

 São sempre utilizados no modelo cliente-servidor

 Alternativa: ZeroMQ

 Provê um nível de expressão mais alto fazendo o


pareamento de sockets: um para enviar mensagens de um
processo P e um correspondente no processo Q para
receber mensagens. Toda comunicação é assíncrona.

 Three patterns
FACILITANDO O USO DE SOCKETS

 Três padrões:

 Request-reply

 Publish-subscribe

 Pipeline
REQUEST-REPLY
REQUEST-REPLY
PUBLISH-SUBSCRIBE
PIPELINE
PIPELINE
PIPELINE
COMUNICAÇÃO ORIENTADA A MENSAGEM (CONT)

Interface de Troca de Mensagens (MPI)

 Surgiu da consideração de que Sockets são insuficientes


para escrever com facilidade aplicações de alta eficiência

 Sockets apresentam problemas de abstração, suportando


apenas primitivas simples send e receive

 Sockets são considerados inadequados para protocolos


proprietários desenvolvidos para redes de alta velocidade

 Tais protocolos requeriam uma interface que pudesse manipular


características mais avançadas
MPI (MESSAGE PASSING LIBRARY)

 Inicialmente, bibliotecas prioritárias de trocas de mensagens


eram incorporadas aos multicomputadores de alto
desempenho

 Evolução natural  definição de um padrão para troca de


mensagens, independente de hardware e de plataforma

 MPI foi projetada para aplicações paralelas, para


comunicação transiente

 Considera que falhas sérias como quedas de processos ou


partições da rede sejam fatais e não requeiram recuperação
automática
MPI – COMO FUNCIONA?
 A comunicação ocorre dentro de um grupo conhecido de
processos

 Cada grupo recebe um identificador  groupID

 Cada processo dentro de um grupo também recebe um


indentificador  processID

 O par (groupID, processID) identifica fonte ou destinatário de


uma mensagem

 Vários grupos de processos podem estar envolvidos em um


serviço de computação, podendo estar em execução ao
mesmo tempo

Você também pode gostar