MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto...

42
Leandro Villas MC714 - Sistemas Distribuídos

Transcript of MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto...

Page 1: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

MC714 - Sistemas Distribuídos

Page 2: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Fundamentos de Sistemas Distribuídos Definição Metas Tipos de sistemas distribuídos Arquiteturas

Comunicação entre processos Sistemas de arquivos Serviços de nomes Coordenação Replicação Segurança

Programa da Disciplina

Aula anterior

Aula de hoje

Page 3: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Para que definir um arquitetura?

Page 4: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Aula de Hoje

Page 5: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• É 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

Estilos Arquitetônicos

Page 6: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Estilos Arquitetônicos

Page 7: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Estilos Arquitetônicos

Page 8: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Ideia Básica Os componentes são organizados em camada

Um componente na camada Ni tem permissão de chamar componentes na camada subjacente Ni-1

Uma observação fundamental é que, em geral, o controle flui de camada para camada

• Requisições descem pela a hierarquia

• Resultados fluem para cima

Arquiteturas em Camadas

Estilo arquitetônico

baseado em camadas

Camada N

Camada N-1

Camada 2

Camada 1

Flu

xo d

e r

equis

ição

Flu

xo d

e r

esposta

Page 9: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Estilo arquitetônico baseado 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)

Arquiteturas baseadas em objetos

• Um organização bem mais solta

• Se ajusta à arquitetura de sistema cliente-servidor

• Amplamente utilizada para sistemas de software de grande porte

Page 10: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Estilo arquitetônico de espaço de dados compartilhado

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

Arquiteturas centradas em dados

Page 11: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Estilo arquitetônico baseado 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

Arquiteturas baseadas em eventos

Processos fracamente acoplados

• Em princípio, os processos não precisam se referir explicitamente uns aos outros

Page 12: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Aula de Hoje

Page 13: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquitetura de Sistema

Page 14: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 15: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 16: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 17: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 18: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquiteturas Centralizadas

Page 19: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Arquiteturas Centralizadas

Page 20: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquiteturas Centralizadas

Page 21: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 22: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquiteturas Centralizadas

Page 23: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 24: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquiteturas Centralizadas

Page 25: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 26: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 27: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 28: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 29: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 30: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 31: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Centralizadas

Page 32: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Descentralizadas

Page 33: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

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

Arquiteturas Descentralizadas

Page 34: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquiteturas Peer-to-Peer Estruturadas

Page 35: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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?

Arquiteturas Peer-to-Peer não Estruturadas

Page 36: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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)

Arquiteturas Peer-to-Peer não Estruturadas

Page 37: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquiteturas Peer-to-Peer Superpares

Page 38: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Arquiteturas Peer-to-Peer Superpares

Page 39: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

• 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

Arquiteturas Híbridas

Page 40: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

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

Page 41: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Teste 02

Page 42: MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto para formar um sistema Estilos ... • Decisões a respeito de componentes de software,

Leandro Villas

Processos

• Threads

• Processos Clientes

• Processos Servidores

Próxima Aula