MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto...
Transcript of MC714 – Sistemas Distribuídosleandro/ensino/MC714/1s2016/aulas/Fundamentos de... · em conjunto...
Leandro Villas
MC714 - Sistemas Distribuídos
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
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?
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Leandro Villas
Arquiteturas Centralizadas
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
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
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
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
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
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
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
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
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
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
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
Leandro Villas
Arquitetura de três divisões em termos físicos Um servidor às vezes pode precisar agir como um cliente
Arquiteturas Centralizadas
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
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
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
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
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
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
Leandro Villas
Arquiteturas Peer-to-Peer Superpares
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
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
Processos
• Threads
• Processos Clientes
• Processos Servidores
Próxima Aula