Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Aplicadas Departamento de Computação e Sistemas Campus João Monlevade - MG LISTA I – CSI433 SISTEMAS DISTRIBUÍDOS 1 – Apresente uma definição para Sistemas Distribuídos e destaque as suas principais características. R: Definição: Segundo Tanenbaum, um Sistema Distribuído (SD) é um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente. Essa definição apresenta alguns aspectos: 1) Os componentes (computadores) são autônomos. 2) Os usuários, sejam eles pessoas ou programas, acreditam que estão lidando com um único sistema. 3) Os componentes se comunicam a todo momento. Características: Compartilhamento de recursos, Heterogeneidade, Escalabilidade, Transparência, Concorrência, Tolerância a falhas, Segurança. • Não é estabelecida nenhuma premissa em relação ao tipo de computador; • Componentes podem variar desde centrais, como mainframes de alto desempenho até pequenos nós em redes de sensores; • Não estabelecida nenhuma premissa em relação ao modo como os computadores são interconectados; • Os tipos de computadores e o modo como os mesmo de comunicam estão, na maioria das vezes, ocultos ao usuário; • Usuário podem interagir com um sistema distribuído de maneita consistente e unidorme, independente de onde a interação ocorra; • A escala de um SD deve ser relativamente fácil de ser expandida; • Um SD está sempre disponível mesmo que uma outra parte esteja temporariamente inativa; 2 – Explique a importância do conceito de “Transparência” no projeto de um SD e seus principais tipos. R: Transparência: “Esconder” dos usuários a distribuição física dos recursos. ➢ A importância do conceito de “transparência” está implícita no conceito de um Sistema Distribuído, pois o principal objetivo de um SD é que seus recursos estejam espalhados sem que o usuário tenha a noção real disso. Se o usuário tem conhecimento de como se dá a distribuição do sistema, então é muito provável que o SD falhe em seu objetivo, visto que será público uma eventual concentração de recursos. Principais Tipos de Transparência: 1) Acesso: recursos locais e remotos acessados igualmente. • Oculta diferenças em representação de dados e o modo como os recursos podem ser acessados por usuários. • O mais importante é chegar a um acordo sobre como os dados podem ser representados por máquinas e Sistemas Operacionais diferentes. EX: Diferenças entre sistemas de nomeação e como arquivos são manipulados. 2) Localização: usuários não sabem localização dos recursos. • Os usuários não podem saber a localização física de um recurso no sistema. O nome do recurso deve ser independente de sua localização física; • Em particular, pode-se conseguir transparência de localização ao se atribuir somente nomes lógicos aos recursos; • Nomes lógicos (URL): usuário acessa recursos da independente de onde ele está. EX: o URL não deve dar nenhuma pista sobre a localização do principal servidor Web -> http://www.ufop.br/index.html. 3) Migração: recursos podem se mover sem trocar de nomes. • Recursos podem ser movidos sem alterar o modo como podem ser acessados proporcionam transparência de migração; • Mais vantajosa ainda é a situação na qual um recurso pode ser realocado enquanto está sendo usado sem que a aplicação e o usuário percebam. EX: Uso de dispositivos móveis sem fio, cujos usuários continuam a usar. 4) Replicação: usuários não sabem no de cópias de um recurso. • Oculta que um recurso possa ser movido para outra localização durante o uso; • Recursos podem ser replicados para aumentar a disponibilidade ou melhorar o desempenho colocando uma cópia perto do lugar em que ele é acessado; • Estárelacionadaaocultarofatodequeexistemváriascópiasdeumrecurso. EX: Serviços em nuvem que podem replicar dados para servidores mais próximos; 5) Concorrência: vários usuários compartilham recursos automaticamente. • Em muitos casos, o compartilhamento de recursos é cooperativo, como no caso da comunicação. Mas, também existe muitos exemplos de compartilhamento competitivo de recursos; • Nesses casos, é importante que cada usuário não perceba que o outro está utilizando o mesmo recurso; • Garantir exclusão mútua; • Evitar deadlocks; • Tolerar falhas, detectar e recuperar falhas; EX: Dois usuários independentes, em que cada um pode ter armazenado seus arquivos no mesmo servidor de arquivos ou pode acessar as mesmas tabelas em um banco de dados compartilhado. 6) Falha: um usuário não percebe que um recurso deixou de funcionar bem. • Mascarar falhas em um SD é complicado, pois o sistema muitas vezes não consegue diferenciar um recurso morto de um recurso muito lento. EX: Conectar-se a um servidor Web ocupado e, após um período, o tempo de browser se esgotará e ele avisará que a página Web não está disponível. 3 – Cite três tipos de recurso de hardware e três tipos de recursos de dados ou de software que possam ser compartilhados com sucesso. Dê exemplos práticos de seu compartilhamento em sistemas distribuídos. R: Recursos de Hardware: Disco, memória, processadores. Recursos de Software: Bancos de Dados, Arquivos, protocolo de comunicação. ➢ Os processadores compartilham recursos de hardware e, na maioria das vezes apresentam capacidade de processamento bem similares. Em sistemas com multiprocessadores assimétricos isso acontece de forma diferente, pois geralmente um processador tem a responsabilidade de distribuir os recursos do sistema para os demais processadores. Já em sistemas de multiprocessadores simétricos o conceito de Sistema distribuído se encaixa melhor, pois como todos os processadores são tratados de forma equivalente, os mesmos podem assumir tarefas ou processos de outros, sendo que também podem ser executadas de forma concorrente em núcleos diferentes que estejam disponíveis. Em relação a dispositivos de entrada/saída e a memória, os acessos de processadores a eles ocorrem através de um mecanismo de intercomunicação com barramento único. ➢ A memória principal do computador é compartilhada pelos processadores através de um único barramento que os interliga, isso gera um gargalo no sistema, visto que os acessos são seriais e sistema fica impossibilitado de passar mais de uma instrução por vez. 4 – Considere as estratégias de implementação de MMOG (massively multiplayer online games) discutidas na Seção 1.2.2 do livro texto. Em particular, quais vantagens você vê em adotar a estratégia de servidor único para representar o estado do jogo para vários jogadores? Quais problemas você consegue identificar e como eles poderiam ser resolvidos? R: Um servidor único traz algumas vantagens como: economia de energia pelo fato da centralização de um servidor; economia de mão de obra, pois não é necessário configurar outros componentes como servidores; o fato de ter em apenas um servidor os estados do mundo virtual criado para o game auxilia no gerenciamento, gerando apenas uma cópia de segurança, isso diminui, também, a preocupação com a coerência no universo que engloba o game. Um servidor único traz consigo, também, algumas desvantagens: como o sistema não é distribuído se esse servidor único falhar ou apresentar alguma inconsistência isso afetará todos os usuários, visto que não há outro servidor para oferecer a aplicação transparência de falhas. A distância desse servidor central de usuários também seria um agravante, a aplicação poderia se tornar insuportavelmente lenta. 5 – Compare e contraste a computação em nuvem com a computação cliente-servidor mais tradicional. O que há de novo em relação à computação em nuvem como conceito? R:A arquitetura cliente-servidor possui máquinas dedicadas, geralmente é usada com configurações de armazenamento e processamento pré-definidas adotadas por uma determinada organização que tem autonomia sobre processos de backups e segurança. A computação em nuvem usa o conceito de distribuição de aplicações que devem trabalhar como se fossem uma. As aplicações podem estar distribuídas em diversos lugares ao mesmo passo que é muito eficiente por usar tecnologias como a virtualização. A vantagem da “nuvem” é a escalabilidade, muitas organizações podem usar apenas o espaço necessário para o bom funcionamento de suas aplicações. EX: Redes sociais, buscadores, ferramentas Saas. 6 – Qual o principal papel do middleware em um sistema distribuído? R: O principal papel de um middleware em um SD é suportar redes heterogêneas formadas por vários tipos de dispositivos oferecendo sempre uma visão unificada. O middleware é concedido por meio de uma camada de software que está situada logicamente entre o nível mais alto, composta por usuários/aplicações e uma camada mais baixa, que consiste em sistemas operacionais e facilidades básicas de comunicação. Figura: Um sistema Distribuído organizado como um middleware Na figura, há três aplicações, sendo que a aplicação B é distribuída para as máquinas 2 e 3 que trabalham em sistemas operacionais diferentes. O SD não deixa que divergências de hardware e de sistemas operacionais das aplicações distribuídas sejam visíveis. A camada Middleware apresenta-se a diversas máquinas, oferecendo a mesma interface a cada aplicação. O sistema distribuído proporciona os meios para que os componentes de uma única aplicação distribuída se comuniquem uns com os outros, mas também permite que diferentes aplicações se comuniquem. Ao mesmo tempo, ele oculta, do melhor e mais razoável modo possível, as diferenças em hardware e sistemas operacionais para cada aplicação. 7 – Apresente e discuta sobre as principais diferenças entre um Sistema de Computação Paralela e um sistema de Computação Distribuído e associe aos conceitos de Grid e Cluster de computadores. R: Em um sistema de Computação Paralela, as operações trabalham com o conceito de que as tarefas sempre podem ser divididas em tarefas menores, que podem ser resolvidas em paralelo, de forma concorrente. A memória é compartilhada, as máquinas possuem capacidade de processamento similares e o objetivo é aumentar a vazão ou reduzir o tempo de serviço. Em um sistema de Computação Distribuída as aplicações são descentralizadas, e bem escaláveis. Elas compartilham recursos fisicamente dispersos e os integra. ➢ A diferença mais gritante entre os sistemas paralelo e distribuído é que os sistemas paralelos exigem muitos processadores dentro de uma única configuração, já os sistemas distribuídos podem trabalhar com o aproveitamento de poder de processamento de diversas máquinas. A computação em Grid consiste em sistemas distribuídos que costumam ser montados como uma sequencia de computadores, nos quais cada sistema pode possuir um domínio diferente. Em Cluster de Computadores, os hardwares são bem parecidos, com capacidade de processamento mais homogênea. Geralmente, são conectados por uma rede local de alta velocidade, com as máquinas executando o mesmo O.S. 8 – Um serviço é implementado por vários servidores. Explique por que recursos poderiam ser transferidos entre eles. Seria satisfatório para os clientes, fazer multicast (difusão seletiva) de todos os pedidos para o grupo de servidores, como uma maneira de proporcionar transparência de mobilidade para os clientes? R: Em um Sistema Distribuído se um serviço é implementado por um servidor deve ser possível que aplicações distribuídas também implementem esse serviço de modo transparente a clientes/aplicações, por diversas razões como, facilidade de acesso, de possíveis transferências, pela capacidade de processamento, entre outros motivos. Fazer multicast de todos os pedidos seria uma forma de proporcionar transparência ao cliente, é um método muito útil no âmbito dos sistemas distribuídos, pois pode ser tolerante a falhas, já que os pedidos são replicados, por exemplo: se um pedido apresentar falhas ou se tornar insuportavelmente lento, é possível que o mesmo pedido, já replicado, não apresenta falhas e trabalhe intactamente. 9 – Dê três exemplos específicos e contrastantes dos níveis de heterogeneidade cada vez maiores experimentados nos sistemas distribuídos atuais. R: É preciso avaliar a heterogeneidade a nível de: Hardware: A distribuição dos sistemas deve atender a aplicação de todos os tipos cujos dispositivos, atualmente apresentam discrepâncias bem significativas, tanto em relação a memória, processamento e tipo. Algumas são Desktops, outros notebooks, smartphones. Sistemas Operacionais: Há discrepância realmente significativas quanto ao uso de sistemas, podendo ser SOs de vários tipos e fabricantes diferentes, com diferentes mecanismos de segurança. Rede: Há diferenças nos protocolos para redes de tipos diferentes como IP, TCP, UDP, SMTP. 10 – Descreva e ilustre a arquitetura cliente-servidor de um aplicativo de Internet importante (por exemplo, Web, correio eletrônico ou outros). R: 1. O usuário envia dados ao servidor. (Ex: URL de um site) 2. O servidor usa o interpretador para os dados. 3. Pode ser que a página a ser oferecida requeira informações de algum arquivo interno. 4. Solicita informações de um BD e incorpora a página. 5. A página é montada e configurada. 6. O servidor envia a página para o navegador do usuário e monta a apresentação final da página. Fonte: Carambola Digital 11 – Construir um servidor concorrente por meio da multiplicação de um processo tem algumas vantagens e desvantagens em comparação com servidores multithread. Cite e explique algumas. R: Os servidores multithread não manipulam por si próprio os processos ou threads que devolvem a resposta ao cliente. Os threads são computacionalmente mais baratas de serem criadas e gerenciadas do que os processos e o compartilhamento de recursos pode ser obtido de forma mais eficiente entre threads do que entre processos, pois elas compartilham um ambiente de execução. Chaveamento entre threads: é uma vantagem para o desempenho dos threads. Executar um thread (que pertence a processos diferentes) em detrimento de outra em determinado processador gera um custo computacional, pois pode acontecer diversas vezes durante um thread. Dessa forma, prioriza-se o chaveamento entre threads que compartilham o mesmo ambiente de execução, porque é consideravelmente menos oneroso do que o chaveamento entre threads pertencentes a processos diferentes. 12 – Considerando o projeto de um serviço onde os conceitos de mobilidade de código serão aplicados, comente sobre quais questões o projetista deve ser levar em conta antes de realizar as suas escolhas. R: As tecnologias que visam a mobilidade de código permitem que partes de códigos possam ser retransmitidos através da rede para serem executados em locais remotos. Quando se pensa em mobilidade de código, o objetivo é prover mais desempenho a determinada aplicação. Se for um recurso muito específico é possível que não seja possível ser movido. É necessário avaliar se a transparência de mobilidade é garantida e é imprescindível que a aplicação seja autônoma para migrar dentro de um sistema distribuído 13 – Um mecanismo de busca é um servidor Web que responde aos pedidos do cliente para pesquisar em seus índices armazenados e (concomitantemente) executa várias tarefas de Web crawling (spiders) para construir e atualizar esses índices. Quais são os requisitos de sincronização entre essas atividades concomitantes? R: Web crawlers são executados em segundo plano quando se fala em um mecanismo debuscas. Usa-se pedidos http para ter acesso ao maior número de servidores possíveis na internet. Um mecanismo de busca pode se comportar tanto como um servidor ou como cliente, pois as buscas de usuários são respondidas; executa web crawlers que agem como clientes de outros servidores. Essas atividades possuem pouca necessidade de serem sincronizadas, visto que o servidor tem como dever responder as requisições do cliente e as ações do web crawler executam requisições a outros servidores. 14 – Frequentemente, os computadores usados nos sistemas peer-to-peer são computadores desktop dos escritórios ou das casas dos usuários. Quais são as implicações disso na disponibilidade e na segurança dos objetos de dados compartilhados que eles contêm e até que ponto qualquer vulnerabilidade pode ser superada por meio da replicação? R: Nesse tipo de arquitetura, os processos que englobam uma atividade possuem papéis parecidos, trabalhando de forma cooperativa em pares (peers), sem diferenciação entre processos clientes e processos servidores. O objetivo de um sistema peer-to-peer é explorar os recursos de um grande número de computadores para o comprimento de uma dada tarefa ou atividade, por isso esse meio possui um grande chamativo para disseminação de vírus, sendo ainda mais agravado pelo fato de ser difícil controlar o tráfego nesse modelo. Em sistemas peer-to-peer, um tipo de ataque muito comum são os de negação de serviços, o ataque DoS – Denial of Service – que impedem que servidores executem suas atividades. Dessa forma os computadores ficam mais vulneráveis, visto que os protocolos de segurança não serão executados eficientemente e a disseminação de malwares ocorrerá de forma deliberada. A replicação pode ser útil em manter os computadores em funcionamento, provendo tolerância às falhas, até certo ponto, pois as aplicações mal intencionadas ou vírus poderiam, também, se beneficiar da replicação para multiplicar-se e deixar o sistema ainda mais infectado. 15 – Quais são as principais tendências em termos de desenvolvimento e uso de sistemas distribuídos? Dê alguns exemplos. R: Os sistemas distribuídos sempre foram muito aplicáveis. Ainda hoje, há grande ascensão no uso deles, principalmente em aplicações de multimídia, seja no mundo mobile ou web. Para web, a tendência é que se tenha buscadores mais eficazes implementando aplicações mais sofisticadas, baseando-se em padrões de pesquisa (envolve IA), a W3C é uma organização que busca a padronização da World Wide Web, essa padronização envolve programas que tentam acessar códigos para entender onde devem ser implementado cada informação; isso envolve o uso de uma aplicação muito bem distribuída para que o acesso aos códigos seja feito facilmente e de forma eficiente. 16 – Em geral, a segurança em SDs é mais difícil de ser obtida do que em sistemas centralizados. Explique os principais motivos. R: Em sistemas centralizados, as informações estão, consequentemente, centralizadas. Sendo assim, é um pouco menos complicado prover segurança a uma aplicação, que é executada em um mainframe, por exemplo. Em sistemas distribuídos, lida-se com redes de computadores diferentes com máquinas diferentes, que possuem sistemas operacionais diferentes, capacidade de processamento e memórias diferentes. Dessa forma, o desafio de manter a segurança contra atividades mal intencionadas requer o uso de uma estratégia mais abrangente para proteger todos os nós do sistema, visto que há grande número de variáveis. O grande poder computacional que os sistemas distribuídos gera, deve ser acompanhado por aplicações que mantenham a segurança, se há acesso indevido aos dados no sistema significa que as ações de segurança estão sofrendo falhas. 17 – A comunicação em SDs é fundamental. Cite e explique os principais métodos existentes para se implementar essa comunicação. R: Sockets: É a forma de possibilitar que dois processos se comuniquem (Inter-Process communication), esses processos podem ou não estar no mesmo componente. Os sockets estão entre a camada de transporte e a camada de aplicações, propiciando uma interface entre a aplicação e a rede de forma muito transparente. Ex: Navegador Web. • RPC – Remote Procedure Call: Dada a dificuldade em programar para ambientes distribuídos, o RPC visa tornar fácil a implementação de aplicações distribuídas, permitindo chamada de procedimento remoto como se fosse local. O RPC “esconde” o código das chamadas a rede em procedimentos chamados stubs – procedimentos com código de chamadas a rede. • RMI – Remote Method Invocation: RMI – Java também é um mecanismo para permitir a invocação de métodos que estão em máquinas diferentes; é um mecanismo de chamada de procedimentos remotos orientada a objetos. • CORBA – Commom Object Request Broker Architecture: CORBA visa estabelecer a troca de dados entre os sistemas distribuídos de forma simplificada. Dada a diversidade de componentes nos sistemas distribuídos, ele atua propiciando transparência na comunicação. • EJB – Enterprise Java Bean: É usado em implementações baseadas em máquinas que possuem escalabilidade, geralmente, apresentando lógicas específicas para um tipo de negócio. • Web Services: É um método usado para integrar componentes, propiciando a comunicação em sistemas que implementam aplicações diferentes. Os Web Services devem possibilitar que as aplicações mandem dados e os recebam, podendo cada aplicação implementar a sua própria linguagem que será traduzida para uma universal, em formatos intermediários (Ex: Json, xml), 18 – Para pensar de forma genérica sobre as possíveis ocorrência de certas situações em SDs o livro texto usa o que chama de “modelos fundamentais”. Explique o são esses modelos de forma geral e o que ele considera nos modelos específicos apresentados abaixo. R: Os modelos de arquitetura para sistemas distribuídos apresentam propriedades fundamentais idênticas. Todos são compostos de processos que se comunicam por meio do envio de mensagens através de uma rede de computadores. É necessário, também que todos possuam os mesmos requisitos de projeto, se preocupar com as características de desempenho e confiabilidade dos processos e das redes de comunicação e com a segurança dos recursos presentes no sistema. Um modelo fundamental deve conter apenas os ingredientes essenciais que precisamos considerar para entender e raciocinar a respeito de certos aspectos do comportamento de um sistema. O objetivo de um modelo é: - Tornar explícitas as suposições relevantes sobre o sistema que está sendo modelado; - Generalizar ações sobre o que é possível ou impossível, dadas essas suposições. As generalizações podem ser algoritmos de propósito geral ou propriedades desejáveis. • Modelos de interação: a computação é feita por processos; eles interagem passando mensagens, resultando na comunicação (fluxo de informações) e na coordenação (sincronização e ordenação das atividades) entre eles. O modelo de interação deve refletir o fato de que a comunicação ocorre com atrasos que, frequentemente, têm duração considerável. A precisão com a qual processos independentes podem ser coordenados é limitada pelos atrasos de comunicação e pela dificuldade de se manter a mesma noção de tempo entre todos os computadores de um sistema distribuído. • Modelos de falhas: a operação correta de um sistema distribuído é ameaçada quando ocorre uma falha em qualquer um dos computadores em que ele é executado (incluindo falhas de software) ou na rede que os interliga. O modelo de falhas define e classifica as falhas. Isso fornece uma base para a análise de seus efeitos em potencial e para projetar sistemas capazes de tolerar certos tipos de falhas e de continuar funcionando corretamente. • Modelos de segurança: a naturezamodular dos sistemas distribuídos, aliada ao fato de ser desejável que sigam uma filosofia de sistemas abertos, expõem-nos a ataques de agentes externos e internos. O modelo de segurança define e classifica as formas que tais ataques podem assumir, dando uma base para a análise das possíveis ameaças a um sistema e, assim, guiando seu desenvolvimento de forma a ser capaz de resistir a eles. 19 – Faça uma análise geral sobre os servidores multimídia e suas principais diferenças em relação aos servidores tradicionais. Aproveite para consolidar seus conhecimentos sobre servidor com estado e sem estado. R: As mídias são dados contínuos, baseados no tempo (como áudio e vídeo digital). As aplicações multimídia envolvem a distribuição de fluxos dos dados multimídia com restrições temporais para os usuários finais, ou sejam, os fluxos de dados multimídia são gerados e consumidos em tempo real, fazendo com que, consequentemente, os servidores sejam sistemas em tempo real, pois precisam executar tarefas e apresentar resultados de acordo com um escalonamento determinado externamente. Esse escalonamento é quem vai determinar o “grau de atraso” (stream) na execução das tarefas em um sistema; o quão ajustado o sistema está para permitir que aplicação trabalhe com streams sem maiores problemas, usufruindo da chamada QoS – Quality of Service. Um servidor multimídia deve possuir maior capacidade de processamento para suportar os processos de escalonamento, maior capacidade de armazenamento, implementações de posicionamento e balanceamento de carga. Servidores com estado armazenam informação sobre cada cliente, as operações podem ser implementadas de forma mais eficiente e as mensagens com pedidos são menores. Servidores sem estado devem implementar toda a informação necessária para seu processamento, apresentam maior escalabilidade e sua implementação é, consideravelmente, mais simples que a de um servidor com estado.
Compartilhar