Modelos de Sistemas Distribuídos . Introdução . Modelos Arquiteturais . Requerimentos de Projeto para Arquiteturas Distribuídas 1 Introdução Introdução . Existem 2 conjuntos de modelos de sistemas distribuídos: -> Conjunto dos Modelos Arquiteturais; -> Conjunto dos Modelos Fundamentais; . Cada modelo tem a intenção de disponibilizar uma descrição abstrata e simplificada, mas consistente dos aspectos relevantes do projeto de sistemas distribuídos. 2 Introdução Introdução Modelos Arquiteturais estão preocupados com a disposição das partes do sistema distribuído e da relação/interação entre elas Modelos Fundamentais preocupam-se com as propriedades que são comuns a todos os modelos arquiteturais. 3 Modelos Arquiteturais Modelos . A arquitetura de um Sistema é sua estrutura em termos de componentes especificados separadamente, e assim fazer um sistema confiável, gerenciável, adaptável e de custo razoável. Considerando: . Localização dos componentes na rede de computadores (definindo padrões de distribuição de dados e carga de trabalho) . A inter-relação entre os componentes (os papéis funcionais e os padrões de comunicação entre eles). Conceitos: . Processo servidor; . Processo cliente; . Processos pares; (cooperam e comunicam de maneira simétrica) 4 Arquitetura de Software Arquitetura . Originalmente é a estruturação do software como camadas ou módulos em um único computador e mais recentemente em termos de serviços oferecidos e requisitados entre processos localizados no mesmo ou em computadores diferentes. -> Plataforma (hardware/Sistema Operacional. Ex: intel x86/Windows, PowerPC/Mac OS X); ->Middleware (modelo de programação mascarando heterogeneidade); conveniente 5 Arquitetura de Software Arquitetura Source: Coulouris et al. 6 Arquitetura de Software Arquitetura . Limitações de Middleware (principalmente middleware de comunicação The end-to-end argument Em muitos casos o comportamento correto de SDs depende de verificações, mecanismos de correção de erro e medidas de segurança em muitos níveis, alguns dos quais requerendo acesso a dados dentro do espaço de endereçamento da aplicação. Qualquer tentativa de verificação dessas condições apenas dentro do sistema de comunicação (middleware) será insuficiente, e o trabalho provavelmente terá de ser feito tbém no nível da aplicação, disperdiçando esforço de programação, e mais importante, adicionando complexidade e executando operações redundantemente. Saltzer, J.H., Reed, D.P., and Clarke, D. (1984). End-to-End Arguments in System Design, ACM Transactions on Computer Systems Vol. 2, Nº 4, pp. 277-288 7 Arquiteturas de Sistema Arquitetura No que se baseiam as arquiteturas de sistemas distribuídos: . Na divisão de responsabilidades entre os componentes do sistema, e; . No posicionamento (onde) desses componentes na rede. Conseqüência: Divisão de responsabilidades e posicionamento na rede são talvez o mais evidente aspecto do projeto de sistemas distribuídos. Resultado: Tais características implicam na: (dos sistemas resultantes) . Performance (desempenho) . Confiabilidade . Segurança 8 Arquiteturas de Sistema Arquitetura Cliente/Servidor . Quem requisita serviço assume o papel de cliente. . Os servidores podem tornar-se clientes de outros servidores. 9 Arquiteturas de Sistema Arquitetura . Processos Pares: Todos os processos praticam papéis similares interagindo cooperadamente (sem distinção entre servidores e clientes). Ex. Aplicação de quadro branco distribuído. 10 Arquitetura Arquiteturas de Sistema – Múltiplos Servidores . Serviços disponibilizados por múltiplos servidores: Servidores em computadores separados podem implementar serviços baseando-se na interação constante, particionando ou replicando os componentes do serviço (objetos por ex.) e distribuindo-os entre eles. Ex: Content Distribution Network (CDN), Web, cluster 11 Arquiteturas de Sistema Arquitetura . Servidores Proxy e Cache: Armazenamento de informações de forma a aumentar a performance. Ex. Web 12 Variações no Modelo Cliente/Servidor Arquitetura . Código Móvel O código da aplicação é buscado no servidor e executado no cliente. Economizar largura de banda. Ex. Applet, TV digital interativa 13 Variações no Modelo Cliente/Servidor Arquitetura . Agentes Móveis Um programa executável que “viaja” de um computador a outro na rede, executando computações e recuperando informações, e eventualmente retornando algum resultado. 14 Variações no Modelo Cliente/Servidor Arquitetura . Computadores de Rede É diferente do conceito de computadores em rede. Nesse caso, os computadores possuem poder de processamento e tem memória, porém não utilizam armazenamento local. Ex: boot remoto. Nesse exemplo, o sistema operacional e aplicações (imagens) ficam armazenadas no servidor e são descarregadas para o cliente (computador de rede) no momento do boot. O usuário utiliza as aplicações e quaisquer dados a serem salvos, são armazenados no servidor. 15 Variações no Modelo Cliente/Servidor Arquitetura . Thin Clients Similar ao modelo de computadores de rede, porém sem capacidade de processamento ou memória. Todo o processamento e armazenamento é executado no servidor. Apenas uma interface de acesso ao servidor é disponibilizada pelo Thin Client. Ex: X-11 window system, Citrix system 16 Arquitetura Variações no Modelo Cliente/Servidor . Dispositivos móveis (computação ubíqua) e Redes Espontâneas Dispositivos de hardware com capacidade de processamento e comunicação sem fio através da rede pública de telecomunicações (ex: gsm,cdma) ou WiFi, Wimax, bluetooth, etc.. com capacidade de criação de redes ad hoc móveis. Um dos dispositivos atua como servidor e os outros como clientes (para autenticação por ex) ou a operadora telefônica atua como servidora e os dispositivos como clientes. 17 Arquitetura Requerimentos de Projeto para Arquiteturas Distribuídas . Performance - Tempo de Resposta (Responsiviness) - Throughput (taxa de processamento e/ou transferência) - Balanceamento da Carga Computacional 18 Arquitetura Requerimentos de Projeto para Arquiteturas Distribuídas . Qualidade de Serviço - Afetada pela Confiabilidade, Segurança e Performance (características dos modelos fundamentais) . Uso de Caching e Replicação (protocolos) . Fidedignidade ou Confiabilidade - Correção ou Corretude - Tolerância a Falhas (alcançada por redundância - Segurança alto custo) 19