Arquitetura de sistemas distribuídos e estilos arquitetônicos Profª Vanice Canuto Cunha Sistemas Distribuídos – UFMT - IC
Sumário
Estilos Arquitetônicos
Arquitetura de Sistemas
Arquiteturas e Middleware
Autogerenciamento em SDs Questões de Projeto de Aplicações Servidoras
Estilos Arquitetônicos
A arquitetura do software define como os vários componentes que o compõe
devem ser organizados e como devem interagir.
Estilos Arquitetônicos Por que definir uma arquitetura?
SDs são complexas peças de software
Componentes estão espalhados por diversas máquinas
Sistemas devem ser organizados adequadamente O que são componentes?
Um componente é uma unidade modular com interfaces requeridas e fornecidas bem definidas que é substituível dentro do seu ambiente.
Estilos Arquitetônicos Como é definido o Estilo Arquitetônico?
É formulado em termos de componentes
Modo como os componentes estão conectados
Dados trocados entre componentes Maneira como os componentes são configurados em conjunto para formar um sistema
Estilos Arquitetônicos Serão vistos 4 Estilos Arquitetônicos
Arquiteturas em Camadas
Arquiteturas baseadas em objetos
Arquiteturas centradas em dados Arquiteturas baseadas em eventos
Estilos Arquitetônicos Arquiteturas em Camadas
Ideia Básica: um componente na camada Li tem permissão de chamar componentes na camada subjacente Li−1
Estilos Arquitetônicos Arquiteturas baseadas em objetos
Idea Básica: cada objeto corresponde ao que definimos como componente, e esses componentes são conectados por meio de chamada de procedimento (remota). Ex: Java RMI
Estilos Arquitetônicos Arquiteturas centradas em dados
Ideia Básica: processos se comunicam por meio de um repositório comum.
Sistemas baseados na Web são em grande parte centrados nos dados.
Exemplo: Grande conjunto de aplicações em rede que dependem de um sistema distribuído de arquivos compartilhados o qual praticamente toda a comunicação ocorre por meio de arquivos: Web
Estilos Arquitetônicos Arquiteturas centradas em dados
Estilos Arquitetônicos Arquiteturas centradas em eventos
Ideia Basica: 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. Em outras palavras, o produtor publica uma informação em um gerenciador de eventos (middleware),e os consumidores se subescrevem para receber as informações deste gerenciador
Estilos Arquitetônicos Arquiteturas centradas em eventos
Processos se comunicam por meio de propagação de eventos, que eventualmente transportam dados;
Processos são fracamente acoplados.
Associado, em geral, a sistemas publicar/subscrever;
Arquiteturas de sistemas
Dúvidas
Como diversos sistemas distribuídos são realmente organizados?
Onde são colocados os componentes de software?
Como é estabelecida a interação entre os componentes de software?
Arquiteturas de sistemas Três tipos de organizações
Arquiteturas Centralizadas
Arquiteturas Descentralizadas
Cliente-Servidor: vídeo sob demanda, terminais bancários
Peer-to-peer (P2P): Chord
Arquiteturas Híbridas
Peer-to-peer (P2P): BitTorrent, PPLive
Arquiteturas Centralizadas Modelo Cliente-Servidor
Processos são divididos em dois grupos (possível sobreposição)
Servidor: processo que implementa um serviço específico
Cliente: processo que requisita um serviço ao servidor. Requisição Resposta
Modelo Cliente-Servidor
Modelo Cliente-Servidor
Comunicação Cliente-Servidor Através de um protocolo simples sem conexão
Utilizado quando a rede é razoavelmente confiável, como a maioria dasLANs;
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 clientepode 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.
Comunicação Cliente-Servidor 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.
Modelo Cliente/Servidor
Uma aplicação CS pode ser estruturada em três níveis:
1 - Interface com o usuário 2 - Processamento 3 - Dados
Arquiteturas Centralizadas - três divisões físicas
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.
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.
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.
Exemplo: Google
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 C/S;
A organização mais simples requer apenas dois tipos de máquinas: 1 - Cliente: que executa os programas que compreendem a interface com o usuário; 2 - 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.
Possíveis Organizações Cliente/Servidor
Cluster de Servidores
Conjunto de máquinas conectadas por uma rede de alta largura e
baixa latência onde cada máquina executa um ou mais servidores;
Normalmente organizado logicamente em três camadas:
1 - Comutador: responsável pelo roteamento das requisições de clientes; 2 - Servidores de aplicação / computação;
3 - Sistema distribuído de arquivos / banco de dados.
Cluster de Servidores
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 de Sistemas Arquiteturas Descentralizadas Arquiteturas Descentralizadas - Sistemas P2P (Peer-to-peer)
Dúvidas
Como organizar os peers em uma rede de sobreposição? Como difundir o conteúdo? Como incentivar os peers a colaborarem?
Arquiteturas de Sistemas Arquiteturas Descentralizadas Arquiteturas Descentralizadas - Sistemas P2P (Peer-to-peer) Considerando a sobreposição e modo de construção
Redes Estruturadas -> procedimentos determinísticos para definição da sobreposição. Ex: Tabela de Hash Distribuída (DHT - Distributed Hash Table) Redes Não-estruturadas -> algoritmos aleatórios para construção da rede de sobreposição, gerando um grafo aleatório
Arquiteturas Descentralizadas - Arquiteturas P2P Estrut uradas
Sistema Chord (Soica et al,2003) Nós estão logicamente organizados em um anel Item de dado com chave k é mapeado para o nó com LOOKUP(k) •
•
•
Arquiteturas Descentralizadas Arquiteturas P2P Não-Estruturadas •
•
•
•
Algoritmos aleatórios Cada peer possui uma lista de vizinhos (visão parcial) Para encontrar dados, inundar a rede (no pior caso) Importante atualizar a lista de vizinhos. Mas como?
Arquiteturas Descentralizadas Arquiteturas P2P Não-Estruturadas
Um dos problemas: como encontrar os dados de maneira eficiente Muitos sistemas utilizam nós especiais, que possuem um índice de itens de dados -> Superpeers
Como associar peers comuns a estes superpeers?
Como escolher estes peers?
Arquiteturas Descentralizadas Arquiteturas P2P Não-Estruturadas
Arquiteturas Descentralizadas Arquiteturas P2P Híbridas
Arquiteturas Descentralizadas Arquiteturas P2P Híbridas
Arquiteturas × Middleware
Cada middleware possui um estilo arquitetônico específico, com o
objetivo de simplificar o projeto de aplicações
Como fazer com que um middleware genérico se adapte a aplicação? Interceptores podem ser usados para interromper o fluxo de possa execução para que uma procedimento específico da aplicação ser executado
Arquiteturas × Middleware
Autogerenciamento em SDs
Sistemas distribuídos devem ser capazes de reagir a mudanças em seu ambiente
Ex. : Troca dinâmica de políticas de alocação de recursos; Troca de codificação voz/vídeo para se adequar a condições de congestionamento na rede
Desafio: Deixar que o comportamento reativo ocorra sem intervenção humana! Ideia: Através de observações do comportamento do SD, componentes de estimativa de medições e de análise coletam dados e realimentam o sistema, modificando parâmetros controláveis.
Autogerenciamento em SDs
Ex: Astrolabe: ferramenta para observação de SDs. Resultados podem ser usados para alimentar um componente de análise para possíveis ações corretivas
Questões de Projeto de Aplicações Servidoras Organização de Servidores
Servidor interativo: o próprio servidor manipula a requisição e, se
necessário, retorna uma resposta ao cliente; Servidor concorrente: repassa para uma thread ou processo em separado a requisição e imediatamente espera pela próxima requisição.
Vinculação Cliente-Servidor
Através de portas conhecidas designadas pela Autoridade para Atribuição de Números na Internet (Iana). Ex: FTP-21, HTTP-80 Através de um daemon que registra os servidores em execução; Através de um superservidor, que escuta em várias portas e repassa a requisição a um servidor específico.
Vinculação Cliente-Servidor
Interrupção do Servidor
Exemplo: usuário deseja interromper a transferência de um enorme arquivo para o servidor FTP; Uma abordagem é o usuário sair abruptamente da aplicação cliente, o que automaticamente interromperá a conexão com o servidor;
O servidor encerrará a conexão antiga, entendendo que o cliente falhou; Esta prática á muito adotada na Internet atual...
Outra alternativa é permitir o envio de dados fora da banda;
Neste caso o servidor pode escutar em uma porta de controle separada da qual passam os dados normais.
Servidores Com e Sem Estado Sem Manter Estado:
Não é mantida nenhuma informação a respeito dos clientes e suas requisições; Exemplo: um servidor Web tipicamente não armazena estado. Após a requisição ser processada, o servidor Web esquece completamente do cliente;
Cada requisição deve ser auto-contida;
Fácil recuperação em caso de falha
Servidores Com e Sem Estado Mantendo Estado:
O servidor mantêm informações persistentes sobre seus clientes; Exemplo: um servidor de arquivo que sabe quais clientes possuem quais arquivos abertos; Normalmente leva a um melhor desempenho na execução das operações disponibilizadas; Em caso de falha, deve-se recurar o estado do servidor
Resumo da aula
SDs podem ser organizados de diferentes maneiras .
Software: : Estilos arquitetônicos
Físico: : Arquitetura de sistemas
O projeto de sistemas autogerenciadores visa a adaptação do SD ao ambiente em que está sendo executado, obtendo um maior desempenho do mesmo