Você está na página 1de 42

MC714 - Sistemas Distribuídos

Leandro Villas
Programa da Disciplina
Fundamentos de Sistemas Distribuídos
Definição
Metas Aula anterior
Tipos de sistemas distribuídos
Arquiteturas Aula de hoje

Comunicação entre processos


Sistemas de arquivos
Serviços de nomes
Coordenação
Replicação
Segurança
Leandro Villas
Para que definir um arquitetura?
• SDs são complexas peças de software

• Componentes estão espalhados por diversas


máquinas
Um componente é uma unidade modular com interfaces bem definidas que é
substituível dentro do seu ambiente

• Sistemas devem ser organizados adequadamente!


• Organização lógica do conjunto de componentes
• Organização física

Leandro Villas
Aula de Hoje
Estilos Arquitetônicos
• Arquiteturas em Camadas
• Arquiteturas baseadas em objetos
• Arquiteturas centradas em dados
• Arquiteturas baseadas em eventos

Arquitetura de Sistemas
• Centralizadas
• Distribuídas
• Híbridas

Leandro Villas
Estilos Arquitetônicos
• É formulado em termos de componentes

• Modo como os componentes estão conectados


uns aos outros

• Dados trocados entre componentes

• Maneira como os componentes são configurados


em conjunto para formar um sistema

Leandro Villas
Estilos Arquitetônicos
• A questão importante sobre um componente
para SDs é que ele pode ser substituído

• Um conceito um pouco mais difícil de entender é


o de um conector
• Um mecanismo que serve de mediador de
comunicação ou da cooperação entre componentes
• Ex: um conector pode ser formado pelas facilidades
para chamadas de procedimento remotas, passagem
de mensagens ou fluxo de dados

Leandro Villas
Estilos Arquitetônicos
• Usando componentes e conectores, podemos
chegar a várias configuraçõesque, por sua vez,
foram classificadas em estilos arquitetônicos
• Os mais importantes para SDs são:
 Arquiteturas em Camadas

 Arquiteturas baseadas em objetos

 Arquiteturas centradas em dados

 Arquiteturas baseadas em eventos


Leandro Villas
Arquiteturas em Camadas
Ideia Básica
Os componentes são organizados em
Camada N
camada
Um componente na camada Ni tem Camada N-1

Fluxo de requisição

Fluxo de resposta
permissão de chamar componentes na
camada subjacente Ni-1
Uma observação fundamental é que, em Camada 2

geral, o controle flui de camada para


Camada 1
camada
Estilo arquitetônico
• Requisições descem pela a hierarquia baseado em camadas
• Resultados fluem para cima
Leandro Villas
Arquiteturas baseadas em objetos
Ideia Básica
Cada objeto corresponde ao que definimos como componente,
e esses componentes são conectados por meio de chamada de
procedimento (remota)
• Um organização bem mais solta
• Se ajusta à arquitetura de sistema
cliente-servidor
• Amplamente utilizada para sistemas
de software de grande porte

Estilo arquitetônico baseado em objetos


Leandro Villas
Arquiteturas centradas em dados
Ideia Básica
Processos se comunicam por meio de um repositório comum
Sistemas distribuídos baseados na Web, em grande parte,
são centrados em dados
• Processos se comunicam por meio da utilização de serviços de
dados baseados na Web

Estilo arquitetônico de espaço de dados compartilhado


Leandro Villas
Arquiteturas baseadas em eventos
Ideia Básica
Processos demonstram o interesse por um evento ou
conjunto de eventos e esperam pela notificação de qualquer
um desses eventos, gerados por um processo notificador
Processos fracamente acoplados
• Em princípio, os processos não
precisam se referir explicitamente
uns aos outros

Estilo arquitetônico baseado em eventos


Leandro Villas
Aula de Hoje
Estilos Arquitetônicos
• Arquiteturas em Camadas
• Arquiteturas baseadas em objetos
• Arquiteturas centradas em dados
• Arquiteturas baseadas em eventos

Arquitetura de Sistemas
• Centralizadas
• Distribuídas
• Híbridas

Leandro Villas
Arquitetura de Sistema
• Decisões a respeito de componentes de software,
sua interação e sua colocação em máquinas reais

• Três tipos:
 Centralizadas
 Descentralizadas

 Híbridas

Leandro Villas
Arquiteturas Centralizadas
Modelo Cliente-Servidor
Servidor: processo que implementa um serviço específico
Exempo: um serviço sistema de arquivo ou serviço de banco de dados

Cliente: processo que requisita um serviço ao servidor


Comportamento de requisição-resposta

Leandro Villas
Arquiteturas Centralizadas
Protocolo sem conexão
 Protocolo simples, que funciona bem em redes locais
 Cliente empacota uma mensagem para o servidor,
identificando o serviço que quer, junto com os dados
de entrada necessários
 Eficiente se NÃO ocorrem problemas
Exemplo: Falhas → Transferência bancarias

 Operações podem ser repetidas sem causar danos:


idempotentes
Exemplo: Consulta de saldo

Leandro Villas
Arquiteturas Centralizadas
Protocolo orientado a conexão
 Funciona bem em sistemas de longa distância, nos
quais a comunicação é inerentemente não confiável
 Maioria dos protocolos de aplicação da Internet são baseados em
conexão TCP/IP

 Sempre que um cliente requisita um serviço, primeiro


se estabelece conexão com o servidor e depois se
envia a requisição
 Estabelecer e encerrar uma conexão custa
relativamente caro, em especial quando as
mensagens de requisição e resposta forem pequenas
Leandro Villas
Arquiteturas Centralizadas
Como distinguir entre cliente e servidor?
 Exemplo: Servidor de banco de dados distribuído
pode agir continuamente como um cliente porque
está repassando requisições a servidores de arquivos

Considerando que muitas aplicações cliente-


servidor visam a dar suporte ao acesso de usuários
a banco de dados:
 Nível de interface de usuário
 Nível de processamento

 Nível de dados

Leandro Villas
Arquiteturas Centralizadas
• Nível de interface de usuário
 Consiste em programas que permitam aos usuários
finais interagir com aplicações

• Nível de processamento
 Normalmente contem as aplicações

• Nível de dados
 Consiste em um sistema de arquivos
 Mais comum utilizar um banco de dados

 Normalmente implementado no lado servidor

 Mantem os dados consistentes

Leandro Villas
Arquiteturas Centralizadas

Leandro Villas
Arquiteturas Centralizadas
• A organização mais simples é ter só dois tipos de
maquinas:
1. Uma máquina cliente que contém apenas os
programas que implementam o nível de interface do
usuário
2. Uma máquina servidor que 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


Cliente nada mais é que um terminal “burro”,
possivelmente com uma interface gráfica bonitinha

Leandro Villas
Arquiteturas Centralizadas
Três Níveis lógicos → várias possibilidades para a
distribuição física de uma aplicação cliente-servidor
por várias máquinas

Leandro Villas
Arquiteturas Centralizadas
• Ter na máquina cliente só a parte de
interface de usuário
• Parte da interface é dependente de
terminal
• Aplicações controlam remotamente a
apresentação dos dados

Leandro Villas
Arquiteturas Centralizadas
Três Níveis lógicos → várias possibilidades para a
distribuição física de uma aplicação cliente-servidor
por várias máquinas

Leandro Villas
Arquiteturas Centralizadas
• Todo o software de interface de usuário
no lado cliente
• Nesse modelo, o software cliente não faz
nenhum processamento exceto o
necessário para apresentar a interface da
aplicação

Leandro Villas
Arquiteturas Centralizadas
Três Níveis lógicos → várias possibilidades para a
distribuição física de uma aplicação cliente-servidor
por várias máquinas

Leandro Villas
Arquiteturas Centralizadas
Parte da aplicação no lado cliente
Exemplos
• Formulário que precise ser completamente
preenchido antes do processamento. Cliente
pode verificar a correção e consistência
• Se necessário interagir com o usuário

• Editor de texto com funções básicas no lado


cliente e ferramentas avançadas de suporte,
como verificação de ortografia e gramática,
são executadas no servidor

Leandro Villas
Arquiteturas Centralizadas
Três Níveis lógicos → várias possibilidades para a
distribuição física de uma aplicação cliente-servidor
por várias máquinas

Leandro Villas
Arquiteturas Centralizadas
Aplicação é executada no cliente, mas todas
as operações com arquivos ou entrada em
banco de dados vão para o servidor
Exemplo:
Muitas aplicações bancárias executam na
máquina de um usuário final na qual este
prepara transações
Uma vez concluída, a aplicação contata o banco
de dados no servidor do banco e carrega as
transações para processamento ulterior

Leandro Villas
Arquiteturas Centralizadas
Três Níveis lógicos → várias possibilidades para a
distribuição física de uma aplicação cliente-servidor
por várias máquinas

Leandro Villas
Arquiteturas Centralizadas
Disco local do cliente contém parte dos
dados

Exemplo:
Ao consultar a Web com seu browser, um
cliente pode construir gradativamente uma
enorme cache em disco local com as
páginas Web mais recentemente
consultadas

Leandro Villas
Arquiteturas Centralizadas
Arquitetura de três divisões em termos físicos
 Um servidor às vezes pode precisar agir como um cliente

Leandro Villas
Arquiteturas Descentralizadas
Clientes e servidores são fisicamente subdivididos
em partes logicamente equivalentes, mas cada parte
está operando em sua própria porção do conjunto
completo de dados
 equilibra a carga!!!!

Interação entre os processos é simétrica


 Cada processo agirá como um cliente e um servidor ao
mesmo tempo

Leandro Villas
Arquiteturas Descentralizadas
Peer-to-Peer
• Formado por um conjunto de nós, organizados em
um overlay ou rede de sobreposição
 Overlay: rede na qual os nós são os processos e os
enlaces representam os canais de comunicação
possíveis

• Comunicação não pode ser feita diretamente

• Arquiteturas estruturadas ou não-estruturadas


Leandro Villas
Arquiteturas Peer-to-Peer Estruturadas
• Rede de sobreposição é construída com a
utilização de um procedimento determinístico
• Tabela de hash distribuída
• Dados e nós recebem uma chave aleatória
• Ao consultar um determinado item de dado, o
endereço de rede do nó com o conteúdo é
retornado
• Requisição é roteada entre os nós até que o nó
com o dado requisitado seja alcançado
Leandro Villas
Arquiteturas Peer-to-Peer não Estruturadas
• Algoritmos aleatório são usados para construir a
rede de sobreposição
• Cada nó mantem uma lista de vizinhos (visão parcial)
• Dados também são espalhados aleatoriamente
• Como encontrar os dados?
 Inundar a rede com uma busca
• Importante atualizar a lista de vizinhos
 Mas como?

Leandro Villas
Arquiteturas Peer-to-Peer não Estruturadas
• Gerenciamento de associação ao grupo
 Grafo aleatório
 Cada no possui n vizinhos → visão parcial
 Nós trocam entradas regularmente de sua visão parcial
 Principal objetivo: atualizar saídas de nós, construir
uma nova vizinhança de forma dinâmica para alcançar
uma característica em especifico
 Nós trocam as listas de vizinhos em dois modos
diferentes: pull (puxar) ou push (empurrar)

Leandro Villas
Arquiteturas Peer-to-Peer Superpares
• A medida que a rede cresce, localizar itens de
dados em sistemas P2P não estruturados pode ser
problemático
• Nós que mantem o índice de dados ou que agem
como nós intermediários que possuem dados para
disponibilizar os recursos a nós vizinhos
• Sempre que um nó comum se junta a rede, se liga
a um dos superpares
• Problema: Seleção do líder
Leandro Villas
Arquiteturas Peer-to-Peer Superpares

Leandro Villas
Arquiteturas Híbridas
• Sistemas distribuídos nas quais soluções cliente-
servidor são combinadas com arquiteturas
descentralizadas
• Exemplo: Sistemas distribuídos colaborativos
 Principal objetivo é iniciar a troca de informações
 Apos adição do nó na rede, a distribuição dos dados é
feita de forma descentralizada
 BitTorrent

Leandro Villas
Arquiteturas Híbridas
Transfere porções do arquivo de outros usuários até
que as porções transferidas possam ser montadas
em conjunto, resultando no arquivo completo

Leandro Villas
Teste 02

Leandro Villas
Próxima Aula
Processos
• Threads
• Processos Clientes
• Processos Servidores

Leandro Villas

Você também pode gostar