Aula 3 - Modelos para construção de Sistemas Distribuídos

Propaganda
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
Download