Buscar

ARQUITETURA DE SISTEMAS DISTRIBUIDOS (9)

Prévia do material em texto

SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
1 
 
- 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 processador executa 
seqüencialmente um conjunto de instruções sobre um conjunto de dados. 
Exemplo: Computadores com um processador (PC’s e Mainframes). 
 
 
 
UC UP M 
FI 
FI-Fluxo de instruções 
UP-Unidade de Processamento 
FD-Fluxo de dados 
M-Memória 
UC-Unidade de Controle 
FI FD 
 
Figura 1 - Arquitetura SISD 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
2 
 
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; 
 
UC
UP M
FI
MUP
Memória
FD
FD
FD
.
.
.
UP
.
.
.
M
FI
FI
FI
 
Figura 2 - Arquitetura SIMD 
 
2.3. MISD (Multiple Instruction Stream/Single Data Stream - Fluxo múltiplo de 
instruções/Fluxo único de dados) 
 
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. 
 
 
 
UC UP 
UP 
. 
. 
UP 
UC 
M 
M 
Memória 
. 
. 
. 
M 
. 
. 
. 
UC 
FD 
FI 
FI 
FI FI 
FI 
FI 
FD 
 
Figura 3 - Arquitetura MISD 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
3 
 
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 UP M
FI
MUP
Memória
FD
FD
FD
.
.
.
.
.
.
M
UC
.
.
.
UC
FI
FI
FI
FI
FI
..
.
.
UP
 
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. 
 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
4 
 
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. 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
5 
 
 
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 - Monitorde processamento de transação 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
6 
 
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. 
 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
7 
 
 
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 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
8 
 
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 
 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
9 
 
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 
 
 
 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
10 
 
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. 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
11 
 
 
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 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
12 
 
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: - Editor de texto com funções básicas no cliente e ferramentas avançadas no 
servidor; 
 - 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 
 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
13 
 
 
Figura 19 - Servidor agindo como cliente 
 
4.5.2. ARQUITETURAS DESCENTRALIZADAS 
 
 Clientes e servidores são fisicamente subdivididos em partes logicamente equivalentes, mas 
cada parteestá 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. 
 
 
Figura 20 – Arquitetura P2P não estruturada utilizando o sistema Chord
1
 
 
1 Chord: Protocolo para localização de dados em redes P2P 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
14 
 
 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. 
 
SISTEMAS DISTRIBUÍDOS 
Prof. Ricardo Rodrigues Barcelar 
http://www.ricardobarcelar.com.br 
 
 
15 
 
 
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

Continue navegando