Sistemas Distribuídos Faculdade Ieducare 8º Semestre – Sistemas de Informação Professor: Rhyan Ximenes Sistemas Distribuídos 1 Sistemas Operacionais Distribuídos O que é um sistema distribuídos? - É uma coleção de computadores independentes que aparenta ser um único computador aos seus usuários. Exemplos: Rede com estações de trabalho e processadores standalone alocados por demanda com um sistema de arquivos unificado; Sistema bancário com terminais espalhados geograficamente e um único banco de dados. Stand-alone – Programas que rodam sozinhos. Sistemas Distribuídos 2 Sistemas Operacionais Distribuídos Como se tornou possível o surgimento desses sistemas? Com o surgimento de computadores mais rápidos e baratos e o surgimento de redes de computadores de alta velocidade. Sistemas Distribuídos 3 Vantagens de S.D sobre sistemas centralizados. Lei de Grosch – O poder de computação de um computador é proporcional ao quadrado do seu preço. (Aplicável a mainframes); No caso de microprocessadores, é mais barato se comprar vários processadores e montá-los em um sistema multi-processador (preço); Em alguns casos, é teoricamente impossível de se construir um computador centralizado que possa ser comparado a um sistema distribuído com uma grande quantidade de processadores (velocidade); Sistemas Distribuídos 4 Vantagens de S.D sobre sistemas centralizados. Algumas aplicações são inerentemente distribuídas - Sistema de uma cadeia de lojas, jogos ou outras aplicações cooperativas(distributividade inerente); Maior confiabilidade, útil em aplicações de alto risco (confiabilidade); Crescimento incremental – acaba com necessidade da compra de mainframes cada vez maiores, agora o sistema pode ser trocado aos poucos (crescimento incremental). Sistemas Distribuídos 5 Vantagens de S.D sobre micros independentes: Compartilhamento de dados (colaboração e preço); Compartilhamento de dispositivos (preço); Comunicação; Mistura de computadores pessoais e compartilhados pode permitir uma distribuição de tarefas mais eficiente (flexibilidade). Sistemas Distribuídos 6 Desvantagens de S.D Software – Sistemas Operacionais, linguagens de programação e aplicações; Comunicação – Tratamento e recuperação de mensagens; Melhoria da rede pode acarretar em custos altos. Segurança – Compartilhamento de dados implica em esquemas especiais para proteção de dados sigilosos. Sistemas Distribuídos 7 Características de S.D Sistema de comunicação interprocessos único, independente se os dois processos estão localizados na mesma máquina ou não; Esquema de proteção global; Gerenciamento de processos único, isto é, como eles são criados, destruídos, iniciados ou parados; Sistemas Distribuídos 8 Características de S.D A idéia usada nos sistemas operacionais de rede de se estabelecer protocolos para a comunicação clienteservidor não é suficiente; Deve haver um único conjunto de chamadas de sistema em todas as máquinas e as chamadas devem ser projetadas levando em conta o ambiente distribuído. Sistemas Distribuídos 9 Características de S.D Sistema de arquivos deve ter a mesma visão e regras em todas as máquinas. Segurança deve ser implementada em relação aos usuários e não em relação as máquinas. Sistemas Distribuídos 10 Características de S.D Geralmente, o mesmo núcleo (kernel) roda em todas as máquinas, já que os mesmos implementam as mesmas funções e chamadas; Cada núcleo pode ter um controle razoável sobre os recursos locais; - Exemplo: no gerenciamento de memória, swapping, ou até escalonamento de processos, no caso de uma CPU possuir mais de um processo sendo executado. Sistemas Distribuídos 11 Sistemas Distribuídos Verdadeiro As vezes são chamados de sistemas operacionais distribuídos; Software fortemente acoplado (tightly-coupled) em um hardware fracamente acoplado (loosely-coupled); Sistemas Distribuídos 12 Sistemas Distribuídos Verdadeiro O objetivo: - Criação de uma ilusão para os usuários que o sistema de multicomputadores funciona como uma grande máquina de tempo compartilhado; - As vezes são referenciados como sistemas de imagem única ou uni processador virtual. Sistemas Distribuídos 13 Sistemas Operacionais de Redes Loosely coupled – Comunicação é explicitamente solicitada pelo usuário e se dá através da troca de mensagens; Distribuição do sistema é clara para o usuário; Servidores de arquivos fornecem arquivos a máquinas clientes; Sistemas Distribuídos 14 Sistemas Operacionais de Redes Usuários diferentes tem visões diferentes do sistema, devido a diferenças em como os sistemas de arquivo locais estão organizados e quais dispositivos locais as máquinas possuem, etc. Sistemas Distribuídos 15 Sistemas Operacionais de Redes Máquinas podem rodar diferentes versões de um mesmo S.O ou até diferentes S.Os desde que os protocolos de comunicação e serviços sejam usados por todas as máquinas; A “coordenação” (mínima) de serviços entre as máquinas é feita através da aderência aos protocolos. Sistemas Distribuídos 16 Definição de Sistema Distribuídos Um Sistema Distribuído (SD) é: Exemplo de S.D Um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente. Sistemas Distribuídos 17 Exemplo de S.D (2) Sistemas Distribuídos 18 Definição de Sistema Distribuído(5) •Um Sistema Distribuído organizado como um middleware. •O SD oculta as diferenças de hardware e de sistemas operacionais das aplicações distribuídas; •A camada middleware se estende por várias máquinas e oferece a mesma interface a cada aplicação. Middleware ou mediador, no campo da computação distribuída, é um programa de computador que faz a mediação entre software e demais aplicações. É utilizado para mover ou transportar informações e dados entre programas de diferentes protocolos de comunicação, plataformas e dependências do sistema operacional. Sistemas Distribuídos 19 Metas de projeto Um Sistema Distribuído deve: Oferecer fácil acesso a seus recursos groupware; Ocultar razoavelmente bem o fato de que os recursos são distribuídos por uma rede (Transparência); Ser aberto Inerface Definition Language (IDL) e Poder ser expandido (Escalabilidade). Sistemas Distribuídos 20 Transparência em um Sistema Distribuído Diferentes formas de transparência em um sistema distribuído. Sistemas Distribuídos 21 Escalabilidade A escalabilidade pode ser medida segundo três dimensões: Escalabilidade de tamanho: é fácil adicionar mais usuários e recursos no sistema Escalabilidade geográfica: usuários e recursos podem estar distantes entre si Escalabilidade administrativa: é fácil de gerenciar, mesmo que abranja muitas organizações administrativas diferentes Sistemas Distribuídos 22 Problemas na Escalabilidade (1) Sistemas Distribuídos 23 Problemas na Escalabilidade (2) Características dos algoritmos descentralizados: Nenhuma máquina tem informações completas sobre o estado do sistemas. Sistemas Distribuídos 24 Problemas na Escalabilidade (2) As máquinas tomam decisões tendo como base somente informações locais. A falha de uma máquina não arruína o algoritmo. Não há nenhuma premissa implícita quanto à existência de um relógio global. Sistemas Distribuídos 25 Técnicas de Escalabilidade(1) Sistemas Distribuídos 26 Técnicas de Escalabilidade (2) ocultar latência Latência é a diferença de tempo entre o início de um evento e o momento em que seus efeitos tornam-se perceptíveis. Sistemas Distribuídos 27 Técnicas de Escalabilidade (3) distribuição Sistemas Distribuídos 28 Alguém sabe como funciona o DNS? O DNS ( Domain Name System - Sistema de Nomes de Domínios ) é um sistema de gerenciamento de nomes hierarquicos e distribuído visando resolver nomes de domínios em endereços de rede (IP). Sistemas Distribuídos 29 Alguém sabe como funciona o DNS? Ele baseia-se em nomes hierárquicos e permite a inscrição de vários dados digitados além do nome do host e seu IP. O servidor DNS traduz nomes para os endereços IP e endereços IP para nomes respectivos, e permitindo a localização de hosts em um domínio determinado. Sistemas Distribuídos 30 Alguém sabe como funciona o DNS? Existem 13 servidores DNS raiz no mundo todo e sem eles a Internet não funcionaria. Destes, dez estão localizados nos Estados Unidos da América, um na Ásia e dois na Europa. Sistemas Distribuídos 31 Alguém sabe como funciona o DNS? Para Aumentar a base instalada destes servidores, foram criadas réplicas localizadas por todo o mundo, inclusive no Brasil desde 2003. Ou seja, os servidores de diretórios responsáveis por prover informações como nomes e endereços das máquinas são normalmente chamados servidores de nomes. Sistemas Distribuídos 32 Ciladas Quando Desenvolvemos Sistemas Distribuídos Sistemas Distribuídos 33 Tipos de Sistemas Distribuídos: Sistemas Distribuídos 34 Tipos de Sistemas Distribuídos: Sistemas Distribuídos 35 Sistemas de Computação de Alto Desempenho Sistemas Distribuídos 36 Sistemas de Computação de Alto Desempenho Aplicações: - Sistemas meteorológicos; - Ferramentas de mapeamento genético; - Simuladores geotérmicos; - Programas de renderização de imagens tridimensionais; - Computação em Nuvens, necessidade de ter uma infraestrutura tecnológica respondendo a vários clientes simultaneamente de maneira remota, por exemplo; - Aplicações crítica - que não pode parar de funcionar ou não pode perder dados (os sistemas bancários, por exemplo); - Entre tantos outros. Sistemas Distribuídos 37 Sistemas de Computação de Cluster O que é cluster? Sistema que relaciona dois ou mais computadores para que estes trabalhem de maneira conjunta no intuito de processar uma tarefa. Estas máquinas dividem entre si as atividades de processamento e executam este trabalho de maneira simultânea. Como funciona? Cada computador que faz parte do cluster recebe o nome de nó (ou node); Não há limite máximo de nós; Mas o cluster deve ser "transparente", ou seja, ser visto pelo usuário ou por outro sistema que necessita deste processamento como um único computador. Dois ou mais computadores trabalham de maneira conjunta para realizar processamento pesado. Sistemas Distribuídos 38 Sistemas de Computação de Cluster É necessário alguma padronização? - Os nós do cluster devem ser interconectados, preferencialmente, por uma tecnologia de rede conhecida, para fins de manutenção e controle de custos, como a Ethernet; - É importante que o padrão adotado permita a inclusão ou a retirada de nós com o cluster em funcionamento, do contrário, o trabalho de remoção e substituição de um computador que apresentar problemas, por exemplo, faria a aplicação como um todo parar. Sistemas Distribuídos 39 Sistemas de Computação de Cluster De que é composto os nós? - Na computação em cluster os nós podem até mesmo ser compostos por computadores simples, como PCs de desempenho mediano; Finalidade - Configura um sistema de processamento com capacidade suficiente para dar conta de determinadas aplicações que, se fossem atendidas por supercomputadores ou servidores sofisticados, exigiriam investimentos muito maiores. Sistemas Distribuídos 40 Fotografia de um Cluster. Não é necessário haver um conjunto de hardware exatamente igual em cada nó; É importante que todas as máquinas utilizem o mesmo sistema operacional, de forma a garantir que o software que controla o cluster consiga gerenciar todos os computadores que o integram. Sistemas Distribuídos 41 Sistemas de Computação de Cluster (1) Sistemas Distribuídos 42 Sistemas de Computação de Cluster (2) Sistemas Distribuídos 43 Sistemas de Computação de Cluster (3) Sistemas Distribuídos 44 Tipos de clusters Cluster de Alto Desempenho (High Performance Computing Cluster) 2. Cluster de Alta Disponibilidade (High Availability Computing Cluster) 3. Cluster para Balanceamento de Carga (Load Balancing) 4. Combinação de tipos de clusters 1. Sistemas Distribuídos 45 Cluster de Alto Desempenho (High Performance Computing Cluster) São direcionados a aplicações bastante exigentes no que diz respeito ao processamento; Onde são utilizados? Em sistemas utilizados em pesquisas científicas, onde há a necessidade de analise uma grande variedade de dados rapidamente e realizar cálculos bastante complexos. Qual o foco deste tipo de cluster? O processamento direcionado à aplicação forneça resultados satisfatórios em tempo hábil, mesmo que haja grande volume de dados a serem analisados e processados por segundo. Sistemas Distribuídos 46 Cluster de Alta Disponibilidade (High Availability Computing Cluster) Qual o foco desse tipo de cluster? - Sempre manter a aplicação em pleno funcionamento; - Não é aceitável que o sistema pare de funcionar, se acontecer, a paralisação deve ser a menor possível. Que recursos são utilizados para atingirem o objetivo? - Ferramentas de monitoramento que identificam nós defeituosos ou falhas na conexão, - Replicação (redundância) de sistemas e computadores para substituição imediata de máquinas com problemas, - Uso de geradores para garantir o funcionamento em caso de queda de energia, entre outros. Sistemas Distribuídos 47 Cluster de Alta Disponibilidade (High Availability Computing Cluster) Observação: - É tolerável que o sistema apresente algum grau de perda de desempenho, especialmente quando esta situação é consequência de algum esforço para manter a aplicação em atividade. Sistemas Distribuídos 48 Cluster para Balanceamento de Carga (Load Balancing) As tarefas de processamento são distribuídas o mais uniformemente possível entre os nós; Cada computador recebe e atende a uma requisição e não, necessariamente, divide uma tarefa com outras máquinas. Por exemplo: - Imagine que um grande site na internet receba por volta de mil visitas por segundo e que um cluster formado por 20 nós tenha sido desenvolvido para atender a esta demanda. Como se trata de uma solução de balanceamento de carga, estas requisições são distribuídas igualmente entre as 20 máquinas, de forma que cada uma receba e realize, em média, 50 atendimentos a cada segundo. Sistemas Distribuídos 49 Cluster para Balanceamento de Carga (Load Balancing) Obs1.: - Não basta ao cluster de balanceamento de carga ter um mecanismo meramente capaz de distribuir as requisições; - É necessário que este procedimento seja executado de forma a garantir um "equilíbrio" na aplicação; Como é feito? - Monitoramento constante dos nós para verificar, por exemplo, qual máquina está lidando com a menor quantidade de tarefas e direcionar uma nova requisição para esta. Obs2.: - O balanceamento de carga pode ser utilizado em vários tipos de aplicações; - Uso comum na internet. Sistemas Distribuídos 50 Combinação de tipos de clusters Conforme a necessidade; Como é feito? - Combinando características de tipos diferentes no intuito de atender plenamente à aplicação; Por exemplo: - Uma loja na internet pode utilizar um cluster de alta disponibilidade para garantir que suas vendas possam ser realizadas 24 horas por dia e, ao mesmo tempo, aplicar balanceamento de carga para suportar um expressivo aumento eventual no número de pedidos causados por uma promoção. Sistemas Distribuídos 51 Funcionamento básico dos cluster Cada computador de um cluster é denominado nó ou nodo; Todos devem ser interconectados, de maneira a formarem uma rede, de qualquer topologia; A rede precisa ser criada de uma forma que permita o acréscimo ou a retirada de um nó (em casos de danos, por exemplo), mas sem interromper o funcionamento do cluster; Sistemas Distribuídos 52 Funcionamento básico dos cluster Sistema operacional usado nos computadores deve ser de um mesmo tipo; Isso porque existe particularidades em cada sistema operacional que poderiam impedir o funcionamento do cluster. Sistemas Distribuídos 53 Cluster Beowulf O Beowulf padrão de clustering disponibilizado pela NASA (National Aeronautics and Space ) em 1994 e amplamente adotado desde então. Origem do nome: - Nome de um poema extenso e bastante antigo, cujo manuscrito foi encontrado no século XI; - A obra descreve os atos de um herói de mesmo nome que se destaca por sua força descomunal e que, portanto, enfrenta um perigoso monstro para salvar um reino; - A história serviu de inspiração para que os pesquisadores Thomas Sterling e Donald Becker, da NASA, batizassem o projeto de cluster no qual trabalhavam de Beowulf. Sistemas Distribuídos 54 Cluster Beowulf Define-se, basicamente, pela ênfase nas seguintes características: - Entre os nós, deve haver pelo menos um que atue como mestre para exercer o controle dos demais; Máquinas mestres são chamadas de front-end; as demais, de back-end; Possibilidade de existir mais de um nó no front-end para que cada um realize tarefas específicas, como monitoramento. Sistemas Distribuídos 55 Cluster Beowulf Sistemas Distribuídos 56 Como funciona? Cluster Beowulf Comunicação entre os nós pode ser feita por redes do tipo Ethernet, mais comuns e mais baratas; Não é necessário o uso de hardware exigente, nem específico; A ideia é a de se aproveitar componentes que possam ser encontrados facilmente. Até mesmo PCs considerados obsoletos podem ser utilizá-los; Sistemas Distribuídos 57 Como funciona? Cluster Beowulf O sistema operacional deve ser de código aberto, razão pela qual o Linux e outras variações do Unix são bastante utilizados em cluster Beowulf; Os nós devem se dedicar exclusivamente ao cluster; Deve-se fazer uso de uma biblioteca de comunicação apropriada, como a PVM (Parallel Virtual Machine) ou a MPI (Message Passing Interface); Ambas são direcionadas à troca de mensagens entre os nós. Sistemas Distribuídos 58 Vantagens Cluster Beowulf Solução consideravelmente mais barata e menos complexa que um supercomputador. Construção de um cluster "poderoso" ; Poupar gastos com equipamentos; Licenças de software; Manutenção. Curiosidade: - O cluster montado por Thomas Sterling e Donald Becker para a NASA, por exemplo, era composto por 16 PCs com processador Intel 486 DX4 e sistema operacional Linux conectados por uma rede Ethernet de 10 Mb/s; Sistemas Distribuídos 59 Vantagens de Desvantagens de Cluster Pode-se obter resultados tão bons quanto ou até superiores que um servidor sofisticado a partir de máquinas mais simples e mais baratas (ótima relação custo-benefício); Não é necessário depender de um único fornecedor ou prestador de serviço para reposição de componentes; A configuração de um cluster não costuma ser trivial, mas fazer um supercomputador funcionar poder ser muito mais trabalhoso e exigir pessoal especializado; Sistemas Distribuídos 60 Vantagens de Desvantagens de Cluster É possível aumentar a capacidade de um cluster com a adição de nós ou remover máquinas para reparos sem interromper a aplicação; Há opções de softwares para cluster disponíveis livremente, o que facilita o uso de uma solução do tipo em universidades, por exemplo; Sistemas Distribuídos 61 Vantagens de Desvantagens de Cluster Relativa facilidade de customização para o perfeito atendimento da aplicação; Um cluster pode ser implementado tanto para uma aplicação sofisticada quanto para um sistema doméstico criado para fins de estudos, por exemplo; Entre outras. Sistemas Distribuídos 62 Computação em grade É uma rede de computadores na qual os recursos do computador são compartilhados com todo e qualquer computador no sistema; O que pode ser partilhado? Poder de processamento; Memória; Armazenamento de dados; 63 Computação em grade - Grid Computing Visão sobre Computação em Grade Pode ser tão simples quanto uma coleção de computadores parecidos rodando no mesmo sistema operacional; Podem ser tão complexo quanto sistemas de redes múltiplas que abrangem todas as plataformas de computador possamos imaginar. É um tipo especial de computação distribuída. 64 Grid Computing Sistemas Distribuídos 65 Sistemas de Computação em Grid (2) Diferentes dos sistemas baseados em Clusters, os sistemas de computação em Grid tem um alto grau de heterogeneidades, diferentes hardwares, SOs, redes, ... Usuários e recursos de diferentes organizações são interligados, permitindo total colaboração, criando uma Organização Virtual (V.O. = Virtual Organization) Os membros das V.O. tem total acesso a um conjunto comum de recursos (por exemplo, os sistemas da polícia americana, do FBI e de outras agencias formam um grid). Sistemas Distribuídos 66 Sistemas de Computação em Grid Sistemas Distribuídos 67 Sistemas de Computação em Grid (4) Middleware ou mediador- Programa de computador que faz a mediação entre software e demais aplicações. Sistemas Distribuídos 68 Camadas do modelo de Grid Computing: 1. Camada de Coletiva (Collective layer): manipula o - Acesso a múltiplos recursos, normalmente consiste em serviços para descoberta de recursos, alocação e escalonamento de tarefas. 2. Camada de Conectividade (Connectivity layer): - Consiste em protocolos de comunicação para suportar transações da grade que abranjam a utilização de múltiplos recursos. Sistemas Distribuídos 69 Camadas do modelo de Grid Computing: 3. Camada de Recurso (Resource layer): - Gerencia um único recurso, como criar um processo ou ler um dado. 4. Camada Base (Fabric layer): - Fornece interfaces para recursos locais em um site específico. Sistemas Distribuídos 70 Sistemas para Processamento de Transações Propriedades características das transações: • Atômicas: para o mundo exterior, a transação acontece como se fosse indivisível. • Consistentes: a transação não viloa as invariantes do sistema. • Isoladas: transações interferem umas com as outras. • Duráveis : uma vez terminada uma transação as alterações são permanentes. Sistemas Distribuídos 71 Integração de Aplicações Comerciais Vários pacotes de middleware e protocolos de comunicação são usados para dar suporte as aplicações comerciais, entre eles: • CORBA (Common Object Request Broker Architecture) • DCOM (Distributed Component Object Management) • RPC (Remote Procedure Call) • RMI (Remote Method Invocation) Sistemas Distribuídos 72 Sistemas Embarcados Distribuídos Requisitos para aplicações embarcadas: • Adotar mudanças contextuais (significa que um dispositivo deve estar ciente do fato de seu ambiente pode mudar o tempo todo). • Incentivar composição ad hoc (usos diferentes para usuários diferentes, por exemplo os PDA podem ter diferentes usos). • Reconhecer compartilhamento como padrão (isso requer meios para ler, armazenar gerenciar e compartilhar informações com facilidade). Sistemas Distribuídos 73 Sistema Eletrônico para Tratamento (pessoal) de Saúde Questões inerentes a aplicação: • Onde e como os dados monitorados deverão ser armazenados? • Como podemos evitar a perda de dados cruciais? • Qual é a infraestrutura necessária para gerar e transmitir sinais de alerta? • Como os médicos podem dar retorno on-line? • Como pode ser alcançada a extrema robustez do sistema de monitoração? • Quais são as questões de segurança e como as políticas adequadas podem ser impostas? Sistemas Distribuídos 74 Sistema Eletrônico para Tratamento de Saúde Sistemas Distribuídos 75 Redes de Sensores Sistemas Distribuídos 76 Redes de Sensores Questões referentes a redes de sensores: • Como montar (dinamicamente) um árvore eficiente em uma rede de sensores? • Como ocorre a agregação de resultados? Ela pode ser controlada? • O que acontece quando os enlaces falham? Sistemas Distribuídos 77 Redes de Sensores Sistemas Distribuídos 78 Redes de Sensores Sistemas Distribuídos 79