Você está na página 1de 49

Arquitetura de sistemas

distribudos e estilos
arquitetnicos
Prof Vanice Canuto Cunha
Sistemas Distribudos UFMT - IC
Sumrio

Estilos Arquitetnicos
Arquitetura de Sistemas
Arquiteturas e Middleware
Autogerenciamento em SDs
Questes de Projeto de Aplicaes Servidoras
Estilos Arquitetnicos

A arquitetura do software define como os vrios componentes que o compe


devem ser organizados e como devem interagir.
Estilos Arquitetnicos

Por que definir uma arquitetura?


SDs so complexas peas de software
Componentes esto espalhados por diversas mquinas
Sistemas devem ser organizados adequadamente
O que so componentes?
Um componente uma unidade modular com interfaces requeridas e
fornecidas bem definidas que substituvel dentro do seu ambiente.
Estilos Arquitetnicos

Como definido o Estilo Arquitetnico?


formulado em termos de componentes
Modo como os componentes esto conectados
Dados trocados entre componentes
Maneira como os componentes so configurados em conjunto para
formar um sistema
Estilos Arquitetnicos

Sero vistos 4 Estilos Arquitetnicos


Arquiteturas em Camadas
Arquiteturas baseadas em objetos
Arquiteturas centradas em dados
Arquiteturas baseadas em eventos
Estilos Arquitetnicos

Arquiteturas em Camadas
Ideia Bsica: um componente na camada Li tem permisso de chamar
componentes na camada subjacente Li1
Estilos Arquitetnicos

Arquiteturas baseadas em objetos


Idea Bsica: cada objeto corresponde ao que definimos como
componente, e esses componentes so conectados por meio de
chamada de procedimento (remota). Ex: Java RMI
Estilos Arquitetnicos

Arquiteturas centradas em dados


Ideia Bsica: processos se comunicam por meio de um repositrio comum.
Sistemas baseados na Web so em grande parte centrados nos dados.

Exemplo: Grande conjunto de aplicaes em rede que dependem de um


sistema distribudo de arquivos compartilhados o qual praticamente toda a
comunicao ocorre por meio de arquivos: Web
Estilos Arquitetnicos

Arquiteturas centradas em dados


Estilos Arquitetnicos

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
notificao de qualquer um desses eventos, gerados por um processo
notificador.
Em outras palavras, o produtor publica uma informao em um
gerenciador de eventos (middleware),e os consumidores se subescrevem
para receber as informaes deste gerenciador
Estilos Arquitetnicos
Arquiteturas centradas em eventos
Processos se comunicam por meio de propagao de eventos, que
eventualmente transportam dados;
Processos so fracamente acoplados.
Associado, em geral, a sistemas publicar/subscrever;
Arquiteturas de sistemas

Dvidas
Como diversos sistemas distribudos so realmente organizados?
Onde so colocados os componentes de software?
Como estabelecida a interao entre os componentes de software?
Arquiteturas de sistemas

Trs tipos de organizaes


Arquiteturas Centralizadas
Cliente-Servidor: vdeo sob demanda, terminais bancrios

Arquiteturas Descentralizadas
Peer-to-peer (P2P): Chord
Arquiteturas Hbridas
Peer-to-peer (P2P): BitTorrent, PPLive
Arquiteturas Centralizadas

Modelo Cliente-Servidor
Processos so divididos em dois grupos (possvel sobreposio)
Servidor: processo que implementa um servio especfico
Cliente: processo que requisita um servio ao servidor.
Requisio Resposta
Modelo Cliente-Servidor
Modelo Cliente-Servidor
Comunicao Cliente-Servidor

Atravs de um protocolo simples sem conexo


Utilizado quando a rede razoavelmente confivel, como a maioria dasLANs;
Vantagem: eficincia;
Desvantagem: dificuldades de tornar a aplicao resistente a falhas de
transmisso;
Se o cliente no recebe resposta, ele no tem como detectar se a mensagem
original foi perdida ou se isto ocorreu com a resposta;
O cliente pode reenviar a requisio;
Para requisies como retorne o saldo da minha conta isto no gera
problemas mas para mensagens do tipo transfira 10.000,00 da minha conta o
reenvio da requisio seria desastroso.
Comunicao Cliente-Servidor

Atravs de protocolo confivel orientado a conexo


Desvantagem: desempenho relativamente baixo;
Funciona muito bem em WANs;
Exemplo: praticamente todas as aplicaes na Internet
utilizam conexes TCP.
Modelo Cliente/Servidor

Uma aplicao CS pode ser estruturada em trs nveis:


1 - Interface com o usurio
2 - Processamento
3 - Dados
Arquiteturas Centralizadas - trs
divises fsicas
Camada de Interface com o Usurio

Consiste dos programas que permitem a interao dos usurios com a


aplicao;
Pode ser muito simples, utilizando uma interface a caractere simples ou
mais sofisticado utilizando interfaces grficas;
Exemplo simples: interface de terminal onde o mainframe controla toda a
interao inclusive o monitor e teclado;
Exemplo sofisticado: Interface de sistema que permite ao usurio arrastar o
cone que representa o arquivo para uma lixeira provocando sua
excluso.
Camada de Processamento

Contm a funcionalidade principal da aplicao;


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

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


comum que sejam utilizados banco de dados;
Alm de apenas armazenar dados pode tambm tratar sua consistncia e
realizar funes como gerar uma notificao quando uma dada
condio ocorrer;
Estas aes so muitas vezes implementadas atravs de stored
procedures.
Exemplo: Google
Arquiteturas Multidivididas

A distino entre os trs nveis lgicos sugere vrias possibilidades para a


distribuio fsica de uma aplicao C/S;
A organizao mais simples requer apenas dois tipos de mquinas:
1 - Cliente: que executa os programas que compreendem a interface com o
usurio;
2 - Servidor: que implementa as camadas de processamento e de dados.
Esta organizao conhecida como Cliente/Servidor em duas camadas;
No entanto, diversas outras arquiteturas podem ser utilizadas.
Possveis Organizaes
Cliente/Servidor
Cluster de Servidores

Conjunto de mquinas conectadas por uma rede de alta largura e


baixa latncia onde cada mquina executa um ou mais servidores;
Normalmente organizado logicamente em trs camadas:
1 - Comutador: responsvel pelo roteamento das requisies de clientes;
2 - Servidores de aplicao / computao;
3 - Sistema distribudo de arquivos / banco de dados.
Cluster de Servidores
Arquiteturas Descentralizadas

Clientes e servidores so fisicamente subdivididos em partes logicamente


equivalentes, mas cada parte est operando em sua prpria poro do
conjunto completo de dados, o que equilibra a carga!
Interao entre os processos simtrica: cada processo agir como um
cliente e um servidor ao mesmo tempo
Arquiteturas de Sistemas
Arquiteturas Descentralizadas

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


Dvidas
Como organizar os peers em uma rede de sobreposio?
Como difundir o contedo?
Como incentivar os peers a colaborarem?
Arquiteturas de Sistemas
Arquiteturas Descentralizadas

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


Considerando a sobreposio e modo de
construo
Redes Estruturadas -> procedimentos determinsticos para
definio da sobreposio. Ex: Tabela de Hash Distribuda
(DHT - Distributed Hash Table)
Redes No-estruturadas -> algoritmos aleatrios para
construo da rede de sobreposio, gerando um grafo
aleatrio
Arquiteturas Descentralizadas - Arquiteturas P2P Estruturadas

Sistema Chord (Soica et


al,2003)
Ns esto logicamente
organizados em um anel
Item de dado com
chave k mapeado
para o n com
LOOKUP(k)
Arquiteturas Descentralizadas -
Arquiteturas P2P No-Estruturadas

Algoritmos aleatrios
Cada peer possui uma
lista de vizinhos (viso
parcial)
Para encontrar dados,
inundar a rede (no pior
caso)
Importante atualizar a
lista de vizinhos. Mas
como?
Arquiteturas Descentralizadas -
Arquiteturas P2P No-Estruturadas
Um dos problemas: como encontrar os dados de maneira eficiente
Muitos sistemas utilizam ns 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 No-Estruturadas
Arquiteturas Descentralizadas -
Arquiteturas P2P Hbridas
Arquiteturas Descentralizadas -
Arquiteturas P2P Hbridas
Arquiteturas Middleware

Cada middleware possui um estilo arquitetnico especfico, com o


objetivo de simplificar o projeto de aplicaes
Como fazer com que um middleware genrico se adapte a aplicao?
Interceptores podem ser usados para interromper o fluxo de execuo
para que uma procedimento especfico da aplicao possa ser
executado
Arquiteturas Middleware
Autogerenciamento em SDs

Sistemas distribudos devem ser capazes de reagir a mudanas em seu


ambiente
Ex. : Troca dinmica de polticas de alocao de recursos;
Troca de codificao voz/vdeo para se adequar a condies de
congestionamento na rede
Desafio: Deixar que o comportamento reativo ocorra sem interveno
humana!
Ideia: Atravs de observaes do comportamento do SD, componentes
de estimativa de medies e de anlise coletam dados e realimentam o
sistema, modificando parmetros controlveis.
Autogerenciamento em SDs

Ex: Astrolabe: ferramenta para observao de SDs. Resultados


podem ser usados para alimentar um componente de anlise
para possveis aes corretivas
Questes de Projeto de Aplicaes
Servidoras
Organizao de Servidores
Servidor interativo: o prprio servidor manipula a requisio e, se
necessrio, retorna uma resposta ao cliente;
Servidor concorrente: repassa para uma thread ou processo em
separado a requisio e imediatamente espera pela prxima requisio.
Vinculao Cliente-Servidor

Atravs de portas conhecidas designadas pela Autoridade para


Atribuio de Nmeros na Internet (Iana). Ex: FTP-21, HTTP-80
Atravs de um daemon que registra os servidores em execuo;
Atravs de um superservidor, que escuta em vrias portas e repassa a
requisio a um servidor especfico.
Vinculao Cliente-Servidor
Interrupo do Servidor

Exemplo: usurio deseja interromper a transferncia de um enorme arquivo


para o servidor FTP;
Uma abordagem o usurio sair abruptamente da aplicao cliente, o
que automaticamente interromper a conexo com o servidor;
O servidor encerrar a conexo antiga, entendendo que o cliente falhou;
Esta prtica 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:


No mantida nenhuma informao a respeito dos clientes e suas
requisies;
Exemplo: um servidor Web tipicamente no armazena estado. Aps a
requisio ser processada, o servidor Web esquece completamente do
cliente;
Cada requisio deve ser auto-contida;
Fcil recuperao em caso de falha
Servidores Com e Sem Estado

Mantendo Estado:
O servidor mantm informaes persistentes sobre seus clientes;
Exemplo: um servidor de arquivo que sabe quais clientes possuem quais
arquivos abertos;
Normalmente leva a um melhor desempenho na execuo das
operaes disponibilizadas;
Em caso de falha, deve-se recurar o estado do servidor
Resumo da aula

SDs podem ser organizados de diferentes maneiras.


Software: : Estilos arquitetnicos
Fsico: : Arquitetura de sistemas
O projeto de sistemas autogerenciadores visa a adaptao do SD
ao ambiente em que est sendo executado, obtendo um maior
desempenho do mesmo

Você também pode gostar