Arquiteturas de
Sistemas
Distribuídos
Capítulo 2
Porque definir uma arquitetura?
• SDs são complexas peças de software
• Componentes estão espalhados por diversas máquinas
• Sistemas devem ser organizados adequadamente!
• Organização lógica do conjunto de componentes
• Como organizar os componentes fisicamente?
Estilos Arquitetônicos
• Um estilo arquitetônico é formulado nos seguintes termos:
• Componentes da arquitetura.
• Modo como os componentes estão conectados.
• Modo como os dados são trocados entre os componentes.
• Modo como os componentes são configurados.
• Um componente é uma unidade modular com interfaces requeridas e fornecidas bem definidas que é substituível dentro do seu ambiente, respeitando suas interfaces.
• Um conector é um mecanismo que serve de mediador da comunicação ou da cooperação entre componentes.
Estilos Arquitetônicos
• Usando componentes e conectores, podemos chegar a varias
configurações que são classificadas como estilos
arquitetônicos.
• Arquiteturas em Camadas (AC)
• Arquiteturas Baseadas em Objetos (ABO)
• Arquiteturas Centradas em Dados (ACD)
Arquitetura em Camadas (AC)
• Idéia Básica: um componente na camada Li tem permissão de chamar componentes na camada subjacente Li-1, mas não o contrário. Camada L Camada L-1 Camada 2 Camada 1 Fluxo de resposta Fluxo de requisição
• O controle flui de camada para camada: requisições descem pela hierarquia.
• Resultados fluem para a camada superior.
Arquitetura Baseada em Objetos (ABO)
• Idéia Básica: Cada objeto corresponde ao que definimos
como componente, e esses componentes são conectados por meio de chamada de procedimento (remota).
• Amplamente utilizada para sistemas de software de grande porte.
• Exemplo: Aplicação
distribuída de uma rede de locadoras, onde clientes podem alugar DVDs em
Arquitetura Centradas em Dados (ACD)
• Idéia Básica: Processos se comunicam por meio de um
repositório comum.
• Sistemas distribuídos baseados na Web, em grande parte,
Arquitetura Baseadas em Eventos (ABE)
• Idéia Básica: Processos se comunicam por meio da
propagação de eventos que também podem transportar dados.
• Sistemas publicar/subscrever: Processos publicam eventos e o middleware assegura que somente os processos que se
subscreveram para esses eventos os receberão.
• Processos fracamente
acoplados: processos não se referem explicitamente uns aos outros
Arquitetura de Sistemas
•
Três Tipos:
•
Centralizadas
•
Descentralizadas
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.
11
Arquiteturas Centralizadas
• Como estabelecer a comunicação?
1) Protocolo Simples: Sem conexão
• Protocolo simples, que funciona bem em redes locais.
• Cliente empacota uma mensagem para o servidor diretamente.
• Eficiente se NÃO ocorrem problemas.
• Cliente pode reenviar a requisição quando não obter nenhuma resposta.
• Problemas:
(a) Cliente não pode detectar se a mensagem de requisição original se perdeu; ou
(b) A transmissão da resposta falhou. Se a resposta se perdeu, uma nova requisição pode resultar em executar a operação duas vezes.
Arquiteturas Centralizadas
• Exemplos: Operações Bancárias
• Operação de transferência monetária: Inaceitável a ocorrência do problema (b).
• Visualização de saldo bancário: Aceitável, o problema (a), reenviando a requisição.
• Quando uma operação pode ser repetida várias vezes sem
Arquiteturas Centralizadas
• Como estabelecer a comunicação?
2) Protocolo Confiável: orientado a conexão
• Não é inteiramente adequado à redes locais devido a seu desempenho relativamente lento.
• Solução funciona bem em sistemas de longa distância.
• Sempre que um cliente requisita um serviço, primeiro se estabelece conexão com o servidor e depois se envia a requisição.
• O servidor usa a mesma conexão para enviar a mensagem de resposta, e assim a conexão é encerrada.
Arquiteturas Centralizadas
• Como distinguir entre cliente e servidor?
• Exemplo: Servidor de banco de dados distribuído → repassa
requisições a servidores de arquivos.
Servidor de Banco de Dados Servidor de Arquivos 1 Servidor de Arquivos N Respo sta Respos ta Clientes Clientes Funciona como Cliente do Servidor de BD e como Servidor dos clientes.
Arquiteturas Centralizadas
• Considerando que muitas aplicações visam dar suporte ao acesso de usuários a banco de dados, existem três níveis de distinção:
• Mantêm os dados sobre os quais as aplicações agem em suas operações.
• Mais comum utilizar um banco de dados.
• Normalmente implementado no lado servidor.
• Dados costumam ser persistentes, ou seja, ainda que nenhuma aplicação esteja sendo executada, os dados estarão armazenados para a próxima reutilização. Nível de dados
• Normalmente contém as aplicações. Nível de processamento
• Consiste em programas que permitam aos usuários finais interagir com aplicações.
• Diversos níveis de complexidade. Nível de interface de
usuário
Características: Nível
Arquiteturas Centralizadas
• Exemplo: Mecanismo de busca na internet
1) Usuário digita uma seqüência de palavras-chave. 2) Páginas da web previamente pesquisadas e indexadas.
3) Núcleo do mecanismo de busca transforma a seqüência de
4) Mecanismo de busca ordena os
Arquiteturas Centralizadas Multidivididas
• A distinção em três níveis lógicos, sugere várias possibilidades de distribuição física, dentre elas:
• Arquitetura de duas divisões físicas, ou
• Arquitetura de três divisões físicas.
• A organização mais simples é ter só dois tipos de máquinas:
1) Uma máquina cliente que contém apenas os programas que
implementam o nível (ou parte dele) de interface de usuário.
Arquiteturas Centralizadas Multidivididas Arquitetura de duas divisões físicas
• Alternativas de organização cliente-servidor
• Na máquina cliente, apenas parte da interface é dependente de terminal de cliente.
Arquiteturas Centralizadas Multidivididas Arquitetura de duas divisões físicas
• Alternativas de organização cliente-servidor
• O software cliente não faz nenhum
processamento exceto o necessário para apresentar a interface da aplicação.
Arquiteturas Centralizadas Multidivididas Arquitetura de duas divisões físicas
• Alternativas de organização cliente-servidor
• Formulário que precise ser completamente
preenchido antes do processamento.
Arquiteturas Centralizadas Multidivididas Arquitetura de duas divisões físicas
• Alternativas de organização cliente-servidor
• Computadores conectados por meio de uma
rede a um sistema de arquivos distribuídos ou a um banco de dados.
Arquiteturas Centralizadas Multidivididas Arquitetura de duas divisões físicas
• Alternativas de organização cliente-servidor
• Consulta a Web, com browser um cliente pode
construir gradativamente uma enorme cache em disco local com as páginas Web consultadas
Arquiteturas Centralizadas Multidivididas Arquitetura de duas divisões físicas
• Ter mais funcionalidade na máquina cliente torna o software do lado do cliente mais propenso a erros e mais dependente da plataforma do próprio cliente, por exemplo, sistema operacional (Clientes Gordos).
• Sob o ponto de vista de gerenciamento temos:
Cl
ien
tes
G
or
do
s
Cl
ien
tes
M
ag
ro
s
Arquiteturas Centralizadas Multidivididas Arquitetura de três divisões físicas
• Programas que formam o nível de processamento residem em
Arquiteturas Descentralizadas
• Cliente-servidor possuem duas distribuições:
• Distribuição vertical:
• Componentes logicamente diferentes em máquinas diferentes.
• Cada parte é projetada para um grupo específico de funções.
• Distribuição horizontal:
• Cliente ou servidor pode ser fisicamente
subdividido em partes logicamente equivalentes.
• Cada parte está operando em sua porção
própria de dados do conjunto completo, o que equilibra a carga.
Arquiteturas Descentralizadas: P2P
• Processos são todos iguais.
• Grande parte da interação entre processos é simétrica: Cada processo age como cliente e servidor ao mesmo tempo (servente).
• Formado por um conjunto de nós, organizados em um overlay ou rede
de sobreposição.
• Rede na qual os nós são os processos e os enlaces representam os canais de comunicação possíveis.
• Um processo não pode se comunicar diretamente com outro processo: deve enviar mensagens por meio dos canais de comunicação
disponíveis.
não-Arquiteturas Descentralizadas: P2P
• Dois nós que são vizinhos na rede overlay não são necessariamente vizinhos na rede física.
• Considerando o overlay e modo de construção
• Redes Estruturadas:
• Procedimento determinístico para definição da rede de superposição, p.ex, tabela de hash distribuída (DHT).
• Conteúdo é depositado não em nós aleatórios mas em localizações específicas, o que tornará eventuais consultas mais eficientes.
• A topologia da rede de sobreposição é controlada.
• Redes Não-estruturadas:
• Algoritmos aleatórios para construção da rede de sobreposição, gerando um grafo aleatório.
• Cada nó mantêm uma lista de vizinhos: visão parcial.
Gerenciamento de Topologia
• Embora pareça, sistemas P2P estruturados e não-estruturados não
formam classes estritamente independentes.
• É possível construir e manter topologias específica de redes de sobreposição.
• Como? Abordagem em duas camadas
P2P não-estruturado P2P estruturado
Superpares (Superpeers)
• Solução: Muitos sistemas mantêm nós especiais que armazenam um índice de itens de dados, denominados
superpares.
• Superpares são organizados em uma rede P2P (rede de superpares), o que resulta em uma organização
• A medida que uma rede não estruturada cresce, pode-se tornar difícil a localização de itens de dados já que não há um modo determinístico para se rotear a mensagem.
• Apenas o modo aleatório, enviando a requisição à todos os nós:
Inundação de Mensagens
Resposta P2P não-estruturada sem superpar
P2P não-estruturada com superpar Requisição
Arquiteturas Híbridas
• Exemplo: Sistemas
distribuídos colaborativos.
• Principal objetivo é iniciar a troca de informações.
• Após adição do nó na rede, a distribuição dos dados é feita de forma descentralizada.
• BitTorrent
• Sistemas distribuídos nas quais soluções clientes-servidor são combinadas com arquiteturas descentralizadas.
Arquiteturas Híbridas: Bit Torrent
Rastreador: servidor mantém uma contabilidade precisa de nós ativos que têm o arquivo
requisitado (ou porções dele) Um arquivo torrent contém as informações
necessárias para transferir um arquivo específico.