Você está na página 1de 85

Sistemas Distribuídos – Aula 02:

Arquitetura de Sistemas Distribuídos

Arquiteturas de SD´s

Prof. Msc Gustavo Molina


2

Estilos
Arquitetônicos
3

Introdução
▫ Como é organizado um
sistema distribuído?

▪ Distinguir organização lógica


dos componentes de software;

▪ Realização física;

▫ Sistemas distribuídos

▪ Componentes de software.

▫ Arquitetura de software.
4

Introdução
▫ Arquitetura de software (ou ▫ Arquiteturas centralizadas
de sistema)
Tradicionais. Um único servidor
implementa a maioria dos componentes;
▪ Arquiteturas
centralizadas ▫ Arquiteturas
descentralizadas
▪ Arquiteturas
descentralizadas As máquina desempenham papéis mais ou
menos iguais, bem como organizações
híbridas.

[...] uma meta importante de
sistemas distribuídos é
separar aplicações das
plataformas subjacentes
provendo uma camada de
middleware.

5
6
7

Middleware
▫ É necessário conseguir
um
middleware adaptativo;

▫ Sistemas distribuídos
devem monitorar seu
funcionamento.

▪ Sistemas autonômicos.
8

Estilos
Arquitetônicos
O quanto é crucial adotar uma
arquitetura de
software para um
projeto?
9
10

Estilo ▫ Formulado com base nos componentes


Arquitetôn ico que o compõe;

Composição do ▫ A forma de conexão dos


Sistema componentes
Distribuído c o m
também é importante;
base n o estilo
arquitetônico ▫ Os dados trocados entre os componentes;

▫ A forma de confguração
desse conjunto de elementos;

Um componente é uma
unidade modular com
interfaces requeridas e
fornecidas bem definidas que
é substituível dentro de seu
ambiente
1
1
12

C o mpone nt e
▫ É passível de
substituição;
▫ Necessário respeitar as
interfaces;

E os conectores?

Conector [...] é descrito como
um mecanismo que serve de
mediador da comunicação ou
da cooperação entre
componentes

1
3
14

Co mpone nt e s e
Conectores
15

Importantes
Estilos
Arquitetôn icos
1. Arquiteturas em
camadas;
Configurações a
2. Arquiteturas baseadas em
partir de objetos;
Com po nentes e
Conectores
3. Arquiteturas centradas em
dados;

4. Arquiteturas baseadas em
eventos;
1
6

Arquitetu ras ▫ Componentes são organizados em


em camadas;
camadas
▫ O componente da camada Li pode
chamar um componente subjacente Li-
1;

▫ Modelo amplamente adotado


pela comunidade de redes;

▫ Requisições descem pela


hierarquia;
1
7

Arquitetu ras
em
camadas
1
8

Arquitetu ras
em
camadas
19

Arquitetura
baseada ▫ Cada objeto corresponde a defnição de
em um
objetos componente;

▫ Os componentes são conectados por


uma chamada de procedimento
remoto;

▫ É um modelo de arquitetura que se ajusta


ao sistema cliente-servidor;

▫ Confguram-se em um estilo importante


para sistemas de software de grande
porte.
20

Arquitetura
baseada
em
objetos
2
1

Arquitetura
centrada e m ▫ Processos se por de
dados comunicam meio um
repositório comum;
▫ Tem grau de importância similar as baseadas
em camadas e objetos;

▫ Funcionamento:

Trabalha com o compartilhamento de arquivos.


2
2

Arquitetura
centrada e m
dados
23

Arquitetura
baseada ▫ Processos se comunicam por meio da
em propagação
eventos de eventos;

▫ Podem também transportar dados;

▫ Associa-se a sistemas publica/subscrever;

▫ Processos fracamente acoplados;

▪ Podem ser desacoplados;

▪ Ou, referencialmente desacoplados.



A ideia básica é que
processos publiquem
eventos após os quais o
middleware assegura que
somente os processos que se
subscreveram para esses
eventos os receberão.
2
4
25

Arquitetura
baseada
em
eventos

Arquiteturas baseadas em eventos, podem se


complementar com arquiteturas baseadas em
dados
26

Espaços compartilhados
de Dados

▫ Os processos são desacoplados


no tempo;

▪ Não precisa que ambos


estejam ativos para haver
comunicação;

▫ Utilizam interfaces semelhantes


à SQL;

▪ Os dados são acessados


por descrição;

▫ Não precisam ser


acessados por referência
explícita.

O que torna essas
arquitetura de software
importantes para sistemas
distribuídos é que todas elas
visam obter transparência
de distribuição, em um nível
razoável.
27
28

Arquiteturas de
Sistemas
Arquitetura
s

Decidir a respeito de
componentes de software, sua
interação e sua colocação leva
a um exemplo de uma
arquitetura de software
também denominada
arquitetura de sistema.
29
30

Arquiteturas
Centralizadas
Arquiteturas de
Sistemas

[...] pensar em termos de
clientes que requisitam
serviços de servidores nos
ajuda a entender e
gerenciar a complexidade
de sistemas distribuídos [...]

31
32

Servidor e

Cliente
Servidor
▪ É um processo implementa
que serviço um
específco;
▫ Cliente

▪ É um processo que requisita um


serviço de um servidor enviando-lhe
uma requisição e, na sequência,
esperando pela resposta do servidor.
33

Comportamento

Comportamento de
requisição-resposta
Fases da
Requisição - 1. Um cliente requisita um
Resposta serviço;
▪ Empacota uma mensagem para o
servidor identifcando o serviço que
quer, junto com os dados necessários.

2. O servidor sempre vai esperar a chegada


de uma requisição;

▪ Processará e empacotará os resultados


em uma mensagem de resposta que é
enviado ao cliente;
3
6
▫ Protocolos que não exigem conexão são mais
eficientes;

▪ Efciência: Faz a tarefa designa da


Cuidados! maneira
menos custosa;

▫ Problema:

▪ as mensagens não podem se perder ou


serem
corrompidas;

▫ Dificuldade:

▪ desenvolver um protocolo que seja


resistente a ocasionais falhas de
E se ocliente n ã o receber a
m e n s a g e m de resposta o
que fazer neste caso?
3
8

Analisan d o ...

Reenviar a
resposta Transfira $10.000 de
minha conta.
3
9

Analisan d o ...

Reenviar a
resposta Informe quanto
dinheiro ainda
tenho.
4
0

Soluções? ▫ Operações que podem ser repetidas várias


vezes
sem causar dano são chamadas de idempotente;
Não há! ▫ Não existe soluções únicas para tratamento
de
mensagens perdida;

▫ Alternativa é a utilização de protocolos


confáveis orientados a conexão;

▫ Garantindo que sempre que um cliente


requisitou um serviços, antes ele estabeleceu
uma conexão com o servidor e só em seguida
enviou a requisição.
41

Camadas de Aplicação
42

Camadas de ▫ Como estabelecer uma distinção clara entre


Aplicação um cliente um servidor?

▪ Um servidor para um banco de


Abordagem 1
distribuídos pode agir continuamente como
dados
um cliente porque está repassando
requisições para diferentes servidores de
arquivos responsáveis pela implementação
das tabelas do banco de dados.

▪ Processa
consultas;
43

Camadas de É possível analisar criando uma


Aplicação distinção entre três níveis, seguindo o
estilo arquitetônico em camadas.
Abordagem 1

1. Nível de interface de
usuário.

2. Nível de processamento.

3. Nível de dados.
Modelo
Visão
Controle

O nível de interface de
usuário conteúdo que é
necessário para fazer
interface diretamente com o
usuário como gerenciamento
de exibição.

O nível de
processamento
normalmente contém as
aplicações.

O nível de dados gerencia os
dados propriamente ditos
sobre os quais está sendo
executada alguma ação.
▫ Os dados costumam ser persistentes, e isso
Nível de Dados é
uma propriedade importante desse nível;
Importante!
▫ Quando não aplicações utilizando esse nível, os
dados continuam armazenados aguardando a
próxima utilização;

▫ “O nível de dados consiste em um sistema de


arquivo, porém é mais comum utilizar um
banco de dados plenamente capacitado”;

▫ É implementado no lado do servidor;


▫ É responsável por manter a consistência
Nível de Dados dos
dados em diferentes aplicações;
Importante!
▫ Pode utilizar recursos como triggers
para manipular disparos de informação;
▫ Ambientes orientados a negócios utilizam
bancos de dados relacionais;

▫ A organização dos dados é


independente das aplicações;
“[...] nem sempre bancos de dados
Nível de Dados relacionais são a opção ideal. Um aspecto
característico de muitas aplicações é que
Imp ortan te! elas operam sobre tipos de dados
(Detalhe) complexos cuja modelagem é mais fácil em
termos de objetos do que em termos de
relações”

Conhecem o termo
Persistência Poliglota?
57

Arquiteturas Multidivididas

A distinção entre três níveis
lógicos [...], sugere várias
possibilidades para a
distribuição física de uma
aplicação cliente-servidor por
várias máquinas.
59

C lie n t e - ▫ Máquina
cliente
Servidor ▪ Contém apenas os programas que
De fato, o que implementam o nível (parte do nível)
te mos? de interface de usuário.

▫ Máquina do servidor

▪ Contém o resto, ou seja, os programas


que implementam o nível de
processamento e de dados.

Nessa organização, tudo é
manipulado pelo servidor, ao
passo que, em essência, o
cliente nada mais é do que um
terminal burro, possivelmente
com uma interface gráfica
bonitinha.
Consideramos o fato de
que o servidor pode
ser u m cliente
também?

É possível?
Arquiteturas
Descentralizadas
Arquiteturas
Arquiteturas de
Sistemas
Distribu ição “Em arquiteturas modernas, muitas vezes é a
horizontal distribuição dos clientes dos servidores que conta
à qual nos referimos como distribuição
horizontal”

▫ O cliente ou o servidor podem ser subdivididos


fsicamente em partes logicamente
equivalentes;

▪ Cada parte opera em sua própria porção do


conjunto;

▪ Busca-se o equilíbrio da carga;


“De uma perspectiva de alto nível, os
processos que constituem um sistemas
peer-to-peer são todos iguais, o que
P e e r- t o - p e e r signifca que as funções que precisam ser
realizadas são representadas por todo
processo que constitui o sistema
distribuído”
▫ Dependem de algoritmos aleatórios
P e e r- t o - p e e r para construir uma rede de
sobreposição;
Redes N ã o - ▫ Cada nó mantém uma lista de vizinhos,
Estruturadas que
é construída de modo aleatório;

▫ Admite-se que itens de dados sejam


colocados aleatoriamente em nós;
▫ A busca de um item de dado na
rede é realizada por uma consulta em
toda a rede;
▫ O grandefoco desta arquitetura é
P e e r- t o - p e e r o gerenciamento de associação ao
grupo;
Redes N ã o - ▫ Sua estrutura é similar a um
Estruturadas gráfco
aleatório;
▫ Cada nó mantém um lista de vizinhos,
nós vivos;

▫ A lista de vizinhos é denominada


visão parcial;
Arquiteturas
Híbridas
Arquiteturas
Arquiteturas de
Sistemas

[...] soluções cliente-
servidor são combinadas
com arquiteturas
descentralizadas.
S i s t em a s de servidor
de borda
S i s t e m a s de
Servidor ▫ São sistemas disponibilizados na internet onde
de Borda servidores são colocados “na borda” da rede;

▫ Usuários fnais, ou clientes em geral, se


conectam com a Internet por meio de um
servidor de borda;

▫ Sua fnalidade é servir conteúdo;

▫ Um conjunto de servidores de borda podem


ser usados para otimizar distribuição de
conteúdo e de aplicação;
S i s t em a s Distribuídos
Colaborativos

Estruturas híbridas são
disponibilizadas notavelmente em
sistemas distribuídos colaborativos.
A questão principal em muitos
desses sistemas é conseguir dar a
partida, para o que muitas vezes é
disponibilizado um esquema
cliente- servidor tradicional.
▫ Quando um usuário fnal estiver procurando um
arquivo, ele também possa transferir porções
para outros usuários;

BitTorre n t ▫ Assim, cria-se um conjunto de porções


sendo
transferidas;

▫ A importância do projeto está na colaboração;

▫ Problema: quando existe grande quantidade de


usuários objetivando apenas obter os
arquivos;

▫ Portanto, “um arquivo só pode ser transferido


quando o cliente que está transferindo estiver
fornecendo conteúdo a mais alguém”;
9
Arquiteturas
versus
Middleware
Arquitetura
s
Falamos sobre
middleware ?
Onde eles se encaixam?
“ Lembrando

[...] o middleware forma


uma camada entre
aplicações e plataformas
distribuídas
▫ Finalidade: proporcionar um grau
Middleware transparência de de
distribuição;
▫ Seguem um estilo arquitetônico específco;

▫ A especifcidadedo estilo arquitetônico é


para
simplifcar projetos de aplicações;

▫ Apesar de sua fnalidade, considera-se tê-lo


para ser mais adaptável as requisições de
aplicação;
Middleware

“Um abordage gera consider


melhor
a é fazer sistemas
m l de a
middleware que
de simples
modo sejam
adaptar e de
personaliza
configurar necessário r para
, uma
conforme
aplicação.

Resum o
▫ Sistemas Distribuídos podem ser organizados
Resumo de
modos diferentes;

▫ Existe distinção entre arquitetura de software


e arquitetura de sistema;

▪ Arquitetura de sistemas: os componentes


que compõem o sistemas distribuídos estão
colocados nas várias máquinas;
▪ Arquitetura de software: preocupa-se com a
organização lógica. Como é realizada a
interação e como são estruturados dos
componentes.
▫ Estilo arquitetônico reflete a interação e
Resumo organização dos componentes que integram
um sistema distribuído;

▫ Organização cliente e servidor como


importante
estrutura de um sistemas distribuído;

▫ Arquiteturas descentralizadas, como a peer-to-


peer, são importantes e bastante utilizadas hoje em dia
Exercícios
1) Se um cliente e um servidor forem colocados
longe um do outro, podemos ver a latência de
rede dominar o desempenho global. Como
podemos atacar esse problema?

2) O que é uma arquitetura cliente - servidor de


três divisões?

3) Qual a diferença entre uma distribuição


vertical e uma distribuição horizontal?

4) Em uma rede de sobreposição estruturada,


mensagens são roteadas de acordo com a
topologia da sobreposição. Cite uma desvan-
tagem dessa abordagem.
Referências

TANENBAUM, A. S.; STEEN, M. V.


Sistemas
Distribuídos: princípios e paradigmas. 2.ed.
São
Paulo, SP: Pearson Prentice Hall, 2008.