SlideShare uma empresa Scribd logo
1 de 125
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;
▫ 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;
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;
▫ Projetistas de 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údo relacionado

Mais procurados

Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Sérgio Souza Costa
 

Mais procurados (20)

SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
 
Protocolos de Redes
Protocolos de RedesProtocolos de Redes
Protocolos de Redes
 
Uml diagrama de atividades
Uml   diagrama de atividadesUml   diagrama de atividades
Uml diagrama de atividades
 
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplinaFundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
 
Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02
 
Modelo TCP/IP
Modelo TCP/IPModelo TCP/IP
Modelo TCP/IP
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
Sistemas Distribuídos - Aula 10 - Exclusão mútua e Acesso à Região Crítica
Sistemas Distribuídos - Aula 10 - Exclusão mútua e Acesso à Região CríticaSistemas Distribuídos - Aula 10 - Exclusão mútua e Acesso à Região Crítica
Sistemas Distribuídos - Aula 10 - Exclusão mútua e Acesso à Região Crítica
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Sistemas distribuídos aula 1
Sistemas distribuídos aula 1
 
Conceito de processos
Conceito de processosConceito de processos
Conceito de processos
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidos
 
Engenharia De Software Baseada Em Componentes
Engenharia De Software Baseada Em ComponentesEngenharia De Software Baseada Em Componentes
Engenharia De Software Baseada Em Componentes
 
Aula 04 - Diagrama de casos de uso
Aula 04 - Diagrama de casos de usoAula 04 - Diagrama de casos de uso
Aula 04 - Diagrama de casos de uso
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
 

Destaque

Moodle Presentation
Moodle PresentationMoodle Presentation
Moodle Presentation
Frank Fucile
 

Destaque (20)

Aula05 Sistemas Distribuídos - Comunicação
Aula05 Sistemas Distribuídos - ComunicaçãoAula05 Sistemas Distribuídos - Comunicação
Aula05 Sistemas Distribuídos - Comunicação
 
Aula01 Tópicos em Ambiente Web - Internet
Aula01 Tópicos em Ambiente Web - InternetAula01 Tópicos em Ambiente Web - Internet
Aula01 Tópicos em Ambiente Web - Internet
 
Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidos
 
Aula01 Desenvolvimento em Ambiente Web - HTML
Aula01 Desenvolvimento em Ambiente Web - HTMLAula01 Desenvolvimento em Ambiente Web - HTML
Aula01 Desenvolvimento em Ambiente Web - HTML
 
Estudante empreendedor - UFPB Campus IV
Estudante empreendedor - UFPB Campus IVEstudante empreendedor - UFPB Campus IV
Estudante empreendedor - UFPB Campus IV
 
Banco de dados distribuidos
Banco de dados distribuidosBanco de dados distribuidos
Banco de dados distribuidos
 
Sistema de Banco de Dados Distribuídos
Sistema de Banco de Dados DistribuídosSistema de Banco de Dados Distribuídos
Sistema de Banco de Dados Distribuídos
 
Bancos de dados distribuídos
Bancos de dados distribuídosBancos de dados distribuídos
Bancos de dados distribuídos
 
Aula02 Tópicos em Ambiente Web - Produção de Páginas Web (conceitos)
Aula02 Tópicos em Ambiente Web - Produção de Páginas Web (conceitos)Aula02 Tópicos em Ambiente Web - Produção de Páginas Web (conceitos)
Aula02 Tópicos em Ambiente Web - Produção de Páginas Web (conceitos)
 
Inserindo apresentações do Slideshare no Moodle
Inserindo apresentações do Slideshare no MoodleInserindo apresentações do Slideshare no Moodle
Inserindo apresentações do Slideshare no Moodle
 
Introcucao aos Sistemas Distribuidos
Introcucao aos Sistemas DistribuidosIntrocucao aos Sistemas Distribuidos
Introcucao aos Sistemas Distribuidos
 
Sistemas distribuidos 2
Sistemas distribuidos 2Sistemas distribuidos 2
Sistemas distribuidos 2
 
Sistemas Distribuídos - Modelos Arquitetônicos
Sistemas Distribuídos - Modelos ArquitetônicosSistemas Distribuídos - Modelos Arquitetônicos
Sistemas Distribuídos - Modelos Arquitetônicos
 
Sistemas Distribuídos - Clusters
Sistemas Distribuídos - ClustersSistemas Distribuídos - Clusters
Sistemas Distribuídos - Clusters
 
Aula 3 banco de dados
Aula 3   banco de dadosAula 3   banco de dados
Aula 3 banco de dados
 
Moodle Presentation
Moodle PresentationMoodle Presentation
Moodle Presentation
 
ทดสอบไวยากรณ์ สมาส Power point 50
ทดสอบไวยากรณ์ สมาส Power point 50ทดสอบไวยากรณ์ สมาส Power point 50
ทดสอบไวยากรณ์ สมาส Power point 50
 
All US Zip Codes
All US Zip CodesAll US Zip Codes
All US Zip Codes
 
Grade 10 science
Grade 10 scienceGrade 10 science
Grade 10 science
 
Adjectives
AdjectivesAdjectives
Adjectives
 

Semelhante a Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos

3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf
Dimas Francisco
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Lenin Abadie
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4
spawally
 
Serviço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma LivreServiço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma Livre
Mauro Tapajós
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx
JulioCesar371362
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
Adriano Teixeira de Souza
 
Aula 2 arquitecturas de sgbd, utilizadores, perfis
Aula 2   arquitecturas de sgbd, utilizadores, perfisAula 2   arquitecturas de sgbd, utilizadores, perfis
Aula 2 arquitecturas de sgbd, utilizadores, perfis
Hélio Martins
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidos
Portal_do_Estudante_SD
 

Semelhante a Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos (20)

3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
 
Trabalho individual
Trabalho individualTrabalho individual
Trabalho individual
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4
 
Serviço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma LivreServiço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma Livre
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
Banco de Dados - conceitos, usuários, características
Banco de Dados - conceitos, usuários, característicasBanco de Dados - conceitos, usuários, características
Banco de Dados - conceitos, usuários, características
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Integração de software solucao e estilo
Integração de software   solucao e estiloIntegração de software   solucao e estilo
Integração de software solucao e estilo
 
Integração de software 2
Integração de software 2Integração de software 2
Integração de software 2
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Aula 2 arquitecturas de sgbd, utilizadores, perfis
Aula 2   arquitecturas de sgbd, utilizadores, perfisAula 2   arquitecturas de sgbd, utilizadores, perfis
Aula 2 arquitecturas de sgbd, utilizadores, perfis
 
Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidos
 
World Wide Web
World Wide WebWorld Wide Web
World Wide Web
 

Mais de Messias Batista

Mais de Messias Batista (20)

Aula 02.1 FSI - Terminologia da Informática e Sistemas de Informação - os ele...
Aula 02.1 FSI - Terminologia da Informática e Sistemas de Informação - os ele...Aula 02.1 FSI - Terminologia da Informática e Sistemas de Informação - os ele...
Aula 02.1 FSI - Terminologia da Informática e Sistemas de Informação - os ele...
 
Aula 06.1 FSI - Papel da Informação nas Organizações
Aula 06.1 FSI - Papel da Informação nas OrganizaçõesAula 06.1 FSI - Papel da Informação nas Organizações
Aula 06.1 FSI - Papel da Informação nas Organizações
 
Aula 01.2 FSI - Ferramentas Importantes
Aula 01.2 FSI - Ferramentas ImportantesAula 01.2 FSI - Ferramentas Importantes
Aula 01.2 FSI - Ferramentas Importantes
 
Aula 08.2 - ALP - Vetores e Matrizes
Aula 08.2 - ALP - Vetores e MatrizesAula 08.2 - ALP - Vetores e Matrizes
Aula 08.2 - ALP - Vetores e Matrizes
 
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)Aula 08.1 - ALP - Linguagem C (Primeiros passos)
Aula 08.1 - ALP - Linguagem C (Primeiros passos)
 
Aula 02.1 - Terminologia da informática e sistemas de informação- os elemento...
Aula 02.1 - Terminologia da informática e sistemas de informação- os elemento...Aula 02.1 - Terminologia da informática e sistemas de informação- os elemento...
Aula 02.1 - Terminologia da informática e sistemas de informação- os elemento...
 
Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto...
 Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto... Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto...
Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto...
 
Aula 06.1 - Estruturas de Repetição (while, for, repeat)
Aula 06.1 - Estruturas de Repetição (while, for, repeat)Aula 06.1 - Estruturas de Repetição (while, for, repeat)
Aula 06.1 - Estruturas de Repetição (while, for, repeat)
 
Aula 05.2 - Desvio Condicional Composto (se não se)
Aula 05.2 - Desvio Condicional Composto (se não se)Aula 05.2 - Desvio Condicional Composto (se não se)
Aula 05.2 - Desvio Condicional Composto (se não se)
 
Aula 05.1 - Estruturas de controle - Sequencial e Desvio Condicional Simples ...
Aula 05.1 - Estruturas de controle - Sequencial e Desvio Condicional Simples ...Aula 05.1 - Estruturas de controle - Sequencial e Desvio Condicional Simples ...
Aula 05.1 - Estruturas de controle - Sequencial e Desvio Condicional Simples ...
 
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
 
Aula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e LógicosAula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e Lógicos
 
Aula 01.3 - Fundamentos da Construção de Algoritmos e Programas
Aula 01.3 - Fundamentos da Construção de Algoritmos e ProgramasAula 01.3 - Fundamentos da Construção de Algoritmos e Programas
Aula 01.3 - Fundamentos da Construção de Algoritmos e Programas
 
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores AritméticosAula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
 
Aula09 SD - Replicação e Consistência
Aula09 SD - Replicação e ConsistênciaAula09 SD - Replicação e Consistência
Aula09 SD - Replicação e Consistência
 
Aula08 - Sistemas Distribuídos - Sincronização
Aula08 - Sistemas Distribuídos - SincronizaçãoAula08 - Sistemas Distribuídos - Sincronização
Aula08 - Sistemas Distribuídos - Sincronização
 
Aula02 Desenvolvimento em Ambiente Web - CSS 3
Aula02 Desenvolvimento em Ambiente Web - CSS 3Aula02 Desenvolvimento em Ambiente Web - CSS 3
Aula02 Desenvolvimento em Ambiente Web - CSS 3
 
Apresentação Club do Android 2017.1 - Google Developers Group João Pessoa
Apresentação Club do Android 2017.1 - Google Developers Group João PessoaApresentação Club do Android 2017.1 - Google Developers Group João Pessoa
Apresentação Club do Android 2017.1 - Google Developers Group João Pessoa
 
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoaO novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
 

Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos

  • 1. Arquiteturas CURSO DE CIÊNCIA DA COMPUTAÇÃO DISCIPLINA DE SISTEMAS DISTRIBUÍDOS PROF. MESSIAS R. BATISTA
  • 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 3
  • 4. 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.
  • 5. “ [...] uma meta importante de sistemas distribuídos é separar aplicações das plataformas subjacentes provendo uma camada de middleware. 5
  • 6. 6
  • 7. Middleware ▫ É necessário conseguir um middleware adaptativo; ▫ Sistemas distribuídos devem monitorar seu funcionamento ▪ Sistemas autonômicos 7
  • 9. 9 O quanto é crucial adotar uma arquitetura de software para um projeto?
  • 10. 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
  • 11. “ Um componente é uma unidade modular com interfaces requeridas e fornecidas bem definidas que é substituível dentro de seu ambiente 11
  • 12. Componente 12 ▫ É passível de substituição; ▫ Necessário respeitar as interfaces; E os conectores?
  • 13. “ Conector [...] é descrito como um mecanismo que serve de mediador da comunicação ou da cooperação entre componentes 13
  • 15. 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
  • 16. 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;
  • 19. 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.
  • 21. 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.
  • 23. 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.
  • 24. “ 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
  • 25. Arquitetura baseada em eventos 25 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. 26
  • 27. “ 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
  • 29. “ 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
  • 31. “ [...] 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 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.
  • 34. 34
  • 35. 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;
  • 36. 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. 37 E se o cliente não receber a mensagem de resposta o que fazer neste caso?
  • 38. Analisando... 38 Transfira $10.000 de minha conta Reenviar a resposta
  • 40. 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á!
  • 42. 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
  • 43. 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
  • 44. Camadas 1. Nível de interface de usuário 2. Nível de processamento 3. Nível de dados 44
  • 45. 45
  • 46. “ 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
  • 47. “ O nível de processamento normalmente contem as aplicações. 47
  • 48. “ O nível de dados gerencia os dados propriamente ditos sobre os quais está sendo executada alguma ação. 48
  • 49. 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
  • 51. 51
  • 52. 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!
  • 53. Nível de Dados 53 ▫ É responsável por manter a consistência dos dados em diferentes aplicações; ▫ 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; Importante!
  • 54. 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. 55
  • 56. 56
  • 58. “ 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
  • 59. 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?
  • 60. “ 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. 61
  • 62. 62 Consideramos o fato de que o servidor pode ser um cliente também? É possível? Exemplifique.
  • 63. 63
  • 65. 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”
  • 67. 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
  • 68. 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”
  • 69. 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
  • 71. 71
  • 72. 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
  • 73. 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
  • 74. 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
  • 75. “ [...] 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
  • 77. Gerenciamento de Topologia de Redes de Sobreposição 77
  • 78. “ 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. 79
  • 81. 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;
  • 82. 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. 83
  • 85. “ [...] soluções cliente- servidor são combinadas com arquiteturas descentralizadas. 85
  • 86. Sistemas de servidor de borda 86
  • 87. 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. 88
  • 90. “ 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
  • 91. 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. 92
  • 95. “ [...] o middleware forma uma camada entre aplicações e plataformas distribuídas 95 Lembrando
  • 96. 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;
  • 97. 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.”
  • 99. 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.
  • 100. 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. 101
  • 102. Abordagens gerais para o software adaptativo 102
  • 103. 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; ▫ Projetistas de middleware passam a considerar a construção de software adaptativo; Abordagens gerais
  • 104. 104 E como podemos chegar ao software adaptativo?
  • 105. Software Adaptativo 105 1. Separação de interesses; 2. Reflexão computacional; 3. Projeto baseado em componente; Três técnicas
  • 106. 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
  • 107. 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
  • 108. 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
  • 110. 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;
  • 111. Discussão 111 Qual o argumento que sugere a existência de um software adaptativo no middleware de sistemas distribuídos?
  • 112. 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”
  • 113. 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...
  • 115. “ 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
  • 116. 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
  • 117. 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
  • 118. O modelo de realimentação de controle 118
  • 119. 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. 120
  • 122. 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!
  • 123. 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!
  • 124. 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
  • 125. Arquiteturas: Estilos Arquitetônicos CURSO DE CIÊNCIA DA COMPUTAÇÃO DISCIPLINA DE SISTEMAS DISTRIBUÍDOS PROF. MESSIAS R. BATISTA