Você está na página 1de 49

Arquitetura de sistemas

distribuídos e estilos
arquitetônicos
Profª Vanice Canuto Cunha
Sistemas Distribuídos – UFMT - IC
Sumário

 Estilos Arquitetônicos
 Arquitetura de Sistemas
 Arquiteturas e Middleware
 Autogerenciamento em SDs
 Questões de Projeto de Aplicações Servidoras
Estilos Arquitetônicos

A arquitetura do software define como os vários componentes que o compõe


devem ser organizados e como devem interagir.
Estilos Arquitetônicos

Por que definir uma arquitetura?


 SDs são complexas peças de software
 Componentes estão espalhados por diversas máquinas
 Sistemas devem ser organizados adequadamente
O que são componentes?
 Um componente é uma unidade modular com interfaces requeridas e
fornecidas bem definidas que é substituível dentro do seu ambiente.
Estilos Arquitetônicos

Como é definido o Estilo Arquitetônico?


 É formulado em termos de componentes
 Modo como os componentes estão conectados
 Dados trocados entre componentes
 Maneira como os componentes são configurados em conjunto para
formar um sistema
Estilos Arquitetônicos

Serão vistos 4 Estilos Arquitetônicos


 Arquiteturas em Camadas
 Arquiteturas baseadas em objetos
 Arquiteturas centradas em dados
 Arquiteturas baseadas em eventos
Estilos Arquitetônicos

Arquiteturas em Camadas
 Ideia Básica: um componente na camada Li tem permissão de chamar
componentes na camada subjacente Li−1
Estilos Arquitetônicos

Arquiteturas baseadas em objetos


 Idea Básica: cada objeto corresponde ao que definimos como
componente, e esses componentes são conectados por meio de
chamada de procedimento (remota). Ex: Java RMI
Estilos Arquitetônicos

Arquiteturas centradas em dados


 Ideia Básica: processos se comunicam por meio de um repositório comum.
 Sistemas baseados na Web são em grande parte centrados nos dados.

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
Estilos Arquitetônicos

Arquiteturas centradas em dados


Estilos Arquitetônicos

Arquiteturas centradas em eventos


 Ideia Basica: Nesta arquitetura, processos demonstram o interesse por um
evento ou conjunto de eventos (processo se subscreve) 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 subescrevem
para receber as informações deste gerenciador
Estilos Arquitetônicos
Arquiteturas centradas em eventos
 Processos se comunicam por meio de propagação de eventos, que
eventualmente transportam dados;
 Processos são fracamente acoplados.
 Associado, em geral, a sistemas publicar/subscrever;
Arquiteturas de sistemas

 Dúvidas
 Como diversos sistemas distribuídos são realmente organizados?
 Onde são colocados os componentes de software?
 Como é estabelecida a interação entre os componentes de software?
Arquiteturas de sistemas

Três tipos de organizações


 Arquiteturas Centralizadas
 Cliente-Servidor: vídeo sob demanda, terminais bancários

 Arquiteturas Descentralizadas
 Peer-to-peer (P2P): Chord
 Arquiteturas Híbridas
 Peer-to-peer (P2P): BitTorrent, PPLive
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.
 Requisição Resposta
Modelo Cliente-Servidor
Modelo Cliente-Servidor
Comunicação Cliente-Servidor

Através de um protocolo simples sem conexão


 Utilizado quando a rede é razoavelmente confiável, como a maioria dasLANs;
 Vantagem: eficiência;
 Desvantagem: dificuldades de tornar a aplicação resistente a falhas de
transmissão;
 Se o cliente não recebe resposta, ele não tem como detectar se a mensagem
original foi perdida ou se isto ocorreu com a resposta;
 O cliente pode reenviar a requisição;
 Para requisições como ”retorne o saldo da minha conta” isto não gera
problemas mas para mensagens do tipo ”transfira 10.000,00 da minha conta” o
reenvio da requisição seria desastroso.
Comunicação Cliente-Servidor

Através de protocolo confiável orientado a conexão


 Desvantagem: desempenho relativamente baixo;
 Funciona muito bem em WANs;
 Exemplo: praticamente todas as aplicações na Internet
utilizam conexões TCP.
Modelo Cliente/Servidor

Uma aplicação CS pode ser estruturada em três níveis:


 1 - Interface com o usuário
 2 - Processamento
 3 - Dados
Arquiteturas Centralizadas - três
divisões físicas
Camada de Interface com o Usuário

 Consiste dos programas que permitem a interação dos usuários com a


aplicação;
 Pode ser muito simples, utilizando uma interface a caractere simples ou
mais sofisticado utilizando interfaces gráficas;
 Exemplo simples: interface de terminal onde o mainframe controla toda a
interação inclusive o monitor e teclado;
 Exemplo sofisticado: Interface de sistema que permite ao usuário arrastar o
ícone que representa o arquivo para uma lixeira provocando sua
exclusão.
Camada de Processamento

 Contêm a funcionalidade principal da aplicação;


 Exemplo: uma ferramenta de busca na Internet;
 Ela deve transformar a string que o usuário digitou em uma ou mais
consultas a um grande banco de dados e formatar os resultados
 obtidos em páginas HTML a serem apresentadas para o usuário.
Camada de Dados

 Na sua forma mais simples consiste de um sistema de arquivos mas é


comum que sejam utilizados banco de dados;
 Além de apenas armazenar dados pode também tratar sua consistência e
realizar funções como gerar uma notificação quando uma dada
condição ocorrer;
 Estas ações são muitas vezes implementadas através de stored
procedures.
Exemplo: Google
Arquiteturas Multidivididas

A distinção entre os três níveis lógicos sugere várias possibilidades para a


distribuição física de uma aplicação C/S;
 A organização mais simples requer apenas dois tipos de máquinas:
 1 - Cliente: que executa os programas que compreendem a interface com o
usuário;
 2 - Servidor: que implementa as camadas de processamento e de dados.
 Esta organização é conhecida como Cliente/Servidor em duas camadas;
 No entanto, diversas outras arquiteturas podem ser utilizadas.
Possíveis Organizações
Cliente/Servidor
Cluster de Servidores

 Conjunto de máquinas conectadas por uma rede de alta largura e


baixa latência onde cada máquina executa um ou mais servidores;
 Normalmente organizado logicamente em três camadas:
 1 - Comutador: responsável pelo roteamento das requisições de clientes;
 2 - Servidores de aplicação / computação;
 3 - Sistema distribuído de arquivos / banco de dados.
Cluster de Servidores
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!
 Interação entre os processos é simétrica: cada processo agirá como um
cliente e um servidor ao mesmo tempo
Arquiteturas de Sistemas
Arquiteturas Descentralizadas

Arquiteturas Descentralizadas - Sistemas P2P (Peer-to-peer)


Dúvidas
 Como organizar os peers em uma rede de sobreposição?
 Como difundir o conteúdo?
 Como incentivar os peers a colaborarem?
Arquiteturas de Sistemas
Arquiteturas Descentralizadas

Arquiteturas Descentralizadas - Sistemas P2P (Peer-to-peer)


Considerando a sobreposição e modo de
construção
Redes Estruturadas -> procedimentos determinísticos para
definição da sobreposição. Ex: Tabela de Hash Distribuída
(DHT - Distributed Hash Table)
Redes Não-estruturadas -> algoritmos aleatórios para
construção da rede de sobreposição, gerando um grafo
aleatório
Arquiteturas Descentralizadas - Arquiteturas P2P Estruturadas

• Sistema Chord (Soica et


al,2003)
• Nós estão logicamente
organizados em um anel
• Item de dado com
chave k é mapeado
para o nó com
LOOKUP(k)
Arquiteturas Descentralizadas -
Arquiteturas P2P Não-Estruturadas

• Algoritmos aleatórios
• Cada peer possui uma
lista de vizinhos (visão
parcial)
• Para encontrar dados,
inundar a rede (no pior
caso)
• Importante atualizar a
lista de vizinhos. Mas
como?
Arquiteturas Descentralizadas -
Arquiteturas P2P Não-Estruturadas
 Um dos problemas: como encontrar os dados de maneira eficiente
 Muitos sistemas utilizam nós especiais, que possuem um índice de itens de
dados -> Superpeers
 Como associar peers comuns a estes superpeers?
 Como escolher estes peers?
Arquiteturas Descentralizadas -
Arquiteturas P2P Não-Estruturadas
Arquiteturas Descentralizadas -
Arquiteturas P2P Híbridas
Arquiteturas Descentralizadas -
Arquiteturas P2P Híbridas
Arquiteturas × Middleware

 Cada middleware possui um estilo arquitetônico específico, com o


objetivo de simplificar o projeto de aplicações
 Como fazer com que um middleware genérico se adapte a aplicação?
 Interceptores podem ser usados para interromper o fluxo de execução
para que uma procedimento específico da aplicação possa ser
executado
Arquiteturas × Middleware
Autogerenciamento em SDs

 Sistemas distribuídos devem ser capazes de reagir a mudanças em seu


ambiente
 Ex. : Troca dinâmica de políticas de alocação de recursos;
 Troca de codificação voz/vídeo para se adequar a condições de
congestionamento na rede
 Desafio: Deixar que o comportamento reativo ocorra sem intervenção
humana!
 Ideia: Através de observações do comportamento do SD, componentes
de estimativa de medições e de análise coletam dados e realimentam o
sistema, modificando parâmetros controláveis.
Autogerenciamento em SDs

 Ex: Astrolabe: ferramenta para observação de SDs. Resultados


podem ser usados para alimentar um componente de análise
para possíveis ações corretivas
Questões de Projeto de Aplicações
Servidoras
Organização de Servidores
 Servidor interativo: o próprio servidor manipula a requisição e, se
necessário, retorna uma resposta ao cliente;
 Servidor concorrente: repassa para uma thread ou processo em
separado a requisição e imediatamente espera pela próxima requisição.
Vinculação Cliente-Servidor

 Através de portas conhecidas designadas pela Autoridade para


Atribuição de Números na Internet (Iana). Ex: FTP-21, HTTP-80
 Através de um daemon que registra os servidores em execução;
 Através de um superservidor, que escuta em várias portas e repassa a
requisição a um servidor específico.
Vinculação Cliente-Servidor
Interrupção do Servidor

 Exemplo: usuário deseja interromper a transferência de um enorme arquivo


para o servidor FTP;
 Uma abordagem é o usuário sair abruptamente da aplicação cliente, o
que automaticamente interromperá a conexão com o servidor;
 O servidor encerrará a conexão antiga, entendendo que o cliente falhou;
 Esta prática á muito adotada na Internet atual...
 Outra alternativa é permitir o envio de dados fora da banda;
 Neste caso o servidor pode escutar em uma porta de controle separada
da qual passam os dados normais.
Servidores Com e Sem Estado

Sem Manter Estado:


 Não é mantida nenhuma informação a respeito dos clientes e suas
requisições;
 Exemplo: um servidor Web tipicamente não armazena estado. Após a
requisição ser processada, o servidor Web esquece completamente do
cliente;
 Cada requisição deve ser auto-contida;
 Fácil recuperação em caso de falha
Servidores Com e Sem Estado

Mantendo Estado:
 O servidor mantêm informações persistentes sobre seus clientes;
 Exemplo: um servidor de arquivo que sabe quais clientes possuem quais
arquivos abertos;
 Normalmente leva a um melhor desempenho na execução das
operações disponibilizadas;
 Em caso de falha, deve-se recurar o estado do servidor
Resumo da aula

 SDs podem ser organizados de diferentes maneiras.


 Software: : Estilos arquitetônicos
 Físico: : Arquitetura de sistemas
 O projeto de sistemas autogerenciadores visa a adaptação do SD
ao ambiente em que está sendo executado, obtendo um maior
desempenho do mesmo

Você também pode gostar