Clique aqui para baixar a versão em PDF
Transcrição
Clique aqui para baixar a versão em PDF
Sistemas Distribuídos Arquitetura de Sistemas Distribuídos Aula II Prof. Rosemary Silveira F. Melo Arquitetura de Sistemas Distribuídos • Conceito de Arquitetura de Software • Principais elementos arquiteturais • Modelos Arquiteturais • Evolução das Arquiteturas • Estilos Arquiteturais Conceito de Arquitetura de Software • é a estrutura de um sistema, que consiste de componentes de software, das propriedades externamente visíveis desses componentes e dos relacionamentos entre eles. • é a estrutura ou organização dos mais significativos componentes do sistema e suas interações. Principais elementos arquiteturais Componentes • é uma unidade modular com interfaces requeridas e fornecidas bem definidas que é substituível dentro do seu ambiente. • são elementos de uma arquitetura que geralmente implementam: processamento (funcionalidade ou comportamento); estado (informação ou dados); interação ( interconexão, comunicação, coordenação e mediação). Principais elementos arquiteturais Componentes • pode ser uma simples operação ou complexo como um sistema inteiro. Pode ser visto pelo usuário (humano ou outro software) somente através da sua interface pública. Principais elementos arquiteturais Conectores • tipo de componente responsável pela interação entre componentes. • em sistemas desktop convencionais os conectores são geralmente representados por simples chamadas de procedimento (procedure call) ou acesso a dados compartilhados. • em sistemas complexos eles passam a ter identidades, papéis e artefatos de implementação único. Modelos arquiteturais • Define a forma pela qual os componentes dos sistemas interagem e a maneira pela qual eles são mapeados em uma rede de computadores subjacente (Coulouris, 2005). Evolução das arquiteturas Evolução das arquiteturas Arquiteturas 1 camada (Mainframes) • Dominantes até década de 80 como arquitetura corporativa • Terminais burros somente para apresentar as informações. Evolução das arquiteturas Arquiteturas 1 camada (Mainframes) Desvantagens: – Manutenção difícil e cara, proporcional a sua eficiência. – Problemas de congestionamento na entrada do servidor devido a chegada de pedidos – Congestionamento no tratamento da informação (sistema central responsável por tudo, até pela interface) – Problema básico: interface não amigável Evolução das arquiteturas Evolução das arquiteturas Arquitetura Cliente/Servidor Vantagens: ▫ Camada de apresentação no Cliente utiliza processamento local (aproveita PCs da empresa). ▫ Oferecer sistemas com interfaces gráficas amigáveis ▫ Integrar o desktop e os dados corporativos. Evolução das arquiteturas Arquitetura Cliente/Servidor Desvantagens: • Escalabilidade limitada • Enormes problemas de manutenção (mudanças na lógica de aplicação forçava instalações) • Cada cliente uma conexão com o SGBD Evolução das arquiteturas Evolução das arquiteturas Arquitetura 3 Camadas • A arquitetura cliente/servidor em 2 camadas sofria de vários problemas: – Falta de escalabilidade (conexões a bancos de dados) – Enormes problemas de manutenção (mudanças na lógica de aplicação forçava instalações) • Dificuldade de acessar fontes heterogêneas Evolução das arquiteturas Arquitetura 3 Camadas Vantagens: • Perda de performance é compensada com ganho de flexibilidade. • Aumento da escalabilidade e confiabilidade do sistema. • Problemas de manutenção foram reduzidos, pois mudanças nas camadas de aplicação e de dados não necessitam de novas instalacões no desktop. Evolução das arquiteturas Arquitetura 3 Camadas Desvantagens: • Integração via Internet – Problema que a maioria não foi projetada para internet • Integração entre sistemas 33-tiers – falta de padronização Evolução das arquiteturas Evolução das arquiteturas Evolução das arquiteturas Arquitetura n-camadas • A arquitetura em 3 camadas original sofre de problemas: – A instalação inicial dos programas no desktop é cara. – O problema de manutenção ainda persiste quando há mudanças na camada de apresentação. – Não se pode instalar software facilmente num desktop que não está sob seu controle administrativo Evolução das arquiteturas Arquitetura n-camadas • Uso do Browser como Cliente Universal/Thin Client • A camada de aplicação se quebra em duas: Web e Aplicação • Evita Evita--se instalar qualquer software no desktop e portanto, problemas de manutenção. • Pode Pode--se chamar de 3 camadas porque às vezes as camadas Web e Aplicação freqüentemente rodam na mesma máquina (pequenos volumes).. Evolução das arquiteturas Arquitetura n-camadas Desvantagens: • Complexidade • Fazer aplicações distribuídas multicamadas é difícil. Tem que: – Implementar tolerância a falhas – Implementar gerência de transações distribuídas – Implementar balanceamento de carga – Implementar resource pooling – Muito middleware envolvido Evolução das arquiteturas Arquitetura n-camadas Desvantagens: • Informação redundante • Dificuldade e o custo de desenvolvimento e manutenção. • Cresce exponencialmente com o número de camadas Evolução das arquiteturas • O truque é introduzir middleware num servidor de aplicação que ofereça esses serviços automaticamente. Além do mais, as soluções oferecidas (J2EE, . Net) são baseadas em componentes. Por quê definir uma arquitetura para Sistemas Distribuídos ? • Sistemas distribuídos são complexas peças de software. • Componentes estão espalhados por diversas máquinas. • Sistemas devem ser organizados adequadamente: organização lógica do conjunto de componentes e organização física Estilos arquiteturais • Estilos arquiteturais definem decisões gerais de projeto que impõem restrições e que podem precisar ser detalhadas em decisões mais específicas para o sistema em questão. • Não são definidos detalhes acerca de componentes utilizados, suas interfaces e seus mecanismos de interação. O arquiteto deve detalhar estas decisões e adaptáadaptá-las para o contexto específico de uma aplicação em particular. Estilos arquiteturais • Estilos em Camada • Estilos com Memória Compartilhada • Estilos Baseados em Evento • PeerPeer-to to--Peer Estilos arquiteturais • Estilos em Camada – a arquitetura é separada em camadas ordenadas, onde um programa de uma camada pode solicitar serviços de uma camada inferior. – Virtual Machines – várias camadas – Client Client--Server - duas camadas com conexões em rede Estilos arquiteturais • Estilos em Camada - Virtual Machine Estilos arquiteturais • Estilos em Camada – ClientClient-Server Estilos arquiteturais • Estilos com Memória Compartilhada – caracterizado pela presença de múltiplos componentes que acessam o mesmo repositório de dados e se comunicam através deste repositório. –- programas independentes acessam e se comunicam exclusivamente através de um repositório global, conhecido como blackboard.. blackboard Estilos arquiteturais • Estilos com Memória Compartilhada Exemplo: conjunto de ferramentas CASE integrada Estilos arquiteturais • Estilos com Memória Compartilhada Estilos arquiteturais • Estilos Baseados em Evento – caracterizados por componentes independentes que se comunicam somente através de eventos transmitidos por um barramento (conector). – altamente indicado para sistemas com componentes concorrentes altamente desacoplados onde, em um determinado momento, um componente pode estar ou criando ou consumindo informação. Estilos arquiteturais • Estilos Baseados em Evento – Nesta arquitetura, processos demonstram o interesse por um evento ou conjunto de eventos (processo se subscreve) e esperam pela notificação de qualquer um desses eventos, gerados por um processo notificador. – O produtor publica uma informação em um gerenciador de eventos (middleware) e os consumidores se subscresvem para receber as informações deste gerenciador. Eventos e notificações. Estilos arquiteturais • Estilos Baseados em Evento Estilos arquiteturais • Peer-to Peerto--Peer (P2P) – consiste em uma rede de peers autônomos fracamente acoplados. – cada peer atua como um cliente e como um servidor. – peers se comunicam utilizando protocolo de rede (ex.: napster, gnutella, emule, PPLive) – descentraliza tanto a informação quanto o controle, fazendo com que a descoberta de recursos seja um aspecto importante. Estilos arquiteturais • Peer-to Peerto--Peer (P2P) – na descoberta de recursos em sistemas P2P puro: • a solicitação é lançada na rede como um todo • a requisição se propaga até que a informação seja descoberta • se a informação é encontrada o peer obtém o endereço direto do outro peer e contacta diretamente. Estilos arquiteturais • Peer-toPeerto-Peer (P2P) – na descoberta de recursos em sistemas P2P híbrido: • processo é otimizado por a presença de peers especiais, especializados na localização de outros peers ou disponibilização de diretórios que localizam as informações. Ex.: napster (utiliza um servidor central para indexação das músicas e localização de outros peers). – estilo popular nas aplicações de compartilhamento de arquivos, utilizado também B2B commerce, chat, redes de sensores. Estilos arquiteturais • Peer--to Peer to--Peer (P2P) Arquiteturas de Sistemas • Como diversos sistemas distribuídos são realmente organizados ? • Onde são colocados os componentes de software ? • Onde é estabelecida a interação entre as peças de software ? Arquiteturas de Sistemas • Arquiteturas Centralizadas – Cliente Cliente--Servidor: terminais bancários • Arquiteturas Descentralizada – Peer Peer--to to--Peer (P2P): EE-Chords • Arquiteturas Híbridas – Peer Peer--to to--Peer (P2P): BitTorrent, PPLive Arquiteturas Centralizadas • Modelo ClienteCliente-Servidor – processos são divididos em dois grupos – Servidor: processo que implementa um serviço específico – Cliente: processo que requisita um serviço ao servidor • Requisição -> Resposta Arquiteturas Centralizadas Arquiteturas Centralizadas Arquiteturas Centralizadas • • • • • • Modelo ClienteCliente-Servidor: questões, questões!! Clientes e Servidores multithreads? Comunicação??? Qual o tipo de aplicação? Sem conexão, não confiável (UDP)? Com conexão, confiável (TCP)? Arquiteturas Centralizadas ● Considerando aplicações clientecliente-servidor que visam dar suporte ao acesso de usuários a banco de dados: – Nível de interface – Nível de processamento – Nível de dados Arquiteturas Centralizadas Arquiteturas Centralizadas Com a distinção entre três níveis lógicos, como distribuir fisicamente uma aplicação cliente--servidor por várias máquinas? cliente – Arquitetura de duas divisões físicas – Arquitetura de três divisões físicas Arquiteturas Centralizadas Arquiteturas Centralizadas Arquiteturas Centralizadas Arquiteturas Centralizadas Arquiteturas Centralizadas Arquiteturas Centralizadas Arquiteturas Descentralizadas • Clientes e servidores são fisicamente subdivididos em partes logicamente equivalentes, mas cada parte está operando em sua própria porção do conjunto completo de dados, o que equilibra a carga!!!! • Interação entre os processos é simétrica: cada processo agirá como um cliente e um servidor ao mesmo tempo. Arquiteturas Descentralizadas Sistemas P2P – questões, questões, questões!! ● Como organizar os peers em uma rede de sobreposição ? ● Como difundir o conteúdo? ● Como incentivar os peers a colaborarem? Arquiteturas Descentralizadas Arquiteturas Descentralizadas Arquiteturas Descentralizadas Arquiteturas Descentralizadas Arquiteturas Descentralizadas Arquiteturas Descentralizadas