Vous êtes sur la page 1sur 14

Conteúdo Programático

Universidade Federal do Pará


Instituto de Ciências Exatas e Naturais
Bacharelado em Sistemas de Informação  UNIDADE I: CARACTERIZAÇÃO DOS SISTEMAS DISTRIBUÍDOS
 Exemplo de Sistemas Distribuídos
 Compartilhamento de recursos
 Modelos de arquiteturas de Sistemas Distribuídos
 Comunicação em Sistemas Distribuídos
Tópicos Especiais em Sistemas  Sockets
 RPC
Distribuídos
 UNIDADE II: SEGURANÇA EM SISTEMAS DISTRIBUÍDOS
 Visão geral das técnicas de segurança
 Algoritmos de criptografia
Prof. Josivaldo Araújo  Assinaturas digitais
jsaraujo@interconect.com.br
 Exemplos de sistemas de criptografia

Conteúdo Programático Referências Bibliográficas

 UNIDADE III: TRANSAÇÕES DISTRIBUÍDAS COULOURIS, George., et al. Sistemas Distribuídos: Conceitos e
 Transações aninhadas Projetos. Porto Alegre: Bookman, 2007.
 Travas e bloqueio
 Transações distribuídas planas e aninhadas
 Protocolos de efetivação atômica  RIBEIRO, U. Sistemas Distribuídos – Desenvolvendo Aplicações de
 Controle de concorrência
Alta Performance no Linux. Rio de Janeiro: Editora Axcel Books, 2005.
 Impasses distribuídos
 Recuperação de transações  ALBUQUERQUE, F. TCP/IP: Programação de Sistemas Distribuídos
HTML, JAVASCRIPT e JAVA. Editora Axcel, 2001.
 UNIDADE IV: REPLICAÇÃO
 Modelo de sistema e comunicação em grupo  TANEMBAUN, A. and STEEN, M. Distributed Systems: Principles and
 Serviços tolerantes a falhas Paradigms. Prentice Hall, 2001.
 Transações com replicação de dados
 TANEMBAUN, A. Distributed Operating Systems. Prentice Hall
Informática, 1995.

Motivação

Unidade I:
A motivação para construir sistemas distribuídos é
Caracterização dos Sistemas Distribuídos
proveniente do desejo de compartilhar recursos;

Professor: Josivaldo Araújo Recursos podem ser:


jsaraujo@interconect.com.br
 Hardware: Discos, Impressoras, Processadores, etc.;
 Softwares: Arquivos, Banco de Dados, Objetos de dados, etc.

Instituto de Ciências Exatas e Naturais


Faculdade de Computação
Curso Bacharelado em Sistemas de Informação
Definição... Exemplos de Sistemas Distribuídos

Uma Parte Típica da Internet


 Pode-se definir sistemas
distribuídos como sendo aquele
no qual os componentes de intranet 
hardware ou software, localizados  ISP


em computadores interligados em 
rede, se comunicam e coordenam
suas ações apenas enviando backbone
mensagens entre si.

satellite link
Desktop Computer
server:
network link:

A Word Wide Web A Word Wide Web

 É um sistema em evolução para a publicação e para o acesso A web é baseada em três componentes
a recursos e serviços pela Internet.
tecnológicos padrão principais:
 Por meio de navegadores web (browsers) os usuários HTML (HyperText Markup Language)
⌧Linguagem usada para especificar o conteúdo e o leiaute de páginas
recuperam e vêem documentos de muitos tipos, ouvem fluxo
de áudio, assistem a fluxo de vídeo e interagem com um vasto URLs (Uniform Resource Locators)
conjunto de serviços. ⌧Identificam os documentos e outros recursos armazenados como parte
da web
 A web é um sistema aberto: pode ser ampliada e Arquitetura cliente-servidor, com regras padrão para
implementada de novas maneiras, sem perturbar a interação (protocolo HTTP – HyperText Transfer
funcionalidade existente. Protocol), por meio dos quais os navegadores e outros
clientes buscam documentos e outros recursos dos
 A web é aberta no que diz respeito aos tipos de recursos que servidores da web.
nela podem ser publicados e compartilhados.

Exemplos de Sistemas Distribuídos Exemplos de Sistemas Distribuídos

Servidores e Navegadores WEB Uma Intranet Típica


email server Desktop
computers
http://www.google.comlsearch?q=kindberg print and other servers
www.google.com

Browsers Local area


Web servers Web server network

www.cdk3.net Internet
http://www.cdk3.net/
email server
www.w3c.org print
File server
File system of http://www.w3c.org/Protocols/Activity.html other servers
www.w3c.org Protocols
the rest of
Activity.html the Internet
router/firewall
Exemplos de Sistemas Distribuídos Exemplos de Sistemas Distribuídos
Computação Móvel e Ubíqua Computação Móvel e Ubíqua

A portabilidade de muitos desses dispositivos, junto  A computação ubíqua (pervasiva) é a utilização de vários
com a capacidade de se conectar com redes em dispositivos computacionais pequenos e baratos, que
estão presentes nos ambientes físicos dos usuários.
diferentes lugares, torna possível a computação
móvel (nômade).
 O termo pervasivo sugere que os equipamentos estarão
presentes em objetos diários, sem que o usuário o
A computação móvel é a execução de tarefas de perceba, ou seja, serão transparentes para o usuário.
computação, enquanto o usuário está se deslocando
de um lugar para outro ou visitando lugares
 O termo ubíquo significa que a computação estará
diferentes de seu ambiente usual.
onipresente: disponível em qualquer lugar.

Exemplos de Sistemas Distribuídos Compartilhamento de Recursos


Computação Móvel e Ubíqua
Em um sistema distribuído, os recursos são
fisicamente encapsulados dentro de computadores
Internet e só podem ser acessados a partir de outros
computadores por intermédio de mecanismos de
comunicação.
Host intranet WAP
Home intranet
Wireless LAN gateway O termo servidor se refere a um programa em
execução (processo) em um computador interligado
Mobile em rede, que aceita pedidos de programas em
Printer
phone execução em outros computadores (clientes) para
Laptop
Camera Host site efetuar um serviço e responder adequadamente.

Desafios para os Sistemas Distribuídos Segurança

Heterogeneidade Muitos recursos de informação que se tornam


disponíveis e são mantidos em sistemas distribuídos
Sistemas abertos tem um alto valor intrínseco para seus usuários,
sendo sua segurança de vital importância
Segurança A segurança de recursos de informação tem três
componentes
Escalabilidade
Confidencialidade
⌧Proteção contra exposição para pessoas não autorizadas
Tratamento de falhas Integridade
⌧Proteção contra alteração ou dano
Concorrência Disponibilidade
⌧Proteção contra interferência com os meios de acesso aos recursos
Transparência
Escalabilidade Escalabilidade

Computadores (com Endereços IP registrados) na Internet


Um sistema é descrito como escalável se
permanece eficiente quando há um aumento
significativo no número de recursos e no número de Date Computers Web servers
usuários.
1979, Dec. 188 0
1989, July 130,000 0
O projeto de sistemas distribuídos escaláveis 1999, July 56,218,000 5,560,866
apresenta os seguintes desafios: 2003, Jan. 171,638,297 35,424,956
Controlar o custo dos recurso físicos;
Controlar a perda de desempenho;
Impedir que os recursos de software se esgotem;
Evitar gargalos de desempenho;

Tratamento de Falhas Desafios para os Sistemas Distribuídos

As falhas em um sistema distribuído são parciais. Heterogeneidade


Alguns componentes falham, enquanto outros
Sistemas abertos
continuam funcionando. Isto torna o tratamento de
falhas particularmente difícil. Segurança

Escalabilidade
Detecção de falhas
Tolerância a falhas Tratamento de falhas
Recuperação de falhas
Redundância Concorrência

Transparência

Transparência Modelo de Arquitetura de Sistemas Distribuídos


 Transparência de Acesso
 Permite que recursos locais e remotos sejam acessados com o uso de operações idênticas.
 Transparência de Localização  O modelo de arquitetura de um sistema distribuído

 Permite que os recursos sejam acessados sem o conhecimento de sua localização física ou na rede.
Transparência de Concorrência
primeiramente simplifica e abstrai as funções dos
 Permite que vários processos operem concorrentemente, usando recursos compartilhados sem componentes individuais de um sistema distribuído e,
interferência entre eles.
 Transparência de Replicação
em seguida, considera:
 Permite que várias instâncias dos recursos sejam usadas para aumentar a confiabilidade e o
desempenho, sem conhecimento das réplicas por parte dos usuários ou programadores
 Transparência de Falhas O posicionamento dos componentes em uma rede de
 Permite ocultação de falhas, possibilitando que usuários e programas aplicativos concluam suas
tarefas, a despeito da falha de componentes de hardware ou software.
computadores, buscando definir padrões para distribuição de
 Transparência de Mobilidade
dados e da carga de trabalho;
 Permite a movimentação de recursos e clientes dentro de um sistema, sem afetar a operação de
usuários ou programas.
 Transparência de Desempenho Os inter-relacionamentos entre os componentes, isto é, seus
 Permite que o sistema seja reconfigurado para melhorar o desempenho à medida que as cargas papéis funcionais e os padrões de comunicação entre eles.
variam.
 Transparência de Escalabilidade
 Permite que o sistema e os aplicativos se expandam em escala, sem alterar a estrutura do sistema ou
os algoritmos de aplicativo.
Modelo de Arquitetura de Sistemas Distribuídos Camadas de Software

Classificação de processos: Arquitetura de Software:


Processos servidores;
Processos clientes; Estruturação do software em camadas ou módulos em
Processos peer-to-peer; um único computador (sistemas operacionais);
⌧Contribuição simétrica

Serviços oferecidos e solicitados entre processos


Identifica as responsabilidades de cada processo: localizados em um mesmo computador ou em
Carga de trabalho; computadores diferentes (camadas de serviços);
Impacto de falhas;

Camadas de Software Arquitetura de Sistema


Modelo de Arquitetura de Sistemas Distribuídos

Applications, services Cliente-Servidor:

Middleware Processos clientes interagem com processos


servidores, localizados em computadores distintos.
Operating system Servidores podem ser clientes de outros servidores
Platform Mecanismos de busca
⌧Respondem às consultas dos clientes
Computer and network hardware
⌧Executam web crawlers (spiders) que atuam como clientes de outros
servidores web.
Middleware
Camada de software cujo objetivo é mascarar a heterogeneidade e
fornecer uma modelo de programação conveniente para os
programadores de aplicativos

Arquitetura de Sistema Arquitetura de Sistema


Modelo de Arquitetura de Sistemas Distribuídos Modelo de Arquitetura de Sistemas Distribuídos

Cliente-Servidor: Processos Peer

Todos os processos envolvidos em uma tarefa


Client invocation Server desempenham funções semelhantes
invocation
Interagem cooperativamente como pares (peer), sem
result result distinção entre processos servidores e processos clientes.
Server
⌧ Napster
⌧ Bit Torrent
⌧ JXTA (juxtapose)
Client
Key: • É uma especificação independente de linguagem e plataforma para
Process: Computer: a peer-to-peer, numa comunicação entre dispositivos sem considerar sua
localização física e tecnologia de rede no qual se encontram instalados.
Arquitetura de Sistema
Modelo de Arquitetura de Sistemas Distribuídos Variação de Arquitetura de Sistema
Processos Peer Peer 2
Modelo de Arquitetura de Sistemas Distribuídos
Peer 1
Application
Dos fatores abaixo podem surgir outros modelos:
Application
Uso de vários servidores e de caches para aumentar o
Peer 3
Sharable
objects desempenho e resiliência;
Application
Uso de código móvel e agentes móveis
Necessidade de usuários possuírem computadores de
baixo custo, com recursos de hardware limitados e
simples de gerenciar
Requisito de adicionar e remover dispositivos móveis de
Peer 4

Application maneira conveniente


Peers 5 .... N

Variação de Arquitetura de Sistema Variação de Arquitetura de Sistema


Serviços Oferecidos por Vários Servidores Servidores Proxies ou Caches
Service  Uma cache consiste em realizar uma armazenamento de objetos de
dados recentemente usados em um local mais próximo que a origem real
dos objetos em si.
Server  As caches podem ser mantidas no próprio cliente (navegadores) ou
localizadas em um servidor proxy que possa ser compartilhado por eles.
Client

Server Client Web


server
Proxy
server
Client
Server
Client Web
server

Variação de Arquitetura de Sistema Variação de Arquitetura de Sistema


Códigos Móveis Códigos Móveis

O código que o cliente deseja executar é transferido a) client request results in the downloading of applet code
para a máquina do cliente e executado localmente.
Applet; Client Web
Applet code server
Após o download do código, não existe atraso na
execução do aplicativo. b) client interacts with the applet

É uma ameaça potencial à segurança do Web


Client Applet
computador destino. server
Variação de Arquitetura de Sistema Variação de Arquitetura de Sistema
Agentes Móveis Clientes Leves
 Se refere a uma camada de software, em um computador local, que
É um programa em execução (códigos + dados) que oferece ao usuário uma interface baseada em janelas para que este
passa de um computador para outro em um possa executar programas aplicativos em computadores remotos.
ambiente de rede, realizando uma tarefa e
 O código do aplicativo é executado em um servidor de computação
retornando com os resultados. (vários processadores).
Instalar e manter softwares em um rede; Janelas X11: processo servidor de janelas
Comparar preços em diversos fornecedores;
Compute server
Network computer or PC
São ameaças à segurança para os recursos
existentes nos computadores que visitam Thin network Application
Client Process

Modelos Fundamentais Modelos Fundamentais

 Um modelo contém apenas os ingredientes essenciais que  Os aspectos dos sistemas distribuídos que desejamos
precisamos considerar para entender e raciocinar a respeito considerar nos modelos fundamentais são:
Interação:
de certos aspectos do comportamento de um sistema. ⌧Processos interagem enviando mensagens uns aos outros resultando na
Quais são as principais entidades presentes no sistema? comunicação e na coordenação entre eles.
⌧O modelo de interação deve refletir o fato de que a comunicação ocorre com
Como elas interagem? atrasos que, frequentemente, têm duração considerável;
Quais são as características que afetam seu comportamento individual
e coletivo? Falhas:
⌧O modelo de falhas define e classifica as falhas;
⌧Projetar sistemas capazes de tolerar certos tipos de falhas e continuar
funcionando corretamente;
 O objetivo de um modelo é:
Tornar explícita todas as suposições relevantes sobre os sistemas que Segurança:
se está modelando; ⌧O Modelo de Segurança define e classifica as formas com que ataques à
segurança do sistemas pode assumir;
Fazer generalizações a respeito do que é possível ou impossível, ⌧Analisa as possíveis ameaças e guia para o desenvolvimento de sistemas
dadas essas suposições; capazes de resistir a eles;

Modelos Fundamentais Modelos Fundamentais


Modelo de Interação Modelo de Interação
send receive receive
 Dois fatores afetam significativamente a interação de
X
processos em sistemas distribuídos: 1 m1 4
m2
O desempenho da comunicação, que é uma fator limitante; send
2 3 receive Physical
A impossibilidade de manter uma noção global de tempo única; Y
time
receive

 Duas variantes no modelo de interação: Z


send

Sistemas Distribuídos Síncronos; receive receive

Sistemas Distribuídos Assíncronos;


m3 m1 m2
A
 Ordenação de eventos: t1 t2
receive receive receive
t3
Em muitos casos, é importante saber se um evento ocorreu em um
Os relógios dos computadores podem ser sincronizados se as mensagens
processo antes, depois ou simultaneamente com outro evento em outro
pudessem enviar o valor do relógio local do computador de origem da
processo;;
mensagem.
Modelos Fundamentais Modelos Fundamentais
Modelo de Falhas por Omissão e Arbitrárias Modelo de Falhas de Temporização

Tipos de falhas Afeta Descrição


Parada por falha Processo O processo para e permanece parado. Outros processos
podem detectar esse estado. Classe de falhas Afeta Descrição
Relógio Processo O relógio local do processo ultrapassa os limites de
Colapso Processo O processo para e permanece parado. Outros processos sua taxa de desvio em relação ao tempo físico.
podem não detectar esse estado. Desempenho Processo O processo ultrapassa o limite de tempo entre
Omissão Canal Uma mensagem inserida em um buffer de envio nunca duas etapas.
chega no buffer de recepção do destinatário. Desempenho Canal A transmissão de uma mensagem demora mais
do que o limite definido.
Omissão de Processo Um processo conclui o envio, mas a mensagem não é
envio colocada em seu buffer de envio.
Omissão de Processo Uma mensagem é colocada no buffer de recepção de
recepção Um processo, mas esse processo não recebe a mensagem.
O processo/canal exibe comportamento arbitrário: ele pode
Arbitrária Processo enviar/transmitir mensagens arbritárias em qualquer momento, cometer
(Bizantina) ou canal omissões; um processo pode parar ou realizar uma ação incorreta.

Modelos Fundamentais Modelos Fundamentais


Modelo de Segurança Modelo de Segurança

Direitos de acesso especificam quem pode executar Access rights Object


determinadas operações sobre um objeto. invocation
Quem pode ler ou gravar em seus atributos.
Client
result Server
Os usuários devem ser incluídos no modelo de
segurança como beneficiários dos direitos de
acesso. Principal (user) Network Principal (server)

Modelos Fundamentais Modelos Fundamentais


Modelo de Segurança Modelo de Segurança

 No modelo um invasor poderá ser capaz de enviar Copy ofm


qualquer mensagem para qualquer processo e ler ou
copiar qualquer mensagem entre dois processos. The enemy
m’
Processp m Processq
 Processos interagem trocando mensagens que ficam Communication channel
expostas ao ataque.

 Servidores e processos peer-to-peer publicam suas  A criptografia moderna é baseada em algoritmos que utilizam
chaves secretas para transformar os dados de uma maneira que
interfaces, permitindo que invocações sejam enviadas a
só podem ser revertidos com o conhecimento da chave de
eles por qualquer outro processo. decifração correspondente;
Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos
Comunicação Síncrona
 A passagem de mensagens entre um par de processos
pode ser suportada por duas operações de  Os processos remetente e destino são sincronizados a
comunicação de mensagem: cada mensagem
 send;
 receive;  Send e Receive causam bloqueio.

 Processos remetentes fazem as mensagens serem  Quando um envio é feito, o processo remetente é
adicionadas em filas remotas;
bloqueado até que a recepção correspondente seja
realizada.
 Processos destino removem mensagens de suas filas
locais;
 Quando uma recepção é executada, o processo é
 A comunicação pode ser síncrona ou assíncrona: bloqueado enquanto a mensagem não chegar.

Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos


Comunicação Assíncrona Comunicação Assíncrona

 O uso da operação send é não bloqueante. Assim o  Receive não-bloqueante:


processo remetente pode prosseguir sua execução após O processo destino prossegue sua execução após
a mensagem ter sido copiada para o buffer de envio ter realizado a operação receive, a qual fornece um
local. buffer para ser preenchido em background.

 A transmissão da mensagem ocorre em paralelo com a O processo deve receber separadamente uma
execução do processo remetente. notificação de que seu buffer possui dados.

 O processo receive pode ter variantes com e sem


bloqueio.

API para Protocolos Internet Soquetes

 Destino de mensagem:  As duas forma de comunicação (UDP e TCP) usam a


 Endereço IP e porta local; abstração de soquete que é usada para comunicação
 Qual a quantidade de portas disponíveis? entre processos.

 Confiabilidade:  Os soquetes são originários do UNIX BSD, mas estão


 Garantir que mensagens forem entregues; presentes na maioria das versões do UNIX, incluindo o
 Qual protocolo utilizar? UDP ou TCP?
Linux, e também no Windows e Macintosh OS.

 Ordenamento:  A comunicação entre processos consiste em transmitir


uma mensagem entre um soquete de um processo e um
Aplicações exigem que mensagens sejam entregues na
soquete de outro processo;
ordem de emissão.
Soquetes Soquetes

 Para que um processo receba mensagens, seu soquete


deve estar vinculado a uma porta local e a um dos
endereços IP do computador em que é executado.
any port agreed port
socket socket

message  Os processos podem usar o mesmo soquete para enviar


client server e receber mensagens.
other ports
Internet address = 138.37.94.248 Internet address = 138.37.88.249
 Cada computador possui 216 portas disponíveis.

 Processos não podem compartilhar portas no mesmo


computador. Processos multicast são exceções.

Soquetes - UDP Modelos de Falhas para UDP

 UDP  Falhas por Omissão:


O datagrama é enviado sem a confirmação de leitura. Mensagens podem ser descartadas por erros na transmissão ou
Se ocorrer uma falha a mensagem poderá não chegar. devido o buffer de origem ou destino estar cheio
Implementações sobre o UDP: ⌧Falhas por omissão de canal
Ordenamento
⌧Mensagens podem ser entregues em uma ordem diferente da que foram
emitidas

 Os aplicativos devem fazer o seu próprio controle para


DNS garantir qualidade de comunicação confiável
DHCP Enviar um número de ordem associada a cada mensagem
enviada.

VoiP

Soquete UDP em Java - Cliente Soquete UDP em Java - Servidor


import java.net.*;
import java.net.*;
import java.io.*;
import java.io.*;
public class UDPClient {
public class UDPServer {
public static void main(String[] args) {
public static void main(String[] args) {
DatagramSocket aSocket = null;
DatagramSocket aSocket = null;
try {
try {
aSocket = new DatagramSocket();
aSocket = new DatagramSocket(6789);
byte[] m = args[0].getBytes( );
byte[] buffer = new byte[1000];
InetAddress aHost = InetAddress.getByName(args[1]);
while( true ) {
//InetAddress aHost = newInetAddres("10.16.2.198");
DatagramPacket request = new DatagramPacket( buffer, buffer.length );
aSocket.receive( request );
int serverPort = 6789;
DatagramPacket reply = new DatagramPacket( request.getData(), request.getLength()+11,
DatagramPacket request = new DatagramPacket( m, args[0].length(), aHost, serverPort ); request.getAddress( ), request.getPort());
aSocket.send(request); aSocket.send(reply);
byte[] buffer = new byte[1000]; System.out.println("Mensagem retornada");
DatagramPacket reply = new DatagramPacket( buffer, buffer.length); }
aSocket.receive(reply); }
System.out.println("Reply: " + new String(reply.getData())); catch( SocketException e ) {
} System.out.println("Socket: " + e.getMessage());
catch( SocketException e ) { }
System.out.println("Socket: " + e.getMessage()); catch( IOException e ) {
} System.out.println("IO: " + e.getMessage());
catch( IOException e ) { }
System.out.println("IO: " + e.getMessage()); finally {
} if( aSocket != null) aSocket.close();
finally { }
if( aSocket != null) aSocket.close(); }
} }
}
}
Soquetes - TCP Soquetes - TCP

 Fornece a abstração de um fluxo de bytes no qual  Controle de Fluxo:


dados podem ser lidos (receive) e escritos (send).  O protocolo TCP tenta combinar a velocidade dos
Tamanho das mensagens: processos que lêem e escrevem em um fluxo;
⌧O aplicativo escolhe o volume de dados a ser enviado ou recebido em  Se o processo que escreve for rápido demais para o que
um fluxo; lê, entre ele será bloqueado até que o leitor tenha
consumido dados suficientes para o desbloqueio.
Mensagens perdidas:
⌧Usa um esquema de confirmação. Caso não receba a confirmação em  Duplicação e ordenamento de mensagens
um determinado tempo, a mensagem é enviada novamente.
 Identificadores são associados a cada datagrama IP.
 Permite detectar e rejeitar duplicações e ordenar
mensagens

Soquetes - TCP Soquetes - TCP

 Destinos de mensagens:  Modelo de falhas:


Dois processos estabelecem uma comunicação, antes de Fluxo TCP usam somas de verificação para detectar e
poderem enviar mensagens um para o outro, através de rejeitar pacotes corrompidos
um fluxo. Número de sequência para detectar e rejeitar pacotes
duplicados
Uma vez estabelecida a comunicação, os processos lêem Usam timeout e retransmissões para tratar pacotes
ou escrevem no fluxo, sem a necessidade de utilizar perdidos
endereços IP e portas. Caso tenha problema no canal, após timeout a conexão
será desfeita
⌧Não garante a entrega de mensagens em todas as dificuldades
apresentadas

Soquetes - TCP Emprego do TCP (Exemplos)


HTTP SMTP
 Modelo de falhas:
 Os processos que estão usando a conexão não poderão
distinguir entre falha de rede e falha no processo
destino;

 Os processos que estão se comunicando não poderão


identificar se as mensagens que enviaram
recentemente foram ou não recebidas; SSH
⌧ Pode ocasionar duplicação de dados;
FTP
Comunicação Cliente-Servidor Comunicação Cliente-Servidor

 É projetada para suportar as funções e trocas de  Normalmente utiliza UDP.


mensagem em interações cliente-servidor. As confirmações são redundantes, pois as requisições
são seguidas de respostas;
O estabelecimento de uma conexão envolve mensagens
 No caso mais comum, a comunicação requisição e
extras, além do par exigido para a requisição e sua
resposta é síncrona. resposta;
O processo cliente bloqueia até que a resposta do servidor O controle de fluxo é redundante para a maioria das
chegue. invocações, que passam apenas pequenos argumentos e
resultados;
 Confiável, pois a resposta do servidor indica que a
mensagem chegou ao servidor.

Comunicação Comunicação
Comunicação Cliente-Servidor Requisição-Resposta Comunicação Cliente-Servidor Requisição-Resposta

 É baseado em três primitivas:


 public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments)
doOperation
Envia uma mensagem de requisição para um objeto remoto e retorna a
getRequest resposta.
sendReply Os argumentos especificam o objeto remoto, o método a ser invocado e os
argumentos desse método.
Client Server

 public byte[] getRequest ();


Request Lê uma requisição de cliente por meio da porta de servidor.
doOperation
message getRequest
select object
 public void sendReply (byte[] reply, InetAddress clientHost, int clientPort);
(wait) execute
Reply method Envia a mensagem de resposta para o cliente em seu endereço IP e porta,
message sendReply respectivamente.
(continuation)

Comunicação Cliente-Servidor Comunicação Cliente-Servidor

 Identificadores de mensagem:
Timeout
Identificador de requisição:
Utilizado para limitar a espera de uma mensagem de
⌧Criado pelo processo remetente a partir de uma sequência ascendentes
de valores inteiros
resposta do servidor;
Identificador do processo remetente:
⌧Porta e endereço IP Retorna imediatamente de doOperation, indicando que
este método falhou ao tentar receber resposta do servidor;
⌧Timeout atingido devido a perda da mensagem de requisição ou da
 Modelo de falhas resposta.
Sofreram as falhas relacionadas ao protocolo que
utilizam; Para compensar a possibilidade de perdas de
UDP mensagens, doOperation envia a mensagem de
⌧Falhas por omissão.
requisição repetidas vezes até estar seguro que o servidor
⌧Não haverá garantia da ordem de entrega das mensagens.
está fora de operação (sem resposta);
⌧Falhas de processos
• Colapso
Comunicação Cliente-Servidor Comunicação Cliente-Servidor RPC

 Descartar mensagens de requisição duplicadas  Chamada de Procedimentos Remota;


O protocolo deve ser projetado para reconhecer
sucessivas requisições do mesmo cliente, que utilizem o
mesmo identificador de requisição, e filtrar as que forem  Permite que processos e threads invoquem
duplicadas. procedimentos ou funções localizadas em sites remotos;

 Histórico  A busca é realizada como se estivesse localmente


Para servidores que exigem retransmissão das respostas (oculta a complexidade);
sem executar novamente as operações.
Deverá ser uma estrutura que contém um registro das  É uma forma simples e elegante de realizar
mensagens que foram transmitidas. comunicação remota entre cliente e servidor;

Comunicação Cliente-Servidor RPC Comunicação Cliente-Servidor RPC

 Protocolo de Transporte utilizado: TCP ou UDP; 1ª) O procedimento remoto chama o stub cliente da forma
normal, isto é, como se fosse um procedimento local
qualquer;
 A finalidade é fazer com que um procedimento remoto
se pareça o máximo possível com uma chamada local;

 Para isso é criado um representante local, tanto no


cliente quanto no servidor, denominado STUB;

Comunicação Cliente-Servidor RPC Comunicação Cliente-Servidor RPC

2ª) O stub cliente constrói a mensagem e passa ao kernel; 4ª) O kernel remoto entrega a mensagem ao stub servidor;
Comunicação Cliente-Servidor RPC Comunicação Cliente-Servidor RPC

5ª) O stub servidor desempacota os parâmetros e chama o


servidor local; 6ª) O servidor realiza o trabalho solicitado e envia o resultado
ao stub servidor;

Comunicação em Grupo Comunicação em Grupo

A troca de mensagens aos pares não é o melhor  Tolerância à falhas


modelo de comunicação de um processo com um Um serviço replicado consiste em um grupo de servidores.
grupo de outros processos.
 Localização de servidores de descoberta na interligação
Emprega-se a difusão seletiva (multicast), que é uma de rede espontânea;
operação que permite o envio de uma única
mensagem para cada um dos membros de um grupo
 Melhor desempenho através da replicação de dados;
de processos.
Membro participantes do grupo ficam totalmente
transparentes para o remetente  Propagação de notificações de eventos;
E-mail para uma lista de um grupo.

Tarefa Prática I Tarefa Prática I

OBJETIVO: FORMATO:
Desenvolver um applet que forneça um serviço para um Cada equipe terá no máximo 15 min para expor o seu
usuário através de uma página html; applet;
A implementação deverá ser entregue seguindo o modelo
EQUIPE: de publicação dos artigos da SBC;
Até 03 pessoas;
Todas as equipes deverão apresentar um applet diferente
da outra equipe, ou seja, não serão aceitos trabalhos com
o mesmo código;

ENTREGA:
Aula do dia 21/09/10.

Vous aimerez peut-être aussi