Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB Organização • Módulo 1: – Conceitos de Sistemas Distrubídos; • Módulo 2: – Remote Procedure Call; • Módulo 3: – Java RMI; • Módulo 4: – CORBA; Módulo 1 - Sumário • Conceitos de Sistemas Distribuídos – Conceitos Básicos; – Arquiteturas Distribuídas; – Comunicação cliente-servidor; Conceitos Básicos • Conceito de Sistemas Distribuídos: – Sistema que executa em várias máquinas e aparece para o usuário de maneira transparente (Tanenbaum); – Sistema que executa tarefas coordenadas em várias máquinas e se comunica através de passagem de mensagens (Coulouris); Conceitos Básicos • Características básicas: – Concorrência: • Compartilhamento de recursos; – Falta de relógio global: • Diferentes máquinas não são sincronizadas; – Independência de falhas: • Um ponto falho não paralisa todo o sistema; Conceitos Básicos Desafios • • • • • • • Heterogeneidade; Abertura; Segurança; Escalabilidade; Tolerância a Falhas; Concorrência; Transparência; Conceitos Básicos Desafios • Heterogeneidade: – Diferentes Redes possuem diferentes protocolos; – Hardwares diferentes representam dados de maneira diferente; – Diferentes SOs fazer chamadas de função de maneira diferente; – Linguagens possuem diferentes estruturas; – Programas de diferentes desenvolvedores não se comunicam; Conceitos Básicos Desafios • Solução: Middleware: – – – – Camada adicional de software; TCP/IP: rede; Corba: linguagem; Java: sistema operacional; Conceitos Básicos Desafios • Abertura: – Possibilidade de alterar / estender o middleware; – Padronização de funções e interfaces; – Internet: RFC do IETF; – Corba: documentos da OMG; Conceitos Básicos Desafios • Segurança: – – – – – – Confidencialidade; Autenticidade; Não repúdio; Integridade; Controle de acesso; Disponibilidade; Conceitos Básicos Desafios • Escalabilidade: – Funcionamento adequado em diferentes escalas; – Internet é altamente escalável; Date 1993, July 1995, July Computers Web servers Percentage 1,776,000 6,642,000 130 23,500 1997, July 19,540,000 1,203,096 1999, July 56,218,000 6,598,697 0.008 0.4 6 12 Conceitos Básicos Desafios • Deve implementar: – Controle de custo de recursos físicos: se um recurso tem muito acesso precisa ser replicado; – Controle de performance dos recursos: se um recurso começa a ficar lento, precisa ser re-estruturado; – Prevenção contra esgotamento de recursos: tipos de dados, lista e tabelas devem ser extensíveis (Ex.: endereço IP); – Prevenção contra gargalos: enviar algoritmos centralizados; Conceitos Básicos Desafios • Tolerância a Falhas: – Detecção: checksum, votação de processamento; – Mascaramento: retransmissão, redundância; – Recuperação: rollback; Conceitos Básicos Desafios • Concorrência: – Recursos podem ser acessados ao mesmo tempo; – Serviços precisam gerenciar o acesso aos recursos; – Operações concorrentes devem ser sincronizadas; – Controle de transações; – Ex: movimentação em contas diferentes concorrentemente; Conceitos Básicos Desafios • Transparência: – Ocultar do usuário a separação dos componentes; – Ocultar do programador a separação dos componentes; – É um requisito importante nos sistemas distribuídos; Integração de Aplicações Transparência Transparência Acesso Localização Descrição Esconde diferenças na representação de dados e como um recurso é acessado Esconde onde um recurso está localizado Migração Esconde que um recurso pode mover-se para outra localização Relocação Esconde que um recurso pode ser movido para outra localização enquanto esta sendo usado Replicação Esconde que um recurso está distribuído por vários servidores. Concorrência Falha Persistência Esconde que um recurso pode ser compartilhado por vários usuários concorrentes Esconde a falha e recuperação de um recurso Esconde quando um recurso (software) esta em memória ou em disco Arquiteturas – Cliente / Servidor Client invocation result invocation Server result Server Client Key: Proc ess : Computer: Arquiteturas – Cliente / Vários Servidores Servic e Server Client Server Client Server Arquiteturas – Servidor Proxy Web s erver Client Proxy s erver Client Web s erver Arquiteturas – Peer-to-Peer Applic ation Applic ation Coordination c ode Coordination c ode Applic ation Coordination c ode Arquiteturas – Código Móvel a) c lient reques t res ults in the downl oadi ng of applet c ode Client Applet c ode Web s erver b) c lient interac ts with the appl et Client Applet Web s erver Arquiteturas – Agente Móvel • É um programa que viaja de um computador para outros; • Inclui código e dados; • Geralmente realiza coleta de informações; • Realiza acesso a recursos locais no servidor em que executa; Arquiteturas – Cliente Magro Compute server Network computer or PC Thin network Client Application Process Exemplo - Internet email server Desktop c om pute rs print and other servers Loc al area network Web s erver email server File server print other s ervers the res t of the Internet router/firewal l Middleware Applic ations , s ervic es RMI and RPC T his c hapter reques t-reply protocol marshall ing and external data repres entation UDP and T CP Middleware layers Comunicação Cliente-Servidor • • • • Servidor: oferece serviços; Cliente: requisita serviços; Normalmente síncrono; Premissas de comunicação: – Request / Reply; – Send / Receive; Cliente - Servidor Comunicação Sockets socket any port agreed port socket message client server other ports Internet address = 138.37.94.248 Internet address = 138.37.88.249 Cliente - Servidor Arquitetura Client-Server Client doOperation Server Request message (wait) Reply message (continuation) getRequest select object execute method sendReply Cliente - Servidor Arquitetura Client-Server public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments) sends a request message to the remote object and returns the reply. The arguments specify the remote object, the method to be invoked and the arguments of that method. public byte[] getRequest (); acquires a client request via the server port. public void sendReply (byte[] reply, InetAddress clientHost, int clientPort); sends the reply message reply to the client at its Internet address and port. Cliente - Servidor Confiabilidade • UDP: – Time out; – Retransmissão; – Duplicatas (histórico); • TCP: – Protocolo já é confiável; – Menos flexibilidade; Cliente – Servidor Mensagens Name Client Messages sent by Server Client R Request RR Request Reply RRA Request Reply Acknowledge reply Cliente – Servidor Exemplo • Protocolo HTTP; • Implementado sobre TCP; • Cliente requisita páginas: – operação / parâmetros; – get <arquivo.html>; • Servidor atende requisição;