Please enable JavaScript.
Coggle requires JavaScript to display documents.
Aula 03 - Arquiteturas de Sistemas Distribuídos - Coggle Diagram
Aula 03 - Arquiteturas de Sistemas Distribuídos
1
Arquiteturas
O que é uma arquitetura de software?
As arquiteturas de software definem:
organização
e
interação
Organização
Define a conexão entre os componentes do sistema.
Interação
Define a forma de interação entre os componentes para a realização de um serviço.
Em que cenários precisamos optar por uma arquitetura diferente da tradicional (monolito)?
Aplicações que exigem
componentes descentralizados
Ao separar os componentes precisamos de uma camada de
middleware
para fazer a comunicação entre os componentes.
Arquiteturas de software são compostas por duas partes:
componente
e
conector
Componente
É uma unidade com interface de comunicação bem definida que pode ser substituida dentro do ambiente.
Conector
É um mecanismo mediador da comunicação e cooperação dos componentes.
A arquitetura pode ser definida de acordo com diferentes aspectos:
componentes
e
comunicação
Componentes
De acordo com a forma que os componentes são definidos e conectados.
Comunicação
De acordo com a forma que os dados são trocados.
Tipos de arquiteturas
Arquitetura baseada em camadas
Como funciona?
O sistema é decomposto em camadas.
Cada camada possui uma finalidade dentro do sistema.
Cada camada só pode enviar e receber mensagens de camadas adjacentes.
O fluxo de requisição e resposta é bem definido.
Estrutura
A arquitetura em camadas normalmente possui 3 níveis:
interface
,
processamento
e
dados
Interface
Contém a comunicação com o usuários (frontend).
Processamento
Contém as funções da aplicação (regras de negócio).
Dados
Gerencia os dados da aplicação.
Podemos ter diferentes alternativas de organizações de estruturas cliente-servidor:
clientes magros
e
clientes gordos
Clientes gordos
Trazem mais atribuições de processamento para o lado do cliente, normalmente associado a interfaces mais sofisticadas e um maior desempenho percebido pelo usuário.
Clientes magros
Busca reduzir a carga de processamento do lado do cliente, permitindo que as aplicações rodem em clientes com menos recursos.
MVC (Model View Controller)
Possui 3 camadas bem definidas:
model
,
view
e
controller
Model
Manipulação e acesso ao banco de dados.
View
Definição das interfaces de comunicação com o usuário.
Controller
Controla a comunicação da
view
com o
model
, implementando regras de negócio.
Arquitetura baseada em objetos
Como funciona?
Os componentes são definidos como objetos.
Os objetos se comunicam através de chamadas de métodos ou procedimentos remotos.
O middleware será responsável por instanciar os objetos.
Os objetos operam de forma independente.
Java RMI
O RMI Server atua como middleware nessa organização.
A comunicação entre os objetos ocorrem através de uma seção.
Arquitetura baseada em recursos
Como funciona?
Prioriza a disponibilização de recursos ao cliente.
O sistema é composto por uma coleção de recursos, que o cliente deseja acessar.
O sistema é estruturado para fornecer os recursos para o cliente.
Normalmente não possuem seção de comunicação.
É importante provisionar a manipulação dos dados:
create
,
read
,
update
e
delete
.
REST (Representation State Transfer)
O cliente requisita um recurso através de uma interface (
get
,
put
,
delete
,
post
).
O servidor devolve uma resposta com o recurso (
HTML
,
XML
,
JSON
).
As mensagens são
stateless
.
Não guardem estados das requisições.
Arquitetura baseada em eventos
Como funciona?
Os componentes são definidos a partir dos eventos que podem ocorrer.
O que é um evento?
O evento pode ser definido como qualquer interação entre o mundo real e o sistema.
Os eventos disparam gatilhos que serão executados ou tratados pelo sistema.
Os componentes vão se comunicar através da propagação de eventos.
Os eventos podem transportar dados.
Publish/Subscriber
Os processos que publicam os eventos.
O middleware garante que os processos assinantes vão receber os eventos.
Componentes desacoplados
Os componentes podem ser desacoplados no
tempo
e
espaço
Tempo
Os dois processos não precisam estar online ao mesmo tempo para comunicação ocorrer, se um componente não estiver online no momento do lançamento do evento, quando ele se conectar ele será avisado.
Espaço
Os processos não precisam se referir explicitamente um ao outro.
Paradigmas de comunicação
3 tipos de paradigmas de comunicação:
comunicação entre processos
,
invocação remota
e
comunicação indireta
.
Comunicação entre processos
Como funciona?
Fornece suporte a baixo nível de comunicação entre processos distribuídos, como primitivas de passagem de mensagens, acesso à API através de sockets.
Invocação remota
Como funciona?
Métodos de comunicação mais comum nos sistemas distribuídos.
Tipos
Protocolos de requisição-resposta
Padrão de comunicação nos sistemas cliente-servidor.
Chamada de procedimento remoto (RPC)
Os procedimentos em computadores remotos são chamados como se fossem procedimentos locais.
Invocação de método remoto (RMI)
Tem um funcionamento semelhante ao RPC, porém, é voltada para objetos distribuídos.
Comunicação indireta
Como funciona?
Comunicação por meio de uma terceira entidade.
Tipos
Comunicação em grupo
Entrega mensagens a um conjunto de destinatários.
Publicar/assinar
Presença de muitos produtores/publicadores e muitos consumidores/assinantes.
Filas de mensagem
Os processos produtores enviam as mensagens para uma fila especificada.
Espaço de tupla
Os processos colocam dados estruturados (tuplas) em um espaço persistente.
Memória compartilhada distribuída (DSM)
Abstração que permite que processos compartilhem dados sem possuir uma memória física compartilhada.
2
Organização de sistemas distribuídos
As arquiteturas de sistemas distribuídos podem ser divididos seguindo alguns tipos de organizações, as principais são:
organização centralizada
,
organização descentralizada
e
organização híbrida
.
Organização centralizada
O que é?
Um modelo tradicional de organização centralizada é o modelo cliente-servidor, onde os processos são divididos em
servidores
e
clientes
.
Neste tipo de organização temos uma distribuição vertical das camadas
Organização descentralizada
O que é?
Os processo do sistema são divididos
horizontalmente
.
Um cliente ou servidor podem ser divididos em subpartes que operam seu próprio conjunto de dados.
Peer to peer
Os processos são clientes e servidores ao mesmo tempo.
Organização de uma rede peer to peer pode ser distinta em duas:
estruturada
ou
não estruturada
Estruturada
Possui uma topologia dos processos conectados bem definida, ou seja, um formato em arvores, estrela, anel, etc.
Não estruturada
Não tem um formato bem definido, os componentes se organizam de forma aleátoria.
A estrutura impacta diretamente na forma de comunicação entre os processos.
Precisamos de técnicas para comunicação entre os processos, essas sendo:
flooding
e
random walk
.
Flooding
2 more items...
Random Walk
2 more items...
Organização híbrida
O que é?
Combinação das organizações centralizadas e descentralizadas.
BitTorrent
Um cliente combina um recurso ao servidor, o servidor gera uma lista de nós que possuem o recurso ou parte dele, o cliente solicita aos nós identificados as partes do recurso.
Posicionamento do cliente e servidor
Podemos ter o posicionamento de 4 formas principais:
mapeamento em vários servidores
,
uso de cache
,
código móvel
,
agentes móveis
.
Mapeamento em vários servidores
Os serviços são divididos em vários processos servidores em diferentes máquinas.
Uso de cache
Realiza o armazenamento de objetos de dados em local próximo ao cliente.
Código móvel
O código móvel conhecido como Applets, são baixados pelo usuário e executados localmente.
Requisição do cliente resulta no download de um código Applet, depois o cliente interage com o applet localmente.
Agentes móveis
São programas que passam de um computador para outro realizando uma tarefa específica.