Sistemas Distribuídos



Documentos relacionados
Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Sistemas Distribuídos

Aula 03-04: Modelos de Sistemas Distribuídos

Componentes para Computação Distribuída

Sistemas Distribuídos

Arquiteturas de Sistemas Distribuídos

CORBA. Common Object Request Broker Architecture. Unicamp. Centro de Computação Rubens Queiroz de Almeida

Sistemas Distribuídos Arquiteturas Middlewares

Camadas de Software - o Middleware. Sistemas Distribuídos Capítulo 2: Modelos e Arquitecturas. Aplicações. Middleware.

INE Sistemas Distribuídos


Projetar Arquitetura

Adriano Reine Bueno Rafael Barros Silva

SISTEMAS DISTRIBUIDOS

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

2. Conceitos e Arquitetura de Bancos de Dados

Introdução a Web Services

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Serviços Web: Introdução

Web Services. (Introdução)

Desenvolvimento Cliente-Servidor 1

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

Sistemas Distribuídos (DCC/UFRJ)

UNIVERSIDADE. Sistemas Distribuídos

UFG - Instituto de Informática

ANEXO V Edital nº 03508/2008

Considerações no Projeto de Sistemas Cliente/Servidor

Sistemas Distribuídos

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Banco de Dados Conceito de Arquitetura

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Redes de Computadores e a Internet

Requisitos de Sistemas

Serviços Web: Arquitetura

REDES DE COMPUTADORES

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Eduardo Bezerra. Editora Campus/Elsevier

Sistema centralizado O Paradigma Cliente/Servidor

Web services. Um web service é qualquer software que está disponível através da Internet através de uma interface XML.

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

GBD PROF. ANDREZA S. AREÃO

REDES DE COMPUTADORES HISTÓRICO E CONCEITOS

UNICE Ensino Superior Linguagem de Programação Ambiente Cliente Servidor.

CAPÍTULO 3 MIDDLEWARE. Para entender-se o aparecimento da tecnologia middleware é descrita a seguir, e, brevemente, a sua evolução.

Rede de Computadores (REC)

Service Oriented Architecture SOA

Padrões de Interação com o Usuário

Distributed Systems Principles and Paradigms

Redes de computadores. Redes para Internet

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Cliente/Servidor. Conceitos Gerais. Graça Bressan. Graça Bressan/LARC

Sistemas Distribuídos: Conceitos e Projeto Java RMI

UFG - Instituto de Informática

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

JXTA. Alessandro Vasconcelos Ferreira de Lima.

Topologia de rede Ligação Ponto-a-Ponto

Sistemas Distribuídos

Aspectos Estratégicos da Computação Distribuída Aula 2

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Programação Cliente em Sistemas Web

Introdução à Engenharia de Computação

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Computador Digital Circuitos de um computador (Hardware)

UTFPR - Sistemas Distribuídos Prof. Cesar Augusto Tacla. Anotações. Copyright Cesar Augusto Tacla

Oracle WebLogic Server 11g: Conceitos Básicos de Administração

Capítulo 3 Projeto de Arquitetura

RMI: Uma Visão Conceitual

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Nível do Sistema Operacional

Comunicação. Parte II

Projuris Enterprise Visão Geral da Arquitetura do Sistema

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Web Services. Integração de aplicações na Web. Sistemas Distribuídos

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Disciplina: Redes de Comunicação. Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. Setembro 2013

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho


Programação para Web Artefato 01. AT5 Conceitos da Internet

Tecnologia e Infraestrutura. Conceitos de Redes

Kassius Vargas Prestes

SISTEMAS DISTRIBUÍDOS

Invocação de Métodos Remotos

Relatório do Trabalho Final da Disciplina de Engenharia de Software de Componentes

UNIVERSIDADE. Sistemas Distribuídos

Transcrição:

Sistemas Distribuídos 11 Objetivos Este capítulo apresenta uma introdução aos sistemas distribuídos em geral Arquiteturas de cliente servidor Características das arquiteturas de 2 e 3 camadas Ambiente de computação distribuída: RPC, serviços, interfaces e mensagens Remote Procedure Call Messaging Object Oriented Remote Method Invocation Soluções emergentes 2 2003 Helder L. S. da Rocha 1-1

Por que implementar um sistema distribuído? Para compartilhar recursos entre usuários! Cliente interage com usuário final Servidor interage com recursos compartilhados Cliente comunica-se com servidor Que tipo de arquitetura cliente-servidor usar? Motivação Ambiente de computação distribuída abstrai detalhes da comunicação em rede Usa protocolos de comunicação que isolam os detalhes da camada de transporte Que tipo de ambiente de computação distribuída usar? 3 Histórico Mainframe monolítico(anos '70) 1. Cliente e servidor em única camada 2. Apresentação em terminais de "telas verdes" diretamente ligados a computador que permite acesso multi-usuário Sistemas cliente-servidor em 2 camadas 1. Aplicações de mainframe separadas em cliente e servidor 2. Sistemas de arquivos compartilhados 3. Sistemas de bancos de dados compartilhados 4. Cliente-servidor em 2 camadas: cliente é GUI, servidor é sistema de banco de dados 5. Cliente-servidor em 3 camadas: cliente é GUI, middleware é aplicação, servidor é banco de dados 4 2003 Helder L. S. da Rocha 1-2

Evolução Sistema Monolítico Apresentação do Usuário Apresentação do Usuário Cliente/Servidor 2 camadas Apresentação do Usuário Cliente/Servidor 3 camadas Apresentação do Usuário 5 Comparação: 2 e 3 camadas Admin do Sistema Segurança Encapsulation of data Performance Duas camadas Complexa (há mais lógica no cliente para manter) Baixa (segurança a nível de dados) Baixa (representação de dados precisa ser exportada) Baixa (É preciso enviar muitos comandos SQL pela rede e o cliente tem que lidar com as respostas) Três camadas Menos Complexo (a aplicação pode ser gerenciada no servidor) Alta (pode ser refinada para abranger o método ou atributo) Alta (cliente chama serviços ou métodos e ignora sua implementação) Boa (Somente requisições de serviços são enviados entre o cliente e servidor) Fonte: [6] 6 2003 Helder L. S. da Rocha 1-3

Comparação: 2 e 3 camadas Escalabilidade Reuso de aplicações Integração com aplicações legadas Facilidade de desenvolvimento Duas camadas Baixa (muitas ligações entre o cliente e o servidor) Poor (aplicação monolítica reside no cliente) Não (é preciso gerenciar comunicação a partir do cliente) Mais simples Três camadas Excelente (pode distribuir cargas através de múltiplos servidores) Excelente (pode reutilizar serviços, procedimentos, objetos) Sim (serviços e objetos podem ser encapsulados em gateways ou adaptadores) Mais complexo (É preciso gerar mais código e dar manutenção nesse codigo. Pode melhorar com ferramentas) Fonte: [6] 7 Onde concentrar a funcionalidade? Servidor gordo: mais funcionalidade do lado do servidor. Ex: Web Cliente gordo: mais funcionalidade do lado do cliente. Ex: Banco de dados Middleware: ajuda a emagrecer cliente e servidor e reduz responsabilidades de ambos GUI Cliente gordo Aplicação Servidor gordo Dados Fonte: [6] 8 2003 Helder L. S. da Rocha 1-4

Ambiente de Computação Distribuída Linguagens permitem vários níveis de abstração para comunicação em rede Baixo nível (camada de transporte): soquetes - aplicações estão cientes da existência da rede Alto nível (camadas de sessão, apresentação e aplicação): RPC, messaging e RMI - aplicações chamam operações de rede como se fossem locais Soluções de alto nível permitem ambiente de computação distribuída Aplicações tratam a rede como se fossem um grande computador, e podem tem suas partes espalhadas em outras máquinas 9 Métodos de comunicação Síncrono: cliente chama o procedimento e espera pelo retorno RPC chamada Assíncrono: cliente não espera pelo fim do procedimento Messaging chamada operacao() continua operacao() espera fim fim continua 10 2003 Helder L. S. da Rocha 1-5

Remote Procedure Call (RPC) Nome genérico para soluções que permitem a clientes chamarem procedimentos remotos como se fossem procedimentos locais Uma camada de abstração acima dos protocolos de transportes (TCP) A Open Software Foundation padronizou (1992) uma solução independente de fabricante chamada Distributed Computing Environment (DCE) com Suporte a RPC Interface Definition Language (IDL) padrão Diversos serviços: diretório, segurança, sistema de arquivos distribuído, XDR (representação de dados) 11 Arquitetura RPC Cliente chama procedimentos locais no stub do cliente Stub comunica-se com ambiente de execução que transforma os dados em formato neutro e envia-o para a camada de transporte que repassa os dados para o servidor usando protocolo de transporte (como soquetes TCP/IP) Ambiente de execução no servidor decodifica os dados, monta a chamada e passa para o stub do servidor que faz a chamada no procedimento remoto Quando o procedimento termina, valor retornado faz o mesmo caminho inverso Fonte da imagem: http://msdn.microsoft.com 12 2003 Helder L. S. da Rocha 1-6

IDL - Interface Definition Language Linguagem neutra usada para definir interfaces dos procedimentos remotos Define nome, tipos de parâmetro, tipos de retorno OSF IDL (usado em DCE RPC) é baseado em C Ferramentas do fabricante do ambiente RPC compilam IDL e usam para gerar os stubs do cliente e servidor Exemplo de IDL struct Data { long dia; long mes; long ano; }; Data getdata( void ); Cliente IDL Compilador Servidor Stub Cliente Stub Servidor 13 Messaging Método de comunicação baseado em troca de mensagens Assíncrono Mensagens contém toda a informação: não há interface previamente definida - aplicação que recebe a mensagem precisa saber o que fazer com ela Ambiente de computação distribuída baseado em mensagens é formado por Message Oriented Middleware (MOM / Message Queue) que age como mediador Clientes remetentes Clientes destinatários Destinos conhecidos pelos participantes 14 2003 Helder L. S. da Rocha 1-7

RPC orientado a objetos: RMI Em um ambiente OO, verdadeiro ambiente de computação distribuída requer que haja transparência na chamada de métodos remotos Estender características de linguagens orientadas a objetos para rede Objetos distribuídos permitem chamada remota de métodos (Remote Method Invocation - RMI) Várias soluções proprietárias: COM/DCOM, Java RMI Open Management Group (OMG) padronizou CORBA - arquitetura para ambiente comum de objetos distribuídos Situação atual das tecnologias se baseia em servidores de aplicações com acesso transparente a serviços Componentes: baixo acoplamento e alto reuso Enterprise JavaBeans (baseado em CORBA) e COM+ Jini: interface altamente dinâmica 15 Web Services Ambiente de computação distribuída baseado no padrão XML da W3C Protocolo baseado em XML "IDL" baseado em XML Registro de serviços baseado em XML Tem como objetivo maior a integração Formato dos dados quando convertido pelo stub é texto! Ainda é uma solução bastante nova Problemas de performance ainda não resolvidos Poucos serviços, poucas ferramentas Parte essencial da arquitetura.net da Microsoft 16 2003 Helder L. S. da Rocha 1-8

Peer to Peer Ponto-a-ponto: solução de computação distribuída onde todos os participantes são clientes e servidores ao mesmo tempo Duas pessoas podem iniciar a rede e trocar arquivos, recursos, capacidade computacional Quanto mais pessoas estiverem usando a rede, mais rápida, mais eficiente e mais rica ela fica Vários produtos voltados à transferência de arquivos Napster, Kazaa, Gnutella, etc. JXTA: coleção de protocolos independentes de dispositivo e plataforma para P2P Grid! 17 Grid Computing "Forma de computação distribuída que envolve a coordenação e compartilhamento de recursos computacionais, aplicações, dados, armazenamento e rede através de organizações dinâmicas e geograficamente dispersas" [grid.org] Ainda no início (não há padrões nem produtos), mas tem despertado grande interesse Grid hoje concentra-se principalmente no compartilhamento de poder computacional Exemplo: SETI@Home - 14 TeraFlops (14 trilhões de operações de ponto flutuante por segundo) - 500 mil anos de tempo de processamento em um ano e meio. 18 2003 Helder L. S. da Rocha 1-9

Fontes [1] Raman Khanna (Editor). Distributed Computing - Implementation and Management Stategies. Prentice-Hall, 1994. [2] Open Group. DCE 1.1: Remote Procedure Call. Aug 1997 http://www.opengroup.org/products/publications/catalog/c706.htm [3] R. Srinivasan. RFC 1831 - Remote Procedure Call version 2. Sun Microsystems. August 1995 [4] Object Management Group. http://www.omg.org [5] Helder da Rocha. J433 - Minicurso de Aplicações Distribuídas em Java. 2000. http://www./cursos/java/j433 [6] Trevor Young. Client-Server Software Architecture. University of British Columbia. 09/2003. http://www.ugrad.cs.ubc.ca/~cs410/lectures/ [7] GRID.org. http://www.grid.org [8] Project JXTA. http://www.jxta.org 19 Versão 1.0 2003, Helder da Rocha www. 20 2003 Helder L. S. da Rocha 1-10