Você está na página 1de 30

Desenvolvimento de Aplicaes Distribudas

Walfredo Cirne
Universidade Federal de Campina Grande http://walfredo.dsc.ufcg.edu.br

Roteiro
Conceitos e caractersticas Arquiteturas Modelos de programao Problemas

O que uma Aplicao Distribuda?


Uma aplicao que executa simultaneamente em vrias mquinas Um grupo de processos que executa em mquinas distintas e trabalha de forma coordenada e cooperativa para realizar uma determinada tarefa
aplicao centralizada aplicao distribuda

...
mquina 1 mquina 1 mquina 2 mquina n

Exemplo: Web

Requisio HTTP Browser Resposta requisio HTTP Servidor Web

Por que Aplicaes Distribudas?


Quando o problema distribudo
Dados e usurios distribudos O computador como meio de comunicao

Tolerncia a falhas Melhor desempenho via paralelismo Melhor aproveitamento do hardware

s para Software Bsico?


No!!! Acesso ao banco de dados remoto Sistemas que rodam em vrias localidades Comunicao com fornecedores, parceiros e governo Applet se comunicando com um servlet

Roteiro
Conceitos e caractersticas Arquiteturas
Cliente-servidor Vrias camadas Peer-to-peer Hbridas

Modelos de programao Problemas

Cliente-Servidor

Requisio Cliente Resposta requisio Servidor

Aplicaes em Vrias Camadas


Browser Web

Servidor Web

Servidor BD

Peer-to-Peer

Modelos Hbridos
(Exemplo: Email)

Mail Transfer Agent User Agent

Roteiro
Conceitos e caractersticas Arquiteturas Modelos de programao
Acesso remoto ao Banco de Dados Objetos distribudos Invocao de mtodos remotos Troca de mensagens

Problemas

Acesso Remoto ao Banco de Dados


A forma mais simples de se construir uma aplicao distribuda
Separao entre o cliente e o servidor natural No se implementa o servidor

Por exemplo, em Delphi, ao instanciar TDataBase setando os atributos para referenciar um Banco de Dados remoto, est se criando uma aplicao distribuda

Objetos Distribudos
Objetivos
Poder interagir com um objeto localizado em uma mquina remota como se ele fosse local Poder construir um objeto em uma mquina e transmiti-lo para outra

Sistema de Suporte a Objetos Distribudos (SSOD)


Java RMI CORBA DCOM

Endereos e Portas
Cada mquina na Internet possu um endereo IP nico
150.165.98.38 = minha mquina

Os processos que rodam em uma dada mquina so endereados por portas


80 = web 25 = email

Pequeno Exemplo RMI


Interface Servidor Cliente
rmic Aritmetica.class gera: Aritmetica_Stub.class Aritmetica_Skel.class

Objetos precisam ser Serializable para poderem ser transferidos

Arquitetura Java RMI


Servidor de Objetos 1. cria e registra objeto objeto

Gerente de objetos e Servio de nomes (rmiregistry)

skeleton 3. retorna referncia 4. comunicao stub cliente

criados pelo compilador de stubs (rmic)

2. requisita objeto Cliente

Componentes de um SSOD
Mecanismo para especificao das interfaces dos objetos e gerao de skeletons e stubs
IDL, Java, COM Language, etc.

Gerente de objetos
ORB, Registry Service

Servio de Nomes
bind, lookup

Protocolo de comunicao entre objetos remotos

RMI v CORBA
O fato do RMI ser baseado em Java trs todos os benefcios da linguagem Java
Integrao Java + RMI muito mais limpa Independncia de plataforma

O RMI mais fcil de ser dominado, CORBA tem um grande nmero de interfaces e detalhes que dificultam o domnio

RMI v CORBA
RMI totalmente baseado em Java, dificultado a integrao com cdigo escrito em outra linguagem
A nica forma de realizar essa integrao atravs do uso de uma interface de cdigo nativo Java

CORBA foi desenvolvido para ser independente de linguagem


As interfaces dos objetos so especificadas em uma linguagem independente de linguagem de programao A descrio da interface pode ser compilada para qualquer linguagem de programao

Invocao de Procedimentos Remotos


Permite a chamada a procedimentos que executam em uma mquina remota
Parecido com objetos distribudos S que para linguagens que no suportam orientao a objetos

Comumente chamado de RPC

Troca de Mensagens
Processos que compem a aplicao distribuda podem tambm se comunicar pela troca de mensagens Nvel de abstrao mais baixo que outras formas de desenvolver aplicaes distribudas Base de implementao de vrios protocolos importantes (ex: HTTP, SMTP)

Estabelecendo a Conexo
Servidor escutando por conexes na porta 5000:
ServerSocket s = new ServerSocket(5000); while (true) { Socket clientConn = s.accept(); InputStream in = clientConn.getInputStream(); OutputStream out = clientConn.getOutputStream(); }

Cliente:
InetAddress addr = InetAddress.getByName(anjinho.dsc.ufpb.br); Socket s = new Socket(addr, 5000); InputStream in = s.getInputStream(); OutputStream in = s.getOutputStream();

Exemplo de Troca de Mensagem


SimpleClient 1. Send Command 2. Read Response

<command>

SimpleServer 1. Read Command

<response>

2. Send Result

Protocolo
GET <arg> POST <arg> DONE

Servidor Cliente

Roteiro
Conceitos e caractersticas Arquiteturas Modelos de programao Problemas
Novos modos de falha Testes difceis Firewalls e endereos privados

Novos Modos de Falhas


Em uma aplicao distribuda, parte da aplicao pode falhar
Software tem que lidar com novas excees

H situaes em que se quer fazer progresso mesmo com falhas


Mas como garantir a reintegrao dos componentes que falharam, uma vez que estes tenham sido consertados

Tolerncia a Falhas
Um sistema distribudo tem mais componentes que um sistema centralizado Se a quebra de qualquer componente derruba o sistema, a disponibilidade ser ruim em um sistema distribudo H tcnicas de replicao para resolver isso, mas raramente so usadas
Problema resolvido para redes locais Mas tem um custo

Testes Difceis
Testes automticos tem se mostrado fundamentais para produo de software de boa qualidade
Se voc estiver interessado sobre o assunto, veja minha palestra sobre XP

Em uma aplicao distribuda:


Como montar o cenrio para o teste de forma automtica? Como lidar com o no-determinismo intrnseco da distribuio?

Firewalls e Endereos Privados


Firewalls e endereos privados impedem a comunicao fim-a-fim sem gateways a nvel de aplicao
Servidor Firewall + NAT IP privado

A Internet est ficando mais complicada

Extra: Exemplos do Estado-da-Arte


Consistent Hashing Distributed Data Structures Os crditos vo para meus alunos de Aplicaes Distribudas Obrigado!!!

Você também pode gostar