Arquiteturas capítulo 2
Modelos de arquitetura de sistemas distribuídos Clientes realizam pedidos a servidores Client invocation invocation Server result Server result Client Key: Process: Computer:
Modelos de arquitetura de sistemas distribuídos Clientes realizam pedidos a servidores, exemplos: Gerenciamento de eventos Sistemas de biblioteca online Sistemas de cadastro em geral 3
Modelos de arquitetura de sistemas distribuídos Aplicativo distribuído baseado em arquitetura ponto a ponto Sharable objects Peer 1 Applicat ion Peer 2 Applicat ion Peer 3 Application Peer 4 Applicat ion Peers 5... N
Modelos de arquitetura de sistemas distribuídos Aplicativo distribuído baseado em arquitetura ponto a ponto, exemplos: Napster Emule Aplicativos baseados em bittorrent 5
Modelos de arquitetura de sistemas distribuídos Serviço fornecido por vários servidores Service Client Server Server Client Server
Modelos de arquitetura de sistemas distribuídos Serviço fornecido por vários servidores, exemplos Grandes sistemas de e-mail como google e hotmail Aplicações coorporativas como sistemas bancários e governamentais 7
Modelos de arquitetura de sistemas Servidor proxy web distribuídos Client Proxy server Web server Client Web server
Modelos de arquitetura de sistemas distribuídos Servidor proxy web, exemplo Sistema de proxy para páginas estáticas Sistemas que necessitam de uma baixa latência e não possui muito dinamismo dos componentes 9
Modelos de arquitetura de sistemas distribuídos Applets web Requisição do cliente resulta no download de um applet O cliente interage com o applet
Modelos de arquitetura de sistemas distribuídos Applets web, exemplos Sistemas de execução local, como simuladores didáticos, para ensino de física básica Visualizadores de distribuições estatísticas com parâmetros passados pelos usuários 11
Modelos de arquitetura de sistemas distribuídos Clientes leves e servidores de computação Network computer or PC Compute server Thin Client network Application Process
Modelos de arquitetura de sistemas distribuídos Clientes leves e servidores de computação, exemplos Mais antigos, Mainframes Terminais burros, como por exemplo computador popular Aplicações em nuvens 13
Estilos arquitetônicos A arquitetura do software define como os vários componentes que o compõe devem ser organizados e como devem interagir Em camadas Baseado em objetos 14
Estilos arquitetônicos Arquitetura em Camadas Um componente da camada Li tem permissão para chamar componentes da camada Li-1 mas não o contrário; O controle flui de camada para camada: requisições descem pela hierarquia, resultados fluem para cima. Arquitetura Baseada em Objetos Cada objeto corresponde a um componente e esses componentes são conectados por meio de chamadas a métodos remotos; Se ajusta a arquitetura de sistemas clienteservidor 15
Estilos arquitetônicos Baseada em eventos Baseado nos dados 16
Estilos arquitetônicos Arquitetura Baseada em Eventos Processos se comunicam por meio de propagação de eventos, que eventualmente transportam dados; Associado, em geral, a sistemas publicar/subscrever; Processos são fracamente acoplados. Arquitetura Centrada nos Dados Processos se comunicam por meio de um repositório comum; Sistemas baseados na Web são em grande parte centrados nos dados. 17
Introdução ao modelo cliente/servidor Uma questão fundamental em sistemas distribuídos é a definição de como devemos organizar os processos; Um modelo bastante popular, organiza os processos em clientes que requisitam serviços de servidores. 18
Introdução ao modelo cliente/servidor Comunicação Através de um protocolo simples sem conexão Utilizado quando a rede é razoavelmente confiável, como a maioria das LANs; Vantagem: eficiência; Desvantagem: dificuldades de tornar a aplicação resistente a falhas de transmissão; Se o cliente não recebe resposta, ele não tem como detectar se a mensagem original foi perdida ou se isto ocorreu com a resposta; O cliente pode reenviar a requisição; Para requisições como retorne o saldo da minha conta isto não gera problemas mas para mensagens do tipo transfira 10.000,00 da minha conta o reenvio da requisição seria desastroso. 19
Introdução ao modelo cliente/servidor Comunicação Através de protocolo confiável orientado a conexão Desvantagem: desempenho relativamente baixo; Funciona muito bem em WANs; Exemplo: praticamente todas as aplicações na Internet utilizam conexões TCP/IP. 20
Distribuição horizontal e vertical do modelo cliente/servidor Camadas de uma aplicação: uma aplicação pode ser estruturada em três níveis Interface com o usuário Processamento Dados 21
Distribuição horizontal e vertical do modelo cliente/servidor Camada de interface com o usuário Consiste dos programas que permitem a interação dos usuários com a aplicação; Pode ser muito simples, utilizando uma interface a caractere simples ou mais sofisticado utilizando interfaces gráficas; Exemplo simples: interface de terminal onde o mainframe controla toda a interação inclusive o monitor e teclado; Exemplo sofisticado: Interface de sistema que permite ao usuário arrastar o ícone que representa o arquivo para uma lixeira provocando sua exclusão. 22
Distribuição horizontal e vertical do modelo cliente/servidor Camada de processamento Contêm a funcionalidade principal da aplicação; Exemplo: uma ferramenta de busca na Internet; Ela deve transformar a string que o usuário digitou em uma ou mais consultas a um grande banco de dados e formatar os resultados obtidos em páginas HTML a serem apresentadas para o usuário. 23
Distribuição horizontal e vertical do modelo cliente/servidor Camada de dados Na sua forma mais simples consiste de um sistema de arquivos mas é comum que sejam utilizados banco de dados; Além de apenas armazenar dados pode também tratar sua consistência e realizar funções como gerar uma notificação quando uma dada condição ocorrer; Estas ações são muitas vezes implementadas através de stored procedures. 24
Distribuição horizontal e vertical do modelo cliente/servidor 1-28 Exemplo de uma ferramenta de busca 25
Distribuição horizontal e vertical do modelo cliente/servidor * Considere um sistema de suporte à decisão para uma corretora de valores: Uma camada frontal implementa a interface com o usuário; Uma camada de dados armazena os dados financeiros; Uma camada de processamento realiza a análise dos dados, o que eventualmente exige métodos e técnicas sofisticados de estatística e inteligência artificial. 26
Distribuição horizontal e vertical do modelo cliente/servidor Arquiteturas multidivididas A distinção entre os três níveis lógicos sugere várias possibilidades para a distribuição física de uma aplicação Cliente/Servidor; A organização mais simples requer apenas dois tipos de máquinas: Cliente: que executa os programas que compreendem a interface com o usuário; Servidor: que implementa as camadas de processamento e de dados. Esta organização é conhecida como Cliente/Servidor em duas camadas; No entanto, diversas outras arquiteturas podem ser utilizadas 27
Distribuição horizontal e vertical do modelo cliente/servidor Alternative client-server organizations (a) (e). 1-29 Possíveis organizações Cliente/Servidor 28
Distribuição horizontal e vertical do modelo cliente/servidor Na alternativa (a), executa-se no cliente só a parte da interface dependente do terminal; Na alternativa (b), todo o software de interface com usuário executa no cliente; Exemplo da alternativa (c): verificação de consistência do preenchimento de um formulário feito no cliente; Na alternativa (d), a aplicação executa na máquina cliente, indo para o servidor somente as operações sobre as base de dados. Exemplo: muitas aplicações bancárias; Na alternativa (e), o disco local no cliente mantêm parte dos dados. Exemplo: browser web mantendo uma cache; Recentemente tem-se evitado as alternativas (d) e (e) devido a problemas de gerenciamento e por tornar o software cliente dependente da plataforma subjacente do cliente; Clientes gordos (abordagens (d) e (e)); Clientes magros (abordagens (a) a (c)): mais fáceis de gerenciar. 29
Distribuição horizontal e vertical do modelo cliente/servidor Arquitetura em três camadas: Um servidor pode também agir como cliente, resultando em uma arquitetura em três níveis 1-30 30
Distribuição horizontal e vertical do modelo cliente/servidor Arquitetura em três camadas Nesta arquitetura, programas que formam o nível de processamento residem em um servidor separado; Um exemplo típico é o processamento de transações, onde o monitor de transações coordena as transações em servidores de dados possivelmente diferentes; Outro exemplo é a organização usual de sites na Web, onde o servidor Web age como ponto de entrada para um site, passando requisições para um servidor de aplicação no qual ocorre o processamento propriamente dito. 31
Distribuição horizontal e vertical do modelo cliente/servidor Distribuição horizontal A distribuição do modelo Cliente/Servidor em múltiplas camadas vista anteriormente é conhecida por distribuição vertical; O modelo Cliente/Servidor pode também ser distribuído horizontalmente, dividindo-se o cliente ou servidor em partes logicamente equivalentes; Um exemplo popular é um servidor Web replicado em várias máquinas de forma a prover um balanceamento da carga de trabalho. 32
Distribuição horizontal e vertical do modelo cliente/servidor Distribuição horizontla de um servidor web 1-31 33
Distribuição horizontal e vertical do modelo cliente/servidor Cluster de servidores Conjunto de máquinas conectadas por uma rede de alta largura de banda e baixa latência onde cada máquina executa um ou mais servidores; Normalmente organizado logicamente em três camadas: Comutador que é responsável pelo roteamento das requisições de clientes; Servidores de aplicação/computação; Sistema de arquivos distribuído/banco de dados. 34
Distribuição horizontal e vertical do modelo cliente/servidor Cluster de servidores 35