Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 F lu x o d e r e q u is iç ã o F lu x o d e r e s p o s ta 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
Compartilhar