SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 3 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS 1. INTRODUÇÃO Considerando que os Sistemas Distribuídos são constituídos de vários processadores, existem diversas formas de organizar o hardware de tais sistemas. Para tanto, algumas questões devem ser respondidas: - Como implementar a conexão de seus componentes; - Como os componentes se comunicam. 2. CLASSIFICAÇÃO DE FLYNN Em 1972, Michael Flynn deu origem a uma taxonomia de hardware baseado em dois princípios: - número de fluxo de instruções - número de fluxos de dados Um fluxo de instruções equivale a uma seqüência de instruções executadas (em um processador) sobre um fluxo de dados aos quais estas instruções estão relacionadas. Baseando-se na possível unicidade e multiplicidade de fluxos de dados e instruções, dividem-se as arquiteturas de computadores em quatro classes. Para cada classe, é apresentada uma esquematização genérica. 2.1. SISD (Single Instruction Stream/Single Data Stream - Fluxo único de instruções/Fluxo único de dados) Corresponde ao tradicional modelo Von Neumann. Um seqüencialmente um conjunto de instruções sobre um conjunto de dados. Exemplo: Computadores com um processador (PC’s e Mainframes). FI UC FI FD UP M FI-Fluxo de instruções M-Memória FD-Fluxo de dados UC-Unidade de Controle UP-Unidade de Processamento Figura 1 - Arquitetura SISD 1 processador executa SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 2.2. SIMD (Single Instruction Stream/Multiple Data Stream - Fluxo único de instruções/Fluxo múltiplo de dados) Envolve múltiplos processadores (escravos) sob o controle de uma única unidade de controle (mestre) executando simultaneamente a mesma instrução em diversos conjuntos de dados. Arquiteturas SIMD são utilizadas para manipulação de matrizes e processamento de imagens. Uma única unidade de controle busca a instrução que comanda varias unidades aritméticas que executam em paralelo, cada uma delas com seus próprios dados; Exemplo: Array de processadores (vetoriais e matriciais) e alguns supercomputadores; FI FI FD UP FI FD UP UC M M .. . FI .. . FD UP M Memória Figura 2 - Arquitetura SIMD 2.3. MISD (Multiple Instruction Stream/Single Data Stream instruções/Fluxo único de dados) Fluxo múltiplo de Envolve múltiplos processadores executando diferentes instruções em um único conjunto de dados. Geralmente, nenhuma arquitetura é classificada como MISD, isto é, não existem representantes desta categoria. Alguns autores consideram arquiteturas pipeline como exemplo deste tipo de organização. FD FI M FI UC FI UP FI M UC UP .. . .. . .. FI M FI UC Memória FD Figura 3 - Arquitetura MISD 2 UP SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 2.4. MIMD (Multiple Instruction Stream/Multiple Data Stream - Fluxo múltiplo de instruções/Fluxo múltiplo de dados) Envolve múltiplos processadores executando diferentes instruções em diferentes conjuntos de dados, de maneira independente. Esta classe engloba a maioria dos computadores paralelos. Os sistemas distribuídos estão nesta categoria, ou um conjunto de computadores independentes, cada um com seu contador de programa, conjunto de instruções e dados. UC FI FD UP FI M FD UC UP M .. . . .. .. . UC FI FD UP M FI FI .. . . FI Memória Figura 4 - Arquitetura MIMD Esta categoria dividi-se em duas categorias por tipo de memória: - Memória Compartilhada: Espaço de endereçamento compartilhado; - Memória Local ou Individual: espaço de endereçamento próprio. Figura 5 - Divisão MIMD quanto ao tipo de memória Esta divisão resume-se basicamente quanto à taxonomia de máquinas fracamente e fortemente acoplados como visto anteriormente. 3 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 2.5. MIMD versus SIMD Ambos os tipos de organizações computacionais apresentam vantagens e desvantagens. Arquiteturas SIMD, por apresentarem fluxo único de instruções, oferecem facilidades para a programação e depuração de programas paralelos. Além disso, seus elementos de processamento são simples, pois são destinados à computação de pequena granulação. Por outro lado, arquiteturas MIMD apresentam grande flexibilidade para a execução de algoritmos paralelos (arquiteturas SIMD geralmente se destinam a processamento de propósito específico), e apresentam bom desempenho em virtude de seus elementos de processamento serem assíncronos. A classificação de Flynn apresenta alguns problemas. Ela não é abrangente o suficiente para incluir alguns computadores modernos (por exemplo, processadores vetoriais e máquinas de fluxo de dados), falhando também, no que concerne a extensibilidade da classificação. Outro inconveniente desta classificação é a falta de hierarquia. A classificação MIMD, por exemplo, engloba quase todas as arquiteturas paralelas sem apresentar subníveis. No entanto, apesar de antiga (proposta em 1972), a classificação de Flynn é bastante concisa e a mais utilizada. A fim de acrescentar novas arquiteturas paralelas surgidas, sem descartar a classificação de Flynn (visto que esta é muito difundida), Duncan propôs uma classificação mais completa, e que permite apresentar uma visão geral dos estilos de organização para computadores paralelos da atualidade. 3. TIPOS DE SISTEMAS DISTRIBUÍDOS Os sistemas distribuídos podem ser divididos basicamente em três tipos: - Sistemas de Computação Distribuídos - Sistemas de Informação Distribuídos - Sistemas Distribuídos Pervasivos 3.1. Sistemas de Computação Distribuídos Muitos sistemas distribuídos são utilizados para computação de alto desempenho: - Computação em Cluster (Aglomerados): - São essencialmente um grupo de sistemas conectados através de uma LAN; - São homogêneos: mesmo SO, hardware idêntico ou muito similar; - Possui um único nó de gerenciamento. Computação em grade: muitos nós de diversas origens: - Heterogêneos; - Dispersos através de várias organizações; - Podem compreender uma rede wide-area; - Organizações virtuais. 4 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br Figura 6 - Sistema de computação distribuído 3.2. Sistemas de Informação Distribuídos Existe uma grande variedade de sistemas de informação que utilizam uma arquitetura distribuída. Parte dos sistemas distribuídos em uso atualmente integra sistemas legados. Uma classe importante de sistemas de informação distribuídos são os sistemas de processamento de transações: - Atomicidade: todas as operações serão bem sucedidas ou falham; - Consistência: a transação não viola invariantes do sistema (exemplo: lei da conservação do dinheiro em transferências no sistema bancário); - Isolamento: transações concorrentes não interferem umas com as outras: o resultado final para cada uma delas se apresentará como se todas as transações fossem executadas em sequência em certa ordem; - Durabilidade: uma vez confirmada à transação, as alterações são permanentes. 3.2.1. MONITOR DE PROCESSAMENTO DE TRANSAÇÃO Em muitos casos, a transação envolve vários servidores. O monitor de processamento de transação coordena a execução: Figura 7 - Monitor de processamento de transação 5 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 3.2.2. INTEGRAÇÃO DE APLICAÇÕES CORPORATIVAS Em Sistemas de Informação Distribuídos muitas vezes é necessário realizar a integração entre aplicações, seja ela para o aproveitamento de funcionalidades ou para compartilhamento de recursos. Assim, muitas vezes é necessária a comunicação direta entre aplicações: - Remote Procedure Call (RPC) - Message-Oriented Middleware (MOM) 3.3. Sistemas Distribuídos Pervasivos Uma nova geração de sistemas distribuídos tem emergindo atualmente, dentre eles sistemas de computação móvel e pervasivos. A Computação pervasiva considera o ambiente das máquinas e dos humanos como sendo apenas um. Nestes sistemas os equipamentos costumam a ser caracterizados por seu pequeno tamanho, pela alimentação por bateria, por sua mobilidade e por terem somente uma conexão sem fio. Figura 8 – Modelo de computação pervasiva Sistemas pervasivos possuem alguns requisitos diferenciados: - Ciência de contexto: flutuações do ambiente de execução e descoberta dinâmica de recursos e serviços; - Heterogeneidade de rede e de dispositivos; - Uso de baterias; - Interface com o usuário; - Problemas de segurança. 6 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br Figura 9 - Computação pervasiva Exemplos: Sistemas de casa: - Não devem requerer administrador: devem se auto-organizar; - Devem prover um espaço personalizado a cada usuário (agenda, fotos, música, vídeos). Sistemas para tratamento de saúde: - Onde e como os dados monitorados devem ser armazenados? - Como podemos prevenir a perda de dados essenciais? - O que é necessário para gerar e propagar alertas? - Como podemos garantir a segurança? - Como médicos podem prover feedback online? Figura 10 - Rede de sensores 7 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 4. ESTILOS ARQUITETÔNICOS Como ficou claro, os Sistemas Distribuídos são complexas peças de software, na qual os componentes estão espalhados por diversas máquinas. Estes sistemas devem ser organizados adequadamente definindo dois aspectos: - Organização lógica do conjunto de componentes - Organização dos componentes fisicamente Um componente é uma unidade modular com interfaces requeridas e fornecidas bem definidas que é substituível dentro do seu ambiente. Assim sendo, é necessário definir o modo como os componentes estão conectados, dados trocados entre componentes e a maneira como os componentes são configurados em conjunto para formar um sistema, podendo, arquitetonicamente, classificar-se da seguinte forma: - Arquiteturas em Camadas - Arquiteturas baseadas em objetos - Arquiteturas centradas em dados - Arquiteturas baseadas em eventos 4.1. Arquitetura em Camadas Nesta arquitetura a idéia básica é que um componente na camada Li tenha permissão de chamar componentes na camada subjacente Li-1, como acontece nos modelos de referência das redes de computadores. Figura 11 - Arquitetura em Camadas 8 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 4.2. Arquiteturas baseadas em objetos A idéia nesta arquitetura é que cada objeto corresponda ao que definimos como componente, e esses componentes sejam conectados por meio de chamada de procedimento (remota). O exemplo mais claro desta arquitetura é o Java RMI. Exemplo: Aplicação distribuída de uma rede de locadoras, onde clientes podem alugar DVDs em diversas filiais. Figura 12 - Arquitetura baseada em objetos 4.3. Arquiteturas centradas em dados Nesta arquitetura os processos se comunicam por meio de um repositório comum. 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. Figura 13 - Arquitetura centrada em dados 9 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br 4.4. Arquiteturas baseadas em eventos Nesta arquitetura processos demonstram o interesse por um evento ou conjunto de eventos 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 inscrevem para receber as informações deste gerenciador (Eventos e notificações). Exemplo: Consultas em vários bancos de dados. Figura 14 - Arquitetura baseada em eventos 4.5. Arquitetura organizacional de sistemas distribuídos Todas as arquiteturas apresentadas anteriormente são viáveis, contudo na prática são vistos de forma mais simplória. É importante compreender são colocados os componentes de software e como é estabelecida a interação entre as peças de software. Em geral são organizadas em três arquiteturas: - Arquiteturas Centralizadas: Cliente-Servidor(vídeo sob demanda, terminais bancários, etc) - Arquiteturas Descentralizadas: Peer-to-peer - P2P (Chord) - Arquiteturas Híbridas: Peer-to-peer - P2P(BitTorrent, PPLive, etc) 4.5.1. ARQUITETURAS CENTRALIZADAS O Modelo Cliente-Servidor é o melhor exemplo, na qual os processos são divididos em dois grupos: (Requisição → Resposta) - Servidor: processo que implementa um serviço específico. - Cliente: processo que requisita um serviço ao servidor. 10 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br Figura 15 - Cliente-Servidor Figura 16 - Requisição Cliente-Servidor Na arquitetura centralizada há que se considerar as Camadas de Aplicação (estilo arquitetônico). Considerando aplicações cliente-servidor que visam dar suporte ao acesso de usuários a banco de dados, este oferecem três níveis: - Nível de interface - Nível de processamento - Nível de dados Exemplo: Aplicativo de suporte a decisão Figura 17 - Camada de aplicação 11 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br Com a distinção entre três níveis lógicos, é preciso distribuir fisicamente uma aplicação cliente-servidor por várias máquinas: - Arquitetura de duas divisões físicas - Arquitetura de três divisões físicas 4.5.1.1. Arquitetura de duas divisões físicas Parte da interface é dependente de terminal. As aplicações controlam remotamente a apresentação dos dados. Figura 18 - Arquitetura de duas divisões físicas Nesse modelo, o software cliente não faz nenhum processamento exceto o necessário para apresentar a interface da aplicação. Para um formulário que precise ser completamente preenchido antes do processamento, o cliente pode verificar a correção e consistência. Exemplo: servidor; - Editor de texto com funções básicas no cliente e ferramentas avançadas no - PC’s conectados por meio de uma rede a um sistema de arquivos distribuídos ou a um banco de dados. - Consulta a Web, com browser um cliente pode construir gradativamente uma enorme cache em disco local com as páginas Web mais recentemente consultadas. 4.5.1.2. Arquitetura de três divisões físicas 12 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br Figura 19 - Servidor agindo como cliente 4.5.2. 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. A Interação entre os processos é simétrica: cada processo agirá como um cliente e um servidor ao mesmo tempo. Exemplo: Sistemas P2P Considerando o overlay e modo de construção destas arquiteturas elas podem constituir Redes Estruturadas com procedimento determinístico para definição do overlay, por exemplo, tabela de hash distribuída (DHT), ou Redes Não-estruturadas onde existem algoritmos aleatórios para construção da rede de sobreposição, gerando um grafo aleatório. 1 Figura 20 – Arquitetura P2P não estruturada utilizando o sistema Chord 1 Chord: Protocolo para localização de dados em redes P2P 13 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br Na arquitetura não estruturada as Threads solicitam aos vizinhos a visão parcial (pull) ou que empurram (push) a visão a seus vizinhos. Os algoritmos atualizam a vizinhança a cada determinada quantidade de informação enviada. Um dos problemas esta arquitetura é como encontrar os dados de maneira eficiente. Para isso, muitos sistemas utilizam nós especiais, que possuem um índice de itens de dados – Superpeers. Figura 21 - Sistema Chord Para melhorar a organização da estrutura os nós são organizados de forma hierárquica em uma rede de superpares. Figura 22 - Superpares 4.5.3. ARQUITETURAS HÍBRIDAS Esta arquitetura mescla características da arquitetura centralizada e descentralizada. É exemplo desta arquitetura a rede BitTorrent. 14 SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br Figura 23 - Rede BitTorrent Segundo Cohenm, 2003 ela está estruturada da seguinte forma: Figura 24 - Organização do BitTorrent Em suma, os sistemas distribuídos podem ser organizados de diferentes maneiras: - Software: Estilos arquitetônicos - Físico: Arquitetura de Sistemas 15