Sistemas Distribuídos
Aula 4: Modelos de
Comunicação
Relembrando o modelo OSI
Protocolos de Middleware
Middleware
 É uma camada de software de distribuição que abstrai a
complexidade e a heterogeneidade do ambiente
distribuído sobre uma rede com diversas tecnologias,
arquiteturas de máquinas, sistemas operacionais e
linguagens de programação;
 Possui o objetivo de projetar, programar e gerenciar
aplicações distribuídas através do provimento de um
simples, consistente e integrado ambiente para
programação distribuída;
 Diferentes plataformas de middleware
diferentes modelos de programação.
suportam
Middleware Baseado em Objetos
 Um dos mais populares modelos de middleware;
 Ambiente de programação
Distribuição + orientação a objetos;
Utilização de IDL´s;
 Serviços
A comunicação poderá ser síncrona ou assíncrona;
Assume a utilização de um transporte confiável 
Protocolo TCP.
Transmissão de Dados
Dados em programas são estruturados enquanto
que mensagens carregam informação seqüencial:
Necessidade de linearização/restauração de dados;
Heterogeneidade na representação de dados em
computadores:
Uso de um formato externo comum;
Marshalling/Unmarshalling
Marshalling:
Linearização de uma coleção de itens de dados
estruturados;
Unmarshalling:
Tradução do formato externo para o local;
Restauração dos itens de dados de acordo com sua
estrutura.
Comunicação Síncrona
Primitiva SEND:
Processo cliente aguarda enquanto o núcleo envia a
mensagem para o processo servidor bloqueia o
cliente;
Primitiva RECEIVE:
Processo servidor aguarda até que o núcleo receba uma
mensagem endereçada para aquele processo;
Comunicação Assíncrona
Primitiva SEND:
Processo cliente aguarda somente enquanto a
mensagem é copiada para o buffer do núcleo  não
bloqueia o cliente;
Primitiva RECEIVE:
Processo servidor aguarda por uma mensagem
bloqueia o servidor;
Processo servidor apenas comunica ao núcleo que
espera receber uma mensagem não bloqueia o
servidor;
Comunicação por Sockets
 Fornece “pontos finais” (endpoints) para a comunicação
entre processos (end-to-end);
 Deve ser ligado a uma porta local;
 O par de Sockets :
(endereço_IP_local:porta_local,
endereço_IP_remoto:porta_remota) identifica unicamente uma
comunicação
Portas
 Um destino de mensagem especificado por inteiro
pequeno (16 bits);
 Qualquer processo pode mandar uma mensagem
para uma porta;
 Protocolos usam a combinação endereço_IP:porta;
 Portas
IANA
(Internet
Assigned
Numbers
Authority)/ICANN (Internet Corporation for Assigned
Names and Numbers):
Conhecidas: 1 – 1023
Registradas: 1024 – 49151
Dinâmicas ou privadas: 49152 - 65535
Comunicação em SDs
Comunicação Cliente-Servidor
RPC
Comunicação de Objetos Distribuídos
Comunicação em Grupo
Comunicação Cliente-Servidor (1)
Requisição
cliente
servidor
Resposta
Núcleo
Núcleo
Rede
Comunicação Cliente-Servidor (2)
Código
Tipo
De
Para
Descrição
REQ
Pedido
Cliente
Servidor
O cliente deseja um
serviço
REP
Resposta
Servidor
Cliente
Resposta do servidor
para o cliente
ACK
Reconhecimento
-------
---------
AYA
Você está vivo?
Cliente
Servidor
Pergunta se o servidor
não parou
IAA
Eu estou vivo
Servidor
Cliente
O servidor não parou
TA
Tente novamente
Servidor
Cliente
O servidor está lotado
AU
Endereço
desconhecido
Servidor
Cliente
Nenhum processo está
usando aquele endereço
O pacote anterior
chegou
Protocolo Pedido-Resposta
Também chamado de Request-Reply (RR)
Utilizado na comunicação cliente-servidor;
Primitivas:
DoOperation - clientes invocam operações remotas
GetRequest - servidor adquire os pedidos de Serviços
SendReply – envia resposta
Chamada de Procedimentos
Remotos(RPC)
 Comunicação baseada em operações de entrada/saída;
 Abstração fraca onde vários problemas devem ser
tratados pelo programador;
 RPC objetiva permitir chamada de procedimento remoto
como se fosse local, ocultando entrada/saída de
mensagens;
 Utiliza o protocolo de Pedido-Resposta;
 Integração relativamente transparente com linguagens
de programação, que inclui uma notação para definir
interfaces (“IDL”);
Funcionamento do RPC
 Um processo A chama um procedimento p de um
processo B, entrando em estado de espera;
 O processo B passa a executar o procedimento p, e
ao seu término faz um reply para o processo A;
 O processo A volta à sua execução normal após ter
recebido o reply;
Implementação do RPC
 Etapas:
Processamento de interface;
Manipulação da comunicação;
Ligação.
Processamento de Interface (1)
 Integração dos mecanismos de RPC com os
programas cliente e servidor escritos em uma
linguagem de programação convencional;
 Cliente e servidor assinalam o mesmo identificador
de procedimento para cada procedimento na
interface;
 Utilização de stubs para comunicação;
Processamento de Interface (2)
Requisição
servidor
cliente
stub
Resposta
Rede
stub
Manipulação da Comunicação
 Módulo da comunicação usa protocolo pedido-reposta
para troca de mensagens entre cliente e servidor;
Servidor
Cliente
res = srv.Soma(a,b)
res = Soma(a,b)
res=request(srv,msg)
reply(clt,res)
GetRequest
SendReply
Ligação
O mecanismo possui um binder para resolução
de nomes permitindo ligação dinâmica e
transparência de localização.
Procedimentos para Comunicação
usando RPC (1)
 Passo 1: Stub do cliente:
1- Intercepta a chamada;
2- Realiza o marshalling (empacota os parâmetros);
3- Envia mensagem de solicitação (request) ao servidor.
 Passo 2: Stub do Servidor
4- Recebe a mensagem de request;
5. Realiza o unmarshalling (desempacota os parâmetros);
6. Chama o procedimento, passando os parâmetros;
7. Empacota o resultado;
8. Envia mensagem de reply ao cliente;
Procedimentos para Comunicação
usando RPC (2)
 Passo 3: Stub do cliente:
9. Recebe a mensagem de resposta (reply)
10. Desempacota o resultado
11. Passa o resultado para o cliente
Falhas em RPC
 O cliente não é capaz de localizar o servidor;
 A mensagem de request do cliente para o servidor é
perdida;
 A mensagem de reply do servidor para o cliente é
perdida;
 O servidor pára após ter recebido a mensagem de
request;
 O cliente pára após ter enviado a mensagem de
request;
Falha do Servidor - RPC
Procedimento normal:
recebe mensagem de request;
executa procedimento;
envia mensagem de reply;
A falha pode ocorrer:
após a execução
antes da execução
Falha do Cliente - RPC
 O servidor torna-se um “órfão”
 Soluções:
terminação do servidor pela máquina do cliente
reencarnação do cliente: toda computação remota
anterior é destruída
reencarnação “suave” do cliente: somente as
computações remotas referentes àquele cliente são
destruídas
expiração: servidor estabelece um timeout para
confirmação
Exemplo de Produto RPC
Produto DCE -> Distributed Computing
Evironment
Desenvolvido pela OSF (Open Software
Foundation) --> The Open Group
Inicialmente foi projetado para a plataforma de
sistema operacional UNIX e depois portado para
a plataforma Windows.
Aplicação Cliente/Servidor
usando RPC
Aplicação
IDL
Compilador IDL
Client Code
Header
Client Stub
#include
Sever Stub
Server Code
#include
Compilador C
Compilador C
Compilador C
Compilador C
Client.obj
StubClient.obj
StubServer.obj
Servidor.obj
Linker
Client.exe
Server.exe
Linker
Comunicação de Objetos
Distribuídos
Um objeto encapsula dados;
Operações são chamadas de métodos;
Métodos são disponibilizados através de uma
interface;
Um objeto pode implementar diversas
interfaces;
Comunicação de Objetos
Distribuídos
2-16
Comunicação em Grupo
 Tolerância a falhas baseada na replicação de serviços;
 Localização de objetos em serviços distribuídos;
 Melhor desempenho via replicação de dados;
 Múltipla atualização;
Processo Receptor
Processo Transmissor
Classificação dos Grupos
Com relação á Visibilidade:
Aberto: um processo fora do grupo consegue enviar
mensagens para o grupo todo
Fechado: somente processos do grupo enviam
mensagens para o grupo todo
Com relação á Organização:
Peer: todos os processos tomam decisão
Hierárquico: a decisão é centralizada
Endereçamento de Grupo
 Multicast
Um processo envia uma mensagem simultânea para
todos os membros do grupo.
 Broadcast
Um processo envia uma mensagem para todas as
máquinas e somente as dos membros do grupo a
assimila.
 Unicast
Um processo envia uma mensagem para todos os
membros do grupo uma por vez.
Controles e Atualizações no Grupo
Controle
centralizado
servidor de grupo
descentralizado
acordo entre os membros do grupo
Operações:
Entrada de um membro: atualizar estado
Saída de um membro:
Se involuntária, como por exemplo, uma parada no sistema,
todos os membros restantes devem notar sua saída
Por onde estudar ?
Notas de Aula;
Andrew Tanenbaum
Capítulo 2 - Páginas 57 a 98
Sites:
http://dsonline.computer.org;
Download

middleware