Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Arquiteturas
CURSO DE CIÊNCIA DA COMPUTAÇÃO
DISCIPLINA DE SISTEMAS DISTRIBUÍDOS
PROF. MESSIAS R. BATISTA
Estilos 
Arquitetônicos
2
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
3
Introdução
▫ Arquitetura de software (ou 
de sistema)
▪ Arquiteturas centralizadas
▪ Arquiteturas 
descentralizadas
4
▫ Arquiteturas centralizadas
Tradicionais. Um único servidor implementa a 
maioria dos componentes;
▫ 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
Middleware
▫ É necessário conseguir um
middleware adaptativo;
▫ Sistemas distribuídos devem
monitorar seu funcionamento
▪ Sistemas autonômicos
7
Estilos 
Arquitetônicos
8
9
O quanto é crucial adotar uma 
arquitetura de
software para um projeto?
Estilo 
Arquitetônico
10
▫ Formulado com base nos componentes que o
compõe;
▫ A forma de conexão dos componentes
também é importante;
▫ Os dados trocados entre os componentes;
▫ A forma de configuração desse conjunto de
elementos;
Composição do 
Sistema 
Distribuído com 
base no estilo 
arquitetônico
“
Um componente é uma 
unidade modular com 
interfaces requeridas e 
fornecidas bem definidas que 
é substituível dentro de seu 
ambiente
11
Componente
12
▫ É 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
13
Componentes e 
Conectores
14
Importantes 
Estilos 
Arquitetônicos
15
1. Arquiteturas em camadas;
2. Arquiteturas baseadas em objetos;
3. Arquiteturas centradas em dados;
4. Arquiteturas baseadas em eventos;
Configurações a 
partir de 
Componentes e 
Conectores
Arquiteturas 
em camadas
16
▫ Componentes são organizados em 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;
▫ Resultados (respostas) fluem para cima;
Arquiteturas 
em camadas
17
Arquiteturas 
em camadas
18
Arquitetura 
baseada em 
objetos
19
▫ Cada objeto corresponde a definição de um 
componente;
▫ Os componentes são conectados por uma 
chamada de procedimento remoto;
▫ É um modelo de arquitetura que se ajusta ao 
sistema cliente-servidor;
▫ Configuram-se em um estilo importante para 
sistemas de software de grande porte.
Arquitetura 
baseada em 
objetos
20
Arquitetura 
centrada em 
dados
21
▫ Processos se comunicam por meio de um
repositório comum;
▫ Tem grau de importância similar as baseadas em
camadas e objetos;
▫ Funcionamento:
Trabalha com o compartilhamento de arquivos.
Arquitetura 
centrada em 
dados
22
Arquitetura 
baseada em 
eventos
23
▫ Processos se comunicam por meio da propagação 
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.
24
Arquitetura 
baseada em 
eventos
25
Arquiteturas baseadas em eventos, podem se 
complementar com arquiteturas baseadas em dados
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.
26
“
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
Arquiteturas de 
Sistemas
Arquiteturas
28
“
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
Arquiteturas 
Centralizadas
Arquiteturas
Arquiteturas de Sistemas
30
“
[...] pensar em termos de 
clientes que requisitam 
serviços de servidores nos 
ajuda a entender e gerenciar 
a complexidade de sistemas 
distribuídos [...]
31
Servidor e 
Cliente
32
▫ Servidor
▪ É um processo que implementa um
serviço específico;
▫ 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.
Comportamento
Comportamento de 
requisição-resposta
33
34
Fases da 
Requisição-
Resposta
35
1. Um cliente requisita um serviço;
▪ Empacota uma mensagem para o
servidor identificando 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;
Cuidados!
36
▫ Protocolos que não exigem conexão são mais
eficientes;
▪ Eficiência: Faz a tarefa designa da 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 transmissão.
37
E se o cliente não receber a 
mensagem de resposta o 
que fazer neste caso?
Analisando...
38
Transfira $10.000 de 
minha conta
Reenviar a 
resposta
Analisando...
39
Informe quanto dinheiro 
ainda tenho.
Reenviar a 
resposta
Soluções?
40
▫ Operações que podem ser repetidas várias vezes
sem causar dano são chamadas de idempotente;
▫ Não existe soluções únicas para tratamento de
mensagens perdida;
▫ Alternativa é a utilização de protocolos confiá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.
Não há!
Camadas de Aplicação
41
Camadas de 
Aplicação
42
▫ Como estabelecer uma distinção clara entre
um cliente um servidor?
▪ Um servidor para um banco de dados
distribuídos pode agir continuamente como
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;
Abordagem 1
Camadas de 
Aplicação
43
É possível analisar criando uma distinção 
entre três níveis, seguindo o estilo 
arquitetônico em camadas.
1. Nível de interface de usuário
2. Nível de processamento
3. Nível de dados
Abordagem 1
Camadas
1. Nível de interface de usuário
2. Nível de processamento
3. Nível de dados
44
45
“
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.
46
“
O nível de processamento
normalmente contem as 
aplicações.
47
“
O nível de dados gerencia os 
dados propriamente ditos 
sobre os quais está sendo 
executada alguma ação.
48
Conclusão
1. Manipula a interação com o
usuário;
2. Intermediária. Mantém a
funcionalidade central da
aplicação;
3. Age sobre o banco de dados
ou sistema de arquivos;
49
50
Palavras-
chave
Busca no 
banco de 
Dados
51
Nível de Dados
52
▫ Os dados costumam ser persistentes, e isso é
uma propriedade importante desse nível;
▫ 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;
Importante!
Nível de Dados
53
▫ É responsável por manter a consistência dos
dados em diferentes aplicações;
▫ Podeutilizar 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;
Importante!
Nível de Dados
54
“[...] nem sempre bancos de dados relacionais
são a opção ideal. Um aspecto característico de
muitas aplicações é que elas operam sobre
tipos de dados complexos cuja modelagem é
mais fácil em termos de objetos do que em
termos de relações”
Conhecem o termo
Persistência Poliglota?
Importante!
(Detalhe)
55
56
Arquiteturas Multidivididas
57
“
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.
58
Cliente-
Servidor
59
▫ Máquina cliente
▪ Contém apenas os programas que
implementam o nível (parte do nível) 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.
De fato, o que 
temos?
“
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.
60
61
62
Consideramos o fato de 
que o servidor pode ser 
um cliente também?
É possível? Exemplifique.
63
“
Clientes gordos
X
Clientes Magros
64
Distribuição 
vertical
65
“[...] da perspectiva e gerenciamento de
sistema, ter uma distribuição vertical pode
ajudar: funções são subdivididas lógica e
fisicamente por várias máquinas, e cada
máquina é projetada para um grupo específico
de funções”
Arquiteturas 
Descentralizadas
Arquiteturas
Arquiteturas de Sistemas
66
Distribuição 
horizontal
67
“Em arquiteturas modernas, muitas vezes é a
distribuição dos clientes dos servidores que conta à
qual nos referimos como distribuição horizontal”
▫ O cliente ou o servidor podem ser subdivididos
fisicamente em partes logicamente equivalentes;
▪ Cada parte opera em sua própria porção do
conjunto;
▪ Busca-se o equilíbrio da carga;
▫ Exemplo: peer-to-peer
Peer-to-peer
68
“De uma perspectiva de alto nível, os processos
que constituem um sistemas peer-to-peer são
todos iguais, o que significa que as funções que
precisam ser realizadas são representadas por
todo processo que constitui o sistema
distribuído”
Peer-to-peer
69
▫ Organizam os processos por meio de uma
tabela de hash distribuída (Distributed Hash
Table – DHT);
▫ DHT implementa um mapeamento de chave
do item para um nó baseando por distâncias
métricas;
Redes 
Estruturadas
Sistema Chord
70
Peer-to-peer
Redes 
Estruturadas
71
Peer-to-peer
72
▫ Dependem de algoritmos aleatórios para
construir uma rede de sobreposição;
▫ Cada nó mantém uma lista de vizinhos, 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;
Redes Não-
Estruturadas
Peer-to-peer
73
▫ O grande foco desta arquitetura é o
gerenciamento de associação ao grupo;
▫ Sua estrutura é similar a um gráfico
aleatório;
▫ Cada nó mantém um lista de vizinhos, nós
vivos;
▫ A lista de vizinhos é denominada visão
parcial;
Redes Não-
Estruturadas
Peer-to-peer
74
▫ A construção de uma nova visão:
▪ Os nós descartam as entradas criadas
entre eles;
▪ Ou, os nós descartam o maior número
possível de entradas velhas;
Redes Não-
Estruturadas
“
[...] quando um nó quer se 
juntar ao grupo, ele contata 
um outro nó arbitrário, 
possivelmente de uma lista 
de pontos de acesso bem 
conhecidos.
75
Problema!
76
Gargalo criado em 
apenas um nó!
Gerenciamento de 
Topologia de Redes de 
Sobreposição
77
“
Embora possa parecer que 
sistemas peer-to-peer
estruturados e não 
estruturados formem classes 
estritamente independentes, na 
verdade pode não ser esse o 
caso.
78
79
Superpares (superpeers)
80
Superpares
81
▫ P2P não estruturados podem se tornar 
problemáticos à medida que crescem;
▫ Problema de escalabilidade:
▪ Não roteamento da requisição de pesquisa até 
um item de dado específico;
▪ Única técnica é enviar a pesquisa para toda a 
rede;
▫ Solução (possível):
▪ Nós intermediários, ou superpares;
Superpares
82
▫ Superpares:
▪ São organizados em redes P2P;
▪ Resultam em organização hierárquica;
▫ Todo par comum estará conectado como um 
cliente a um superpar;
▫ A relação cliente-superpar é fixa;
▪ Sempre que um cliente se junta à rede, ele se 
liga a um dos superpares e continua até sair 
da rede;
83
Arquiteturas 
Híbridas
Arquiteturas
Arquiteturas de Sistemas
84
“
[...] soluções cliente-
servidor são combinadas 
com arquiteturas 
descentralizadas.
85
Sistemas de servidor de 
borda
86
Sistemas de 
Servidor de 
Borda
87
▫ São sistemas disponibilizados na internet onde 
servidores são colocados “na borda” da rede;
▫ Usuários finais, ou clientes em geral, se conectam 
com a Internet por meio de um servidor de borda;
▫ Sua finalidade é servir conteúdo;
▫ Um conjunto de servidores de borda podem ser 
usados para otimizar distribuição de conteúdo e 
de aplicação;
88
Sistemas Distribuídos 
Colaborativos
89
“
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.
90
BitTorrent
91
▫ Quando um usuário final estiver procurando um
arquivo, ele também possa transferir porções
para outros usuários;
▫ 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”;
92
Arquiteturas 
versus
Middleware
Arquiteturas
93
94
Falamos sobre 
middelware?
Onde eles se encaixam?
“
[...] o middleware forma uma 
camada entre aplicações e 
plataformas distribuídas
95
Lembrando
Middleware
96
▫ Finalidade: proporcionar um grau de
transparência de distribuição;
▫ Seguem um estilo arquitetônico específico;
▫ A especificidade do estilo arquitetônico é para
simplificar projetos de aplicações;
▫ Apesar de sua finalidade, considera-se tê-lo para
ser mais adaptável as requisições de aplicação;
Middleware
97
“Uma abordagem geral considera
melhor é fazer sistemas de middleware
de modo que sejam simples de
configurar, adaptar e personalizar
conforme necessário para uma
aplicação.”
Interceptadores
98
Interceptador
99
▫ É um constructo de software que interromperá o
fluxo de controle usual e permitirá que seja
executado um outro código;
▫ Funciona com alto suporte em sistemas
distribuídos orientado à objetos;
▫ Um objeto A pode chamar um método que
pertence a um objeto B enquanto este residir em
uma máquina diferente de A.
Interceptador
100
A invocação remoto é realizada em três etapas:
1. É oferecida ao objeto A uma interface local que é
exatamente a mesma oferecida pelo objeto B. A
simplesmente chama o método disponível naquela
interface;
2. A chamada por A é transformada em uma invocação a
objeto genérico, possibilitada por meio de uma
interface geral de invocação de objeto oferecida pelo
middelware na máquina em que A reside;
3. Por fim, a invocação a objeto genérico é transformada
em uma mensagem que é enviada por meio de uma
interface de rede de nível de transporte como oferecida
pelo sistema operacional local de A.
101
Abordagens gerais para o 
software adaptativo
102
Software 
Adaptativo
103
▫ Interceptadores oferecem um meio de adaptar o
middleware;
▫ A necessidade de adaptação surge do ambiente
das aplicações distribuídos, que estão sempre
mudando;
▪ O middleware retira da aplicação a reação a
mudanças;
▫ Projetistasde middleware passam a considerar a
construção de software adaptativo;
Abordagens gerais
104
E como podemos chegar ao 
software adaptativo?
Software 
Adaptativo
105
1. Separação de interesses;
2. Reflexão computacional;
3. Projeto baseado em componente;
Três técnicas
Software 
Adaptativo
106
▫ Separar as partes que implementam funcionalidade das
que cuidam de outras coisas;
▫ Neste contexto:
▪ Desenvolver um middleware para aplicações
distribuídas é o mesmo que manipular
funcionalidades extras independentemente de
aplicações;
▫ A dificuldade está na modularização;
▫ Modularizar e depois entrelaçar interesses cruzados é o
mesmo tema trabalhado por desenvolvimento de
software orientado a aspecto;
Três técnicas
1. Separação de 
Interesses
Software 
Adaptativo
107
▫ Pode ser compreendida como à capacidade de um
programa inspecionar-se, e adaptar-se quando
necessário;
▫ As linguagens de programações modernos, como o
Java, permitem modificações em tempo de execução;
▫ Em sistemas distribuídos essa técnica ainda é um
desafio;
▪ Aplicar a técnica de reflexão a um extenso domínio
de aplicação ainda está por acontecer;
Três técnicas
2. Reflexão 
Computacional
Software 
Adaptativo
108
▫ É o suporte dado a adaptação por meio de composição;
▫ Sistemas que são configurados dinamicamente em
tempo de execução suportam ligação tardia;
▪ Ligação tardia: técnica que tem sido aplicada com
sucesso em ambientes que são necessário carregar
e descarregar módulos;
▫ A dificuldade está quando precisa existir a substituição
de um componente e não é possível mapear os efeitos
que haverá em outros componentes;
Três técnicas
3. Projeto Baseado 
em Componente
Discussão
109
Discussão
110
▫ Situação: Requisitos extrafuncionais conflitam com a
meta de transparência;
▫ Resultado: Middlewares com alta flexibilidade;
▫ “[...] assuntos como abertura são de igual importância,
mas a necessidade de flexibilidade nunca foi tão
predominante como no caso do middleware”
▫ Assim, a necessidade se torna uma premissa:
▪ São necessárias softwares adaptativos no sentido de
que permitir mudança à medida que o ambiente se
altera;
Discussão
111
Qual o argumento que sugere a
existência de um software adaptativo
no middleware de sistemas
distribuídos?
Discussão
112
“O argumento mais forte e por certo o
mais válido para suporte software
adaptativo é que muitos sistemas
distribuídos não podem ser desligados”
Discussão
113
▫ Sistemas distribuídos devem ser capazes de reagir
a mudanças em seu ambiente;
▪ Exemplo: trocar de políticas de alocação de
recursos;
▫ O desafio conclusivo é deixar este
comportamento reativo e sem a necessidade de
intervenção humana;
Portanto...
Autogerenciamento 
em Sistemas 
Distribuídos
Arquiteturas
114
“
Sistemas distribuídos – e em especial 
seu middleware associado – precisam 
fornecer soluções gerais de blindagem 
contra aspectos indesejáveis inerentes 
a redes, de modo que possam suportar 
o maior número possível de aplicações.
115
Autogerenciamento
116
▫ Transparência de distribuição total não é foco
principal da maioria das aplicações;
▫ Existe portanto um foco no conceito de software
adaptativo;
▫ Quando a adaptação precisa ser automática:
1. Precisa-se organizar os componentes do sistemas
distribuído de modo a promover monitoramento e
ajustes;
2. Necessário decidir onde devem ser executados os
processos que manipulam a adaptação;
Sistemas 
Distribuídos
Computação 
Autonômica
117
São sistemas de realimentação de
controle de alto nível que permitam
adaptação automática a mudanças.
Ou Sistemas Auto
O modelo de realimentação 
de controle
118
Modelo de 
Realimentação 
de Controle
119 ▫ Premissa: adaptações ocorrem por meio de um ou mais
laços de realimentação de controle;
▫ Sistemas organizados por meios de laços são
conhecidos como sistemas de realimentação de
controle;
▫ O núcleo de um sistema de realimentação de
controle é formado pelos componentes que precisam
ser gerenciados;
▫ O laço de realimentação de controle é formado por três
elementos:
▪ Componente de estimativa de medição;
▪ Componente de análise de realimentação;
▪ Medidas de ajustes (conjunto de componentes).
120
Resumo
121
Resumo
122
▫ Sistemas Distribuídos podem ser organizados 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.
Importante!
Resumo
123
▫ Estilo arquitetônico reflete a interação e
organização dos componentes que integram um
sistema distribuído;
▫ Organização cliente e servido como importante
estrutura de um sistemas distribuído;
▫ Arquiteturas descentralizadas como a peer-to-peer;
▫ Sistemas autogerenciadores aumenta a
capacidade de adaptação do sistema e minimizam
a intervenção humana;
Importante!
Referências
124
TANENBAUM, A. S.; STEEN, M. V. Sistemas
Distribuídos: princípios e paradigmas. 2.ed. São
Paulo, SP: Pearson Prentice Hall, 2008
Arquiteturas:
Estilos Arquitetônicos
CURSO DE CIÊNCIA DA COMPUTAÇÃO
DISCIPLINA DE SISTEMAS DISTRIBUÍDOS
PROF. MESSIAS R. BATISTA

Mais conteúdos dessa disciplina