Desenvolvimento de Aplicações Distribuídas

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Distribuídos Baseados na Web
Aplicações Distribuídas
Sistemas Distribuídos
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Comunicação entre processos distribuídos
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
RMI-IIOP.
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Comunicação Distribuída
Sistemas Distribuídos Walfredo Cirne & Fubica Brasileiro Aula 3:Conceitos Básicos As figuras que.
Sistemas Distribuídos Walfredo Cirne & Fubica Brasileiro
Invocação de Métodos Remotos RMI
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Comunicação Inter-Processos
Área de Desenvolvimento de Sistemas
Objetos Distribuídos Padrão CORBA
DAS Sistemas Distribuídos para Automação Industrial
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Sistemas Distribuídos
Introdução à Programação Distribuída em Java
Middleware e Sistemas Distribuídos
Aula 9 - Camada de aplicação
Arquitetura CORBA e Objetos Distribuídos
Web Services Uninorte Semana de Tecnologia da Informação
Chamada Remota de Procedimentos
Marcela Bezerra da Silva Cin - UFPE
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
Mole: Um Sistema de Agentes Móveis Baseado em Java Curso de Ciência da Computação Departamento de Informática Disciplina de Tópicos Especiais em Computação.
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
Sistemas Distribuídos
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
TMV Gestão de Redes e de Sistemas Distribuídos ???? Sumário  Arquitectura de Gestão SNMP  Arquitectura de Gestão OSI/TMN  Novas Arquitecturas.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
RMI x C# Remote Emilena Specht – 1113/01/9 2004/01
CORBA Apresentação do Padrão CORBA Maurício Maron Mendes Ramiro Pereira de Magalhães
Java RMI João Gabriel (jggxm).
RMI - JAVA.
RPC and Web Service André Pereira.
Comunicação.
Padrões de Interação com o Usuário
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Socket em Java.
Java – Remote Method Invocation (RMI)
Tecnologias de Localização de Serviços Exame de Qualificação IME/USP Fev/2003.
Sistemas Distribuídos
Infra-Estrutura para Computação Distribuída
FORMI Integrating Adaptive Fragments Objects into Java RMI Kapitza, Rüdiger; Domaschka, Jörg; Hauck, Franz J.; Reiser, Hans P. ;Schmidt, Holger. IEEE Distributed.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
Capítulo 6: SAD – Arquitetura e aspectos de rede e segurança
A Multilayer P2P Framework for Distributed Synchronous Collaboration Fernando Abrahão Afonso Leonardo Kunz Programação com Objetos Distribuídos Trabalho.
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Principais conceitos de CORBA.
Sistemas Distribuídos Prof. Marcus Rodrigues
Protocolos de Comunicação e Passagem de Mensagens
Redes de Computadores e Aplicações – Camada de aplicação IGOR ALVES.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Desenvolvimento de Aplicações Distribuídas Walfredo Cirne Universidade Federal de Campina Grande http://walfredo.dsc.ufcg.edu.br

Roteiro Conceitos e características Arquiteturas Modelos de programação Problemas

O que é uma Aplicação Distribuída? Uma aplicação que executa simultaneamente em várias máquinas Um grupo de processos que executa em máquinas distintas e trabalha de forma coordenada e cooperativa para realizar uma determinada tarefa aplicação centralizada máquina 1 aplicação distribuída máquina 2 máquina n . . .

Exemplo: Web

Por que Aplicações Distribuídas? Quando o problema é distribuído Dados e usuários distribuídos O computador como meio de comunicação Tolerância a falhas Melhor desempenho via paralelismo Melhor aproveitamento do hardware

É só para Software Básico? Não!!! Acesso ao banco de dados remoto Sistemas que rodam em várias localidades Comunicação com fornecedores, parceiros e governo Applet se comunicando com um servlet

Roteiro Conceitos e características Arquiteturas Cliente-servidor Várias camadas Peer-to-peer Híbridas Modelos de programação Problemas

Cliente-Servidor

Aplicações em Várias Camadas Browser Web Servidor Web Servidor BD

Peer-to-Peer

Modelos Híbridos (Exemplo: Email) Mail Transfer Agent User Agent

Roteiro Conceitos e características Arquiteturas Modelos de programação Acesso remoto ao Banco de Dados Objetos distribuídos Invocação de métodos remotos Troca de mensagens Problemas

Acesso Remoto ao Banco de Dados A forma mais simples de se construir uma aplicação distribuída Separação entre o cliente e o servidor é natural Não 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 aplicação distribuída

Objetos Distribuídos Objetivos Poder interagir com um objeto localizado em uma máquina remota como se ele fosse local Poder construir um objeto em uma máquina e transmiti-lo para outra Sistema de Suporte a Objetos Distribuídos (SSOD) Java RMI CORBA DCOM

Endereços e Portas Cada máquina na Internet possuí um endereço IP único 150.165.98.38 = minha máquina Os processos que rodam em uma dada máquina são endereçados 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

Gerente de objetos e Serviço de nomes (rmiregistry) Arquitetura Java RMI Servidor de Objetos 1. cria e registra objeto objeto Gerente de objetos e Serviço de nomes (rmiregistry) skeleton criados pelo compilador de stubs (rmic) 3. retorna referência 4. comunicação stub cliente 2. requisita objeto Cliente

Componentes de um SSOD Mecanismo para especificação das interfaces dos objetos e geração de skeletons e stubs IDL, Java, COM Language, etc. Gerente de objetos ORB, Registry Service Serviço de Nomes bind, lookup Protocolo de comunicação entre objetos remotos

RMI  CORBA O fato do RMI ser baseado em Java trás todos os benefícios da linguagem Java Integração Java + RMI é muito mais “limpa” Independência de plataforma O RMI é mais fácil de ser dominado, CORBA tem um grande número de interfaces e detalhes que dificultam o domínio

RMI  CORBA RMI é totalmente baseado em Java, dificultado a integração com código escrito em outra linguagem A única forma de realizar essa integração é através do uso de uma interface de código nativo Java CORBA foi desenvolvido para ser independente de linguagem As interfaces dos objetos são especificadas em uma linguagem independente de linguagem de programação A descrição da interface pode ser compilada para qualquer linguagem de programação

Invocação de Procedimentos Remotos Permite a chamada a procedimentos que executam em uma máquina remota Parecido com objetos distribuídos Só que para linguagens que não suportam orientação a objetos Comumente chamado de RPC

Troca de Mensagens Processos que compõem a aplicação distribuída podem também se comunicar pela troca de mensagens Nível de abstração mais baixo que outras formas de desenvolver aplicações distribuídas Base de implementação de vários protocolos importantes (ex: HTTP, SMTP)

Estabelecendo a Conexão Servidor “escutando” por conexões 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 SimpleServer 1. Read Command 2. Send Result <command> <response> Protocolo GET <arg> POST <arg> DONE Servidor Cliente

Roteiro Conceitos e características Arquiteturas Modelos de programação Problemas Novos modos de falha Testes difíceis Firewalls e endereços privados

Novos Modos de Falhas Em uma aplicação distribuída, parte da aplicação pode falhar Software tem que lidar com novas exceções Há situações em que se quer fazer progresso mesmo com falhas Mas como garantir a reintegração dos componentes que falharam, uma vez que estes tenham sido consertados

Tolerância a Falhas Um sistema distribuído tem mais componentes que um sistema centralizado Se a quebra de qualquer componente derruba o sistema, a disponibilidade será ruim em um sistema distribuído Há técnicas de replicação para resolver isso, mas raramente são usadas Problema resolvido para redes locais Mas tem um custo

Testes Difíceis Testes automáticos tem se mostrado fundamentais para produção de software de boa qualidade Se você estiver interessado sobre o assunto, veja minha palestra sobre XP Em uma aplicação distribuída: Como montar o cenário para o teste de forma automática? Como lidar com o não-determinismo intrínseco da distribuição?

Firewalls e Endereços Privados Firewalls e endereços privados impedem a comunicação fim-a-fim sem gateways a nível de aplicação A Internet está ficando mais complicada Firewall + NAT IP privado Servidor

Extra: Exemplos do Estado-da-Arte Consistent Hashing Distributed Data Structures Os créditos vão para meus alunos de Aplicações Distribuídas Obrigado!!!