Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * Sistemas Distribuídos Prof. Flávio Euripedes de Oliveira Introdução * * Definição Um sistema distribuído é um conjunto de computadores independentes, interligados por uma rede de conexão, executando um software distribuído. Processo ● Executados concorrentemente ● Interagem para alcançar um objetivo comum ●Coordenação feita através de troca de mensagens, utilizando a rede de conexão * Definição Um sistema distribuído é uma coleção de computadores autônomos conectados por uma rede de comunicação que é percebida pelos usuários como um único computador que provê um serviço ou resolve um problema.(Tanenbaum & Steen, 2002) Um sistema distribuído é composto por computadores conectados em rede (hardware e software) que se comunicam e coordenam suas ações somente através do envio de mensagens.(Coulouris et al., 2001) * * Definição “Você sabe que existe um sistema distribuído quando a falha de um computador que você nunca ouviu falar impede que você faça qualquer trabalho”. (Leslie Lamport) * * Evolução Computacional Invenção de redes de computadores de alta velocidade (anos 70): Rede local (Local Area Network - LAN) Rede global (Wide Area Network - WAN) Desenvolvimento de microprocessadores potentes (anos 80). * * Sistemas Distribuídos É relativamente fácil agrupar um grande número de CPUs, conectando-as por uma rede de alta velocidade. O software para sistemas distribuídos é completamente diferente do software para sistemas centralizados. * * Por quê SDs? Vantagens: Cooperação e compartilhamento de recursos Benefícios: Redução de custos, aumento da confiabilidade, disponibilidade e desempenho * * Qual é a Importância? * * Exemplo1: WEB * * Exemplo2: Bancos * * Exemplo3: Napster * * Exemplo3: Outros Exemplos Similares ao NAPSTER EMULE BITORRENT SKYPE (VoIP) MSN MESSENGER, YAHOO Outros APLICAÇÕES DE MULTIMÍDIA WEB conferência Difusão de streams on-line (voz, vídeo) * * Exemplo4: Cluster(1) CLUSTERS ou AGRUPAMENTOS Máquinas conectadas por rede de alta velocidade Necessidade de alto desempenho computacional Evitar custo de máquinas de alto desempenho Objetivo: compartilhar recursos computacionais De processamento De armazenamento De memória Outros * * Exemplo4: Cluster(2) * JAGUAR Cluster de máquinas do Oak Ridge National Laboratory (EUA) Primeiro da lista dos TOP 500 SUPERCOMPUTERS INSTALADO EM 2009 224.162 CORES 1.759.000 Gflops FONTE http://www.top500.org/list/2010/06/100 Solução: agrupamento físico de máquinas de menor porte = cluster: •Mesmo espaço geográfico •Normalmente dentro da mesma organização, com software/hardware homogêneos •Softwares: OpenMosix, Condor e Oscar Cluster atual: https://tecnoblog.net/104684/ibm-sequoia-supercomputador/ http://www.top500.org/list * Exemplo4: Cluster(3) Clusters são utilizados para... Aumentar a disponibilidade de serviço se um nodo falha, outro assume Equilibrar carga de trabalho um ou mais computadores do cluster atuam como distribuidores da carga entre os demais Alto desempenho Para resolver tarefas complexas que podem ser decompostas em sub-tarefas, cada uma rodando num nodo do cluster. Implementação mais comum: LINUX e software livre para implementar paralelismo = Beowulf cluster * * Exemplo5: Grid(1) GRID ou GRADE= as máquinas encontram-se distantes geograficamente. É uma cooperativa de máquinas não pertencem necessariamente a mesma organização! são ditas organizações virtuais não há administração central dos recursos computacionais utilização de protocolos/padrões aberto * * Exemplo5: Grid(2) Aplicações Tarefas complexas decompostas Reunião dos resultados parciais Exemplos de grids de pesquisa Laboratório Nacional de Computação Científica: http://portalvcg.lncc.br/ Campina Grande: http://ourgrid.org * * Exemplo5: Grid(3) Exemplos – participação de qualquer usuário final World Community Grid: http://www.worldcommunitygrid.org Identificar quais defeitos em proteínas produzidas pelos genes humanos podem causar doenças Utiliza BOINC (Mensura quanto cada usuário contribuiu) TeraGrid da universidade de Purdue (www.teragrid.org) BBC Climate Change Experiment: http://climateprediction.net/ Tentativa de prever o clima para o século 21 Utiliza BOINC * * Razões para construir um SD Desempenho > sistema centralizado Distribuição natural das aplicações: bancárias, videoconf., etc. Robustez: frente a falhas Escalabilidade: sist. pode ser aumentado sem perda de desempenho? Compartilhamento de recursos Impressoras e outros hardwares Arquivos (inclusive páginas Web) CPU Memória Espaço em disco Dados * * Dificuldades: O desenvolvimento de um sistema distribuído é mais complexo do que um centralizado * * Exemplo: Baseando-se no exemplo da aplicação bancária mostrada no início destes slides e considerando que: Há acessos múltiplos (concorrentes) à mesma conta; Transações bancárias podem envolver contas armazenadas em diferentes bancos de dados (BD); Não interessa ao cliente se os dados de sua conta estão armazenados no BD1 ou BD2 pode-se concluir que as características importantes para este tipo de sistema são... * * Exemplo: Acessos múltiplos (concorrentes) à mesma conta: vários usuários acessam a mesma conta ou um sistema do banco (emissão de relatórios) acessa ao mesmo tempo em que usuários realizam transações. Transações bancárias podem envolver contas armazenadas em diferentes bancos ou localidades. O serviço deve ser transparente ao usuário –não interessa se os dados de sua conta estão armazenados no banco 1 ou banco 2, a aplicação não deve em nenhum momento deixar transparecer aspectos internos do sistema O serviço deve ser confiável e seguro Bases de dados replicadas devem ser consistentes Tolerância a falhas * * Como lidar com a Heterogeneidade? Sistemas distribuídos costumam ser organizados por meio de uma camada de software MIDLLEWARE Situado logicamente entre uma camada de nível mais alto, composta de usuários e aplicações, e uma camada adjacente (SOs e comunicação) * * Middleware Oculta a distribuição, isto é, o fato que a aplicação está sendo executada em diferentes máquinas distribuídas geograficamente Oculta a heterogeneidade: diferentes sistemas operacionais, diferentes protocolos de comunicação * * Middleware * * Metas: Acesso a recursos Transparência Abertura Escalabilidade * * Meta I – Acesso a Recursos Facilitar aos usuários e aplicações acesso a recursos remotos e o compartilhamento de maneira controlada e eficiente. ● Razão óbvia: Economia ● Impressoras, computadores, dados, página Web ●Conectividade e compartilhamento de informações Problema: Segurança * * Meta II – Transparência da Distribuição (1/8) Consiste em ocultar o fato de que os processos e recursos estão fisicamente distribuídos por vários computadores. * * Meta II – Transparência da Distribuição (2/8) Tipos: * * Meta II – Transparência da Distribuição (3/8) Acesso: Ocultar diferenças entre arquiteturas de máquinas Mais importante: Acordo sobre como os dados devem ser representados Exemplo: Nomeação de arquivos em SOs diferentes * * Meta II – Transparência da Distribuição (4/8) Localização: Usuários não são capazes de dizer a localização física do recurso Nomeação www.google.com → nome não dá pistas da localização física de um dos servidores google ( Não vale adotar o comando traceroute ! :) ) * * Meta II – Transparência da Distribuição (5/8) Migração: Recursos podem ser movimentados sem afetar o modo como podem ser acessados Exemplo: Mudança de um servidor WEB Relocação: Recursos podem ser relocados enquanto estão sendo acessados Exemplos: uso móvel de laptops (redes wireless) Celular se movimentando dentro da mesma área de cobertura * * Meta II – Transparência da Distribuição (6/8) Replicação: Permite que várias instâncias de recursos sejam usadas para aumentar a confiabilidade e o desempenho ; Deve mascarar o conhecimento das réplicas por parte dos usuários; * * Meta II – Transparência da Distribuição (7/8) Concorrência: Ocultar o fato que 2 ou mais usuários estejam acessando um recurso no mesmo instante; Deve garantir consistência. Falha: Ocultar do usuário que um recurso deixou de funcionar bem e que o sistema se recuperou da falha. Mascarar falhas é uma das questões mais difíceis. * * Meta II – Transparência da Distribuição (8/8) Sempre Requerida? Bela meta no projeto e na implementação de sistemas distribuídos, mas deve ser considerada em conjunto com outras questões, como desempenho e facilidade de compreensão. Exemplo: Aplicações de Internet tentam contatar um servidor repetidas vezes antes de desistir. Talvez seja melhor desistir mais cedo ou permitir que o usuário cancele as tentativas * * Meta III – Abertura Característica que determina se um sistema pode ser estendido de diferentes maneiras Hardware - Inclusão de dispositivos de fabricantes distintos Software –Módulos de SO –Protocolos de Comunicação –Recursos compartilhados * * Meta III – Abertura SD abertos baseiam-se em: Mecanismos de comunicação uniformes Especificados por organismos tais como OMG e IETF Ex. CORBA (OMG) Publicação de interfaces de serviços: para esconder a heterogeneidade de implementação dos serviços, as implementações devem aderir a uma forma de publicar as interfaces dos serviços * * Meta III – Abertura CORBA (abreviado de Common Object Request Broker Architecture) é a arquitetura padrão criada pelo Object Management Group para estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. Em face da diversidade de hardware e software que encontramos atualmente, a CORBA atua de modo que os objetos (componentes dos softwares) possam se comunicar de forma transparente ao usuário, mesmo que para isso seja necessário interoperar com outro software, em outro sistema operacional e em outra ferramenta de desenvolvimento. CORBA é um dos modelos mais populares de objetos distribuídos, juntamente com o DCOM, formato proprietário da Microsoft. * Meta III – Abertura ORB A arquitetura CORBA define o ORB (Object Request Broker) como um módulo intermediário entre cliente e objeto, sendo responsável em aceitar a requisição do cliente, enviá-la para o objeto competente e, assim que disponível a resposta, entregá-la para o cliente. IDL A CORBA utiliza a IDL (Interface Definition Language), uma linguagem baseada em C++ que não possui algoritmos nem variáveis, ou seja, é puramente declarativa, e, portanto, é independente da linguagem de programação utilizada para acessá-la. Há padrão de IDL definido pelo OMG para C, C++, Java, TTCN, COBOL, Smalltalk, Ada, Lisp, C#, Python e IDLscript. Possibilita a interoperabilidade entre os diversos sistemas, visto a separação que é definida entre interface e execução. A interface de cada objeto é definida de forma bastante específica, enquanto a sua execução (código fonte e dados) permanece oculta para o resto do sistema. * Meta III – Abertura Interoperabilidade: Caracteriza até que ponto duas implementações de sistemas ou componentes de fornecedores diferentes devem coexistir e trabalhar em conjunto Portabilidade: Caracteriza até que ponto uma aplicação desenvolvida para uma sistema distribuído A pode ser executada, sem modificação, em um sistema distribuído diferente B que implementa as mesmas interfaces que A * * Meta IV – Escalabilidade Um SD é escalável se, ao adicionarmos novos recursos e usuários, seu desempenho permanece satisfatório. Exemplos: Endereços IPv4 de 32 bits => IPv6 128 bits DNS, no início, era uma tabela => foi particionada e é tratada localmente contendo replicações. Técnicas para garantir escalabilidade: Replicação de dados Caching Replicação de serviços * * Meta IV – Escalabilidade Três Dimensões Tamanho Termos Geográficos Termos Administrativos * * Meta IV – Escalabilidade: Tamanho Aumento do número de usuários e/ou processos PROBLEMAS * Meta IV – Escalabilidade: Tamanho Serviços Centralizados Serviços que são implementados por meio de apenas um único servidor que executa em uma máquina específica no sistema distribuído Possível Gargalho no sistema * * Meta IV – Escalabilidade: Tamanho Dados Centralizados Números telefônicos estivessem em um único banco de dados → saturação de todas as linhas de comunicação que o acessam DNS * * Meta IV – Escalabilidade: Tamanho Algoritmos Centralizados Para evitar troca de mensagens → colher informações de todas as máquinas e linhas e executar um algoritmo para computar todas as rotas ótimas → propagar as informações por todo o sistema Péssima idéia!! * * Meta IV – Escalabilidade: Termos Geográficos Usuários e/ou recursos podem estar longe um dos outros PROBLEMAS Dificuldade de ampliar sistemas distribuidos existentes que foram originalmente projetados para redes locais: COMUNICAÇÃO SÍNCRONA Comunicação em redes de longa distância é inerentemente não confiável, ponto-a-ponto Localização de serviços * * Meta IV – Escalabilidade: Administrativa Sistema pode ser fácil de gerenciar, mesmo que abranja muitas organizações diferentes PROBLEMAS Políticas conflitantes em relação a utilização – e pagamento – de recursos, gerencialmente e segurança * * Meta IV – Escalabilidade: Administrativa Os usuários de um único domínio podem confiar em componentes de um sistema distribuído que residam dentro desse mesmo domínio. Confiança não ultrapassa as fronteiras do domínio: a administração do sistema deve testar e certificar aplicações e tomar providências especiais para garantir que os componentes não sofram nenhuma ação indevida. * * Meta IV – Escalabilidade Três técnicas Ocultar latências de comunicação Distribuição Replicação * * Técnicas de Escalabilidade: Ocultar Latências Escalabilidade Geográfica Evitar esperar por respostas a requisições remotas Comunicação Assíncrona * * Técnicas de Escalabilidade: Ocultar Latências Aplicações Interativas devem esperar por uma resposta Solução: Reduzir comunicação global, passando parte da computação do servidor para o cliente que está requerendo o serviço * * Técnicas de Escalabilidade: Ocultar Latências Exemplo: Acesso a banco de dados por meio de formulários * * Técnicas de Escalabilidade: Distribuição Escalabilidade de Tamanho Dividir um componente em partes menores e espalhar as sub-partes pelo sistema * * Técnicas de Escalabilidade: Distribuição Exemplo: DNS: hierarquia em árvore de domínios, dividida em zonas se sobreposição * * Técnicas de Escalabilidade: Replicação Aumenta a disponibilidade dos recursos Equilibra a carga entre os componentes Sistemas com ampla dispersão geográfica ->ocultar os problemas de latência Cache Forma especial de replicação Cache é uma decisão do cliente do sistema * * Ciladas Premissas falsas adotadas ao se desenvolver pela primeira vez uma aplicação distribuída Rede é confiável Rede é segura Rede é homogênea Topologia constante Latência zero Largura de banda é infinita Custo de Transporte é zero Existe somente um administrador * * Tipos de Sistemas Distribuídos: Sistemas de Computação Sistemas de Informação Sistemas Pervasivos * * Tipos: Sistemas de Computação Computação de Cluster Computação em Grade * * Sistemas de Computação: Cluster Hardware consiste em um conjunto de estações de trabalho ou Pcs semelhantes Conexão feita através de uma rede local Em quase todos os casos, a computação de cluster é usada para programação paralela na qual um único programa é executado em paralelo * * Sistemas de Computação: Cluster * * Sistemas de Computação: Grade Heterogeneidade Recursos de diferentes organizações são reunidos para permitir a colaboração de um grupo de pessoas ou instituições * * Sistemas de Informação Sistemas empresariais desenvolvidos para integrar diversas aplicações individuais, onde a interoperabilidade se mostrou “dolorosa” Sistemas de processamento de Transações Integração de Aplicações Empresariais * * Sistemas de Informação: Processamento de Transações Requer primitivas especiais que devem ser fornecidas pelo sistema distribuído ou pelo sistema de linguagem * * Sistemas de Informação: Processamento de Transações Características Atômicas: para o mundo exterior, indivisível Consistentes: não viola invariantes de sistema Isoladas: transações concorrentes não interferem umas com as outras Duráveis: uma vez comprometida uma transação, as alterações são permanentes * * Sistemas de Informação: Processamento de Transações Transação Aninhada Transação é construída com base em uma quantidade de subtransações * * Sistemas de Informação: Processamento de Transações No começo, o componente que manipulava transações distribuídas, ou aninhadas, formava o núcleo para integração de aplicações no nível do servidor ou do banco de dados Monitor de processamento de transação: permitir que uma aplicação acessasse vários servidores/bancos de dados * * Sistemas de Informação: Processamento de Transações * * Sistemas de Informação: Integração de Aplicações Empresariais Aplicações querem muito mais em termos de comunicação, não somente modelo de requisição/resposta Middleware de Comunicação Chamadas de Procedimento Remoto Invocações de Método Remoto Middleware Orientado a Mensagem * * Sistemas de Informação: Integração de Aplicações Empresariais * * Sistemas de Informação: Integração de Aplicações Empresariais Chamadas de Procedimento Remoto (RPC) Componente de aplicação pode enviar a um outro componente de aplicação Requisição e Resposta são empacotadas em mensagens * * Sistemas de Informação: Integração de Aplicações Empresariais Invocações de Método Remoto (RMI) Popularidade da Tecnologia de Objetos RMI semelhante a RPC, exceto que funciona com objetos em vez de com aplicações * * Sistemas de Informação: Integração de Aplicações Empresariais Desvantagens do RPC e RMI: Componentes da comunicação devem estar ligados e em funcionamento Precisam saber exatamente como se referir um ao outro Middleware Orientado a Mensagem (MOM) Aplicações enviam mensagens a pontos lógicos de contato O Middleware se encarrega de entregar todas as mensagens destinadas a uma aplicação * * Sistemas Pervasivos Instabilidade é o comportamento esperado destes sistemas Dispositivos de computação móveis e embutidos Pequenos Alimentação por bateria Mobilidade Conexão sem fio * * Sistemas Pervasivos Parte do nosso entorno Ausência geral de controle administrativo humano Requisitos para as aplicações pervasivas: Adotar mudanças contextuais Incentivar composição ad hoc Reconhecer compartilhamento como padrão * * Sistemas Distribuídos: Resumo Altamente difundidos atualmente Baseado em um conjunto de diferentes tecnologias Entendimento dos conceitos e principiais problemas extremamente importantes para gerenciamento, implementação e programação * *
Compartilhar