Upload
elisa-de-lacerda-fragoso
View
372
Download
16
Embed Size (px)
Citation preview
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 suportam diferentes modelos de programação.
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 DadosDados 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/UnmarshallingMarshalling:
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íncronaPrimitiva 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íncronaPrimitiva 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
umacomunicaçã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-ServidorRPCComunicação de Objetos DistribuídosComunicação em Grupo
Comunicação Cliente-Servidor (1)
Núcleo
cliente
Núcleo
servidor
Requisição
Resposta
Rede
Comunicação Cliente-Servidor (2)Código Tipo De Para DescriçãoREQ Pedido Cliente Servido
rO cliente deseja um serviço
REP Resposta Servidor Cliente Resposta do servidor para o cliente
ACK Reconhecimento
------- --------- O pacote anterior chegou
AYA Você está vivo? Cliente Servidor
Pergunta se o servidor não parou
IAA Eu estou vivo Servidor Cliente O servidor não parouTA Tente
novamenteServidor Cliente O servidor está
lotadoAU Endereço
desconhecidoServidor Cliente Nenhum processo
está usando aquele endereço
Protocolo Pedido-RespostaTambé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 ProcedimentosRemotos(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)
cliente servidor
Requisição
Resposta
Rede
stub stub
Manipulação da Comunicação Módulo da comunicação usa protocolo pedido-
reposta para troca de mensagens entre cliente e servidor;
res = srv.Soma(a,b)
Cliente
res=request(srv,msg)
Servidor
res = Soma(a,b)
reply(clt,res)
SendReplyGetRequest
LigaçãoO 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 Servidor4- 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 - RPCProcedimento 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 RPCProduto DCE -> Distributed Computing
EvironmentDesenvolvido pela OSF (Open Software
Foundation) --> The Open GroupInicialmente foi projetado para a
plataforma de sistema operacional UNIX e depois portado para a plataforma Windows.
Aplicação Cliente/Servidorusando RPC
Aplicação
IDL
Compilador IDL
Header Sever StubClient StubClient Code Server Code
#include #include
Compilador C Compilador C Compilador C Compilador C
Client.obj StubServer.objStubClient.obj Servidor.obj
Linker LinkerClient.exe Server.exe
Comunicação de Objetos DistribuídosUm 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 GruposCom 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 GrupoControle
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 98Sites:
http://dsonline.computer.org;