15
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 ...ricardobarcelar.com.br/aulas/sd/3-arquitetura_sd.pdf · que permite apresentar uma visão geral dos estilos de ... dependem

  • Upload
    trannga

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

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 MFI

MUP

Memória

FD

FD

FD

...

...

M

UC

...

UC

FI

FIFI

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 - Monitor de 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 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.

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