TÓPICOS EM COMPUTAÇÃO APLICADA Aula 6 Tecnologias para Sistemas Distribuídos Bacharelado em Ciência da Computação Professor MSc. Ariel da Silva Dias Complexo Educacional FMU Filosofia Computadores estão se tornando cada vez mais baratos e rápidos; Falta aumentar o desempenho em rede de computadores; Necessita de lidar com hardware fisicamente distribuído e usando software logicamente centralizado; Prover a sensação de um único e simples computador com sistema com time-sharing; 1
Objetivo Deve ser pequeno; Simples de usar; Escalabilidade para um grande número de processadores; Bom grau de tolerância a faltas; Alto desempenho; Possibilidade de paralelismo; Transparente para os usuários. Arquitetura Workstations; Pool de processadores; Servidores Especializados Arquivo; Base de dados; Diretórios; Etc. Gateway. 2
Arquitetura Arquitetura Workstation Uma por usuário; Onde os usuários realizam suas tarefas; Estas podem ser da SUN, IBM, PC/AT e terminais X. 3
Arquitetura Pool de Processadores Grupo de CPUs; CPU pode ser dinamicamente alocada e depois retorna ao pool; Oferece a possibilidade de processamento paralelo. Arquitetura Servidores Especializados Servidor de diretório; Servidor de arquivo; Servidor de boot; Servidor de banco de dados; Etc. 4
Arquitetura Gateways Liga sistemas Amoeba em diferentes lugares em um sistema único e uniforme; Isola o sistema AMOEBA das peculiaridades dos protocolos de rede que devem ser usados sobre WANs Arquitetura AMOEBA Kernel Todas as máquinas AMOEBA rodam o mesmo kernel; O kernel é responsável pelo gerenciamento da memória, IO, comunicação entre processos, primitivas de objeto, processamento básico e multithreading; O objetivo é manter o kernel o menor possível para aumentar a confiança e permitir ao SO rodar como se fosse um processo de usuário. 5
Remote Procedure Call É utilizado para a comunicação entre cliente e servidor; Os processos de usuário enviam uma mensagem de pedido para o servidor que gerencia um objeto; O pedido contém a capacidade do objeto, a operação a ser realizada e alguns parâmetros; Remote Procedure Call Interface RPC é construída sobre o protocolo FLIP; O RPC é baseado em 4 primitivas Getreq get requisition; Putreq put requisition; Trans transaction; Timeout time out. 6
FLIP (Fast Local Internet Protocol) foi desenvolvido por Andrew Tanenbaum; Seu objetivo é otimizar a velocidade das RPCs do sistema; FLIP também prove automaticamente o menor roteamento de mensagens e prove automaticamente a passagem entre gateways de redes conectadas. Getreq Usada por servidores; O servidor inicializado, realiza uma operação de getreq com a porta que deseja ouvir; Getreq bloqueia o servidor até que um cliente envie um pedido utilizando a operação trans; Quando um pedido chega, o servidor checa se a capacidade é válida e se tem privilégios suficientes. 7
Trans Usada pelos clientes para enviar pedidos ao servidor; A porta do servidor é o primeiro parâmetro da operação trans; A operação trans bloqueia o cliente até que o servidor mande uma resposta; O kernel no qual a operação trans é executada tenta localizar o servidor transmitindo por broadcasting o pedido juntamente com a porta. Timeout Usado para informar a quantidade de tempo gasta procurando um servidor para atender uma operação trans; Timeout padrão é de 5 segundos. 8
Programação Cliente/Servidor Não é necessário que a programação do cliente ou do servidor se preocupe com a preparação de dados ou rotinas de transporte na rede; A própria AIL(AMOEBA Interface Language) gera esse código automaticamente; Servidores podem executar processos multithreaded mas isso não é obrigatório. Threads Cada processo tem seu próprio espaço de endereço e contém múltiplas threads; Essas threads tem suas próprias pilhas e descritor de processos, mas compartilha os dados globais e o código. 9
Diretório Nome de arquivos não implementados pelo servidor de arquivo; Muito mais tipo de objetos que arquivos, então a necessidade de um serviço de nome geral; Servidor de diretórios implementa o serviço de nomes, implementando um grafo direcionado arbitrário de diretórios Diretório Manipula os nomes de arquivos; Objeto diretório é uma lista de pares Os pares são formados de uma string para o nome e um conjunto de capacidades; Um grau de tolerância extra é alcançado pela duplicação do servidor de diretórios que se comunicam entre si para manter a integridade dos diretórios; É o único que conhece a localização física do arquivo; 10
Arquivo O servidor de arquivos é conhecido como Bullet Server; Armazena os arquivos contiguamente no disco, para dar ao sistema uma alta performance; Servidores de arquivos são imutáveis: uma vez que criados não podem ser mudados. Pontos importantes O sistema é gratuito; Ele não teve uma atualização oficial em 10 anos; Pode-se utilizar CPUs mais antigas e lentas para criar um sistema poderoso; Microkernel permite que outros sistemas de arquivos sejam criados; 11
Pontos importantes Possui 4 objetivos principais Distribuição; Paralelismos; Transparência; Desempenho Tem muitos comandos e programas parecidos com o UNIX; Pode manipular programas tão grandes quanto a sua memória física. BANCO DE DADOS DISTRIBUÍDOS Banco de dados distribuídos Conjunto de vários BD logicamente interrelacionados, fisicamente separados, dispersos geograficamente e distribuídos por uma rede de computadores; SGBD Distribuído Sistema que possibilita o gerenciamento dos bancos de dados distribuídos e que transforma a distribuição dos dados de forma clara para os usuários, como se fosse um sistema centralizado (transparência). 12
BANCO DE DADOS DISTRIBUÍDOS SBDD (Sist. de banco de dados distribuídos) Conjunto entre os bancos de dados distribuídos e os SGBDs distribuídos; BANCO DE DADOS DISTRIBUÍDOS Tipos de SGBDs distribuídos Homogêneo - os SGBDs locais são semelhantes em todos os sites, ou a estrutura do banco de dados é igual em todos os sites Oferece interface idêntica (ou da mesma família) e fornece os mesmos serviço à usuários em diferentes sites; 13
BANCO DE DADOS DISTRIBUÍDOS Tipos de SGBDs distribuídos Heterogêneo - pode existir dois ou mais SGBDs diferentes espalhados entre os sites ou a estrutura do banco de dados também é diferente Existe quando há a necessidade de integrar sistemas já existentes; É necessário fazer uma conversão entre os SBDDs; BANCO DE DADOS DISTRIBUÍDOS Distribuição dos dados no SBDD Particionar Particionando, o banco de dados se separa em diversas partições disjuntas, e cada partição é colocada em um site. Replicar Totalmente: cópias do banco de dados inteiro são armazenados em cada site; Parcialmente: cada partição do banco de dados é armazenado em mais de um site 14
BANCO DE DADOS DISTRIBUÍDOS Características Transparência na gerência dos dados distribuídos: separação de um sistema de alto nível e os detalhes de implementação. O objetivo é que se tenha uma independência de dados. Transparência da rede; Transparência da replicação; Transparência da fragmentação BANCO DE DADOS DISTRIBUÍDOS Características Maior confiabilidade na transação de dados distribuídos: o SBDD funciona de acordo com o projeto; 15
BANCO DE DADOS DISTRIBUÍDOS Características Maior desempenho em consultas: podem ser executas em paralelo as subconsultas; BANCO DE DADOS DISTRIBUÍDOS Características Expansão do sistema: facilidade em adaptar ao crescimento da base de dados; 16
BANCO DE DADOS DISTRIBUÍDOS Características Utilização por maior quantidade de usuários ao mesmo tempo. BANCO DE DADOS DISTRIBUÍDOS Características negativas Processamento de consultas distribuídas e otimização necessita de algoritmos adequados; Dificuldade no seu desenvolvimento, manutenção e gerenciamento; Dificuldade em evitar que erros ocorridos nas máquinas ou na rede atrapalhem o sistema; Garantir uma segurança dos dados compartilhados entre as máquinas através do sistema. 17
Mecanismos tradicionais de comunicação via RPC/RMI ou mensagens deixam explícitas as interações entre processos Processos interagem para trocar dados de modo a manter um estado global consistente; É possível abstrair completamente as interações entre processos, de modo que todos os processos de uma aplicação distribuída tenham acesso ao mesmo estado global, replicado localmente? (Anh?) DSM (Distributed Shared Memory) Abstração usada para o compartilhamento de dados entre computadores que não compartilham memória física (Colouris); Processos lêem e escrevem na memória compartilhada como se estivessem acessando seu espaço de endereçamento de memória; Evita a necessidade de lidar diretamente com os mecanismos de comunicação, tornando a manutenção de estado global transparente. 18
DSM (Visão do Usuário) Principal Utilização: Computação de Alto Desempenho Com DSM, as máquinas de um sistema distribuído podem se comportar como se fossem um multiprocessador com memória compartilhada; Usando DSM, programas desenvolvidos para multiprocessadores com memória compartilhada podem ser facilmente portados para multiprocessadores sem memória compartilhada, clusters e grids; 19
Outras formas de utilização Aplicações distribuídas nas quais dados são compartilhados e podem ser acessados diretamente pelos processos envolvidos; Algumas aplicações do tipo cliente/servidor, onde o servidor pode compartilhar uma área de memória para acesso de todos os clientes. Vantagens Transparência usuário não precisa lidar diretamente com mecanismos de comunicação; Desenvolvimento Programador lida com conceitos com os quais já está familiarizado; Aplicações centralizadas podem ser facilmente paralelizadas/distribuídas; 20
Limitações Suporte de execução: Faz atualizações na memória compartilhada; Deve estar presente em todos os nós; Desempenho Acesso à DSM pode ser várias ordens de grandeza mais lento que o acesso à memória física, degradando o desempenho; Desempenho é ruim principalmente quando há muitas alterações nos valores dos dados; Comparação com outras tecnologias Dados são compartilhados diretamente por processos, não precisando ser passado como mensagem ou parâmetros; Requer o uso de mecanismos de controle de concorrência para garantir a consistência dos dados na área de memória compartilhada; 21
Implementação em Hardware Usada em arquitetura de multiprocessadores do tipo NUMA (Non-Uniform Memory Access); Grupos de processadores ligados por um barramento compartilham um banco de memória local; Processos acessam espaço de endereçamento que reúne memória local e remota; Implementação em Hardware Acesso à memória remota é mais lento que o acesso à memória local; Hardware especializado executa as instruções de acesso à memória, usando uma cache local e efetuando acesso remoto, se necessário. 22
Implementação em Software Middleware é responsável por efetuar a comunicação entre os nós para manter a memória compartilhada atualizada e consistente; Processos chamam o middleware para acessar dados compartilhados; Implementação em Software Requer comunicação entre os nós envolvidos; Em geral não manipula endereços de memória diretamente, mas usa abstrações de alto nível, como variáveis/objetos compartilhados; 23
Representação dos dados na DSM Cada implementação de DSM define o formato usado para representar dados compartilhados Formatos comumente utilizados Bytes: devem ser transformados nos formatos de dados usados pela aplicação; Tuplas: mantém tuplas de valores tipados em um espaço de tuplas; São imutáveis, criadas, lidas e removidas, nunca alteradas; Objetos: dados encapsulados manipulados através da invocação de métodos. Implementação centralizada As páginas de memória compartilhadas são mantidas em um servidor central, que executa as operações requisitadas pelos clientes. 24
Implementação por Migração As páginas de memória compartilhadas são migradas de um nó para outro; Nó de posse da página executa localmente as operações desejadas. Estratégias baseadas em Replicação Cada nó mantém uma cópia local dos dados; Mais eficientes que as estratégias centralizadas e por migração, pois permitem o acesso concorrente aos dados; Exigem extremo cuidado para manter os dados consistentes e sincronizados; Mecanismos de controle de concorrência (locks, monitores, semáforos) devem ser usados para garantir a consistência; 25
Estratégias baseadas em Replicação Trocas de mensagens são efetuadas para manter os dados sincronizados; Quando um dado for alterado por um nó, duas estratégias podem ser empregadas para sincronização das réplicas Atualizar todas as réplicas; Invalidar as demais réplicas, obrigando que sejam atualizadas antes do próximo acesso. Replicação Somente-Leitura Dados podem ser lidos concorrentemente; Alterações nos dados não coordenadas por um servidor, que atualiza/invalida as réplicas; 26
Replicação Leitura/Escrita Dados são lidos e alterados em paralelo; Sequenciador é responsável por atualizar/invalidar cópias desatualizadas Comunicação A comunicação entre os nós pode afetar negativamente o desempenho das aplicações, principalmente quando for usada replicação; Estratégias para diminuir a quantidade de mensagens enviadas pela rede Aguardar que um nó faça todas as alterações necessárias nos dados antes de propagá-las; Usar multicast para enviar atualizações; O retardo causado pela propagação de mensagens na rede pode resultar em inconsistências momentâneas. 27
Consistência A manutenção da consistência dos dados é crucial para o funcionamento da DSM; Consistência sequencial garante que todos os nós recebem as alterações na mesma ordem; Garantir consistência sequencial é dispendioso pois requer controle de concorrência e ordenação de mensagens; Em alguns casos, certo grau de inconsistência é tolerado para obter um melhor desempenho no acesso à memória compartilhada. http://condor.cc.ku.edu/~grobe/docs/intro-mpi- C.shtml http://people.sc.fsu.edu/~jburkardt/c_src/mpi/mpi. html 28
REFERÊNCIA Tanenbaum A., Sistemas Operacionais Modernos; 29