Baixe o app para aproveitar ainda mais
Prévia do material em texto
1.1- Cite cinco tipos de recursos de hardware e cinco 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: Como recursos de hardware, podemos citar o compartilhamento de discos para armazenamento de dados, o compartilhamento de poder de processamento, compartilhamento de periféricos como impressoras através de servidores de impressão, o compartilhamento de placas de expansão como as GPUs (Graphics Processing Unit), e o compartilhamento de rede através de switches e roteadores. Como recursos de software, temos o compartilhamento de arquivos, compartilhamento de bases de dados (database), compartilhamento de sessões remotas em sistemas operacionais, a oferta de aplicações Web e de documentos http (páginas Web). Como exemplos: - Um escritório onde computadores precisam estar conectados em rede, para acesso aos sistemas em uso, e que por limitações possuem apenas uma impressora a disposição, compartilhada por meio de um print server conectado na rede interna. - Um conjunto de computadores geograficamente afastados, mas conectados em rede, através de diversas infraestruturas, compartilhando o poder computacional de suas GPUs. - Uma residência onde todas as TVs ou computadores tem acesso a uma serie de pastas compartilhadas na rede local, pastas estas contendo arquivos de mídia em áudio e vídeo. 1.2- Como os relógios de dois computadores ligados por uma rede local podem ser sincronizados sem referência a uma fonte de hora externa? Quais fatores limitam a precisão do procedimento que você descreveu? Com os relógios de um grande número de computadores conectados pela Internet poderiam ser sincronizados? Discuta a precisão desse procedimento. R: Dois computadores podem sincronizar seus relógios por troca de mensagens entre sí. Sendo um deles o que vai servir como referência por supostamente ser o que tem a hora correta, então fazendo uso de algoritmos que calculem e que meçam o tempo de envio e retorno das mensagens, o computador que consulta a hora pode avaliar desde possíveis atrasos de comunicação, até as marcas temporais das mensagens referentes aos relógios internos de cada máquina, para então calcular a diferença no atraso durante a comunicação, o tempo que será necessário ser ajustado e então os relógios para então estarem sincronizados. Fatores limitantes podem ser por exemplo, sobrecarga na rede local, levando a atrasos na comunicação ou até mesmo falhas de comunicação na rede, a ausência de comunicação, a indisponibilidade do computador consultado para responder as requisições, falhas no desenvolvimento do algoritmo. Utilizando-se da estratégia já mencionada, é possível também fazer a sincronização de computadores através da internet, desde que uma máquina seja escolhida como referência precisa, para todos os outros. Más então podem ocorrer em muito maior escala, os atrasos e falhas de comunicação, já que os pacotes podem viajar por uma grande quantidade de equipamentos e a cada equipamento o atraso em milissegundos vai se acumulando. Para solucionar possíveis problemas o algoritmo deve ser capaz de driblar essas falhas. 1.3- Considere as estratégias de implementação de MMOG (jogos online multijogador massivos) discutidas na Seção 1.2.2. 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: Como vantagens é possível apontar a redução na complexidade no gerenciamento e consistência do mundo virtual, a redução na complexidade na manutenção da coerência, a agilidade na comunicação de eventos internos. Como problemas, é possível mencionar as dificuldades ligadas ao porte da infraestrutura, a necessidade de estratégias internas eficientes para a distribuição regional de acessos (de usuários), problemas envolvendo limites na arquitetura e instalações da infraestrutura que possam causar indisponibilidade momentânea geral devido a um possível acesso massivo por exemplo. Problemas como os citados poderiam ser evitados com a distribuição de servidores por região (continente/país) em que haja demanda, também descentralizando o serviço, distribuindo o serviço por regiões de acordo com a demanda. 1.4- Um usuário chega a uma estação de trem que nunca havia visitado, portando um PDA capaz de interligação em rede sem fio. Sugira como o usuário poderia receber informações sobre serviços locais e comodidades dessa estação, sem digitar o nome ou os atributos da estação. Quais os desafios técnicos devem ser superados? R: Dados correspondentes à localização atual do usuário poderiam ser disponibilizados por meio de acesso wireless oferecido pela estação, mesmo que um acesso restrito (não conectado à internet), oferecendo ao usuário acesso a uma leve aplicação web, com pelo menos texto e imagens estáticas, exibindo os dados relacionados à localidade. Alguns dos desafios são, necessidade de altíssima capacidade para múltiplas conexões nos pontos de acesso da estação, qualidade do serviço de conexão em rede sem fio, qualidade na aplicação web garantindo baixo consumo de recursos e compatibilidade com os mais diversos tipos de PDAs, constante verificação na consistência entre os dados no banco de dados e o mundo real, constante crescimento na base de dados em relação ao mundo real, dentre outros desafios. 1.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 com conceito? R: A computação em nuvem foca muito na distribuição do serviço como uma commodity, tratando os serviços fornecidos como alugados a quem contrata o serviço, enquanto que a computação no formato cliente-servidor tradicional foca no serviço como estar à disposição para as demandas dos clientes que se são cabíveis não havendo diferenciação na carga demandada por exemplo. O conceito de computação em nuvem apresenta como novidade a visão de que computação é um serviço voltado ao público geral. Sendo vista como um serviço que dispõe de capacidade suficiente pra suportar todas as necessidades dos usuários, de acordo com a aplicação em execução, provendo armazenamento de dados, aplicação remota, processamento e infraestrutura, sendo fornecidos fisicamente ou virtualmente por software. 1.6- Use a World Wide Web como exemplo para ilustrar o conceito de compartilhamento de recursos, cliente e servidor. Quais são as vantagens e desvantagens das tecnologias básicas HTML, URLs e HTTP para navegação em informações? Alguma dessas tecnologias é conveniente como base para a computação cliente-servidor em geral? R: A WWW (rede mundial de computadores) serve como exemplo no sentido de servidores de arquivos, como os de texto estático e troca de mensagens entre os computadores, em que as páginas web são esses arquivos (em texto estático), e as mensagens são as enviadas encapsuladas de acordo com os protocolos de comunicação referentes a cada tipo de serviço buscado, e no sentido de cliente, sendo o que está ali para o consumo dos serviços oferecidos. O HTML por ser uma linguagem de certa forma simples e utilizada no desenvolvimento de páginas Web, acaba tornando compatível com a grande maioria de dispositivos conectados à internet, consegue ser facilmente utilizado para levar conteúdo aos mais diversos perfis de hardware. Apresenta infelizmente algumas limitações, como por exemplo, só conseguir gerar conteúdo estático, pra isso, novas tecnologias tem que ser utilizadas em conjunto, pra trazer inovação e modernidade ao conteúdo exibido nas páginas web. O URL tem como objetivo descrever identificadores de recursos uniforme, como localizadores de recursos, onde navegadores os examinam para identificaresses recursos correspondentes, tem como vantagem a forma facilitada de descrever os recursos incorporados em páginas Web. Embora muito eficiente no que diz respeito a sua designação, o URL apresenta uma baixa variedade de recursos e pouca flexibilidade (intolerância) com erros, tudo tem que seguir exatamente os padrões definidos, em ordem e formato, ou resultados inesperados vão ser apresentados. O HTTP que tem por objetivo definir a forma como os navegadores e outros tipos de clientes interagem com servidores WEB, onde o cliente envia uma mensagem de requisição a um servidor web e recebe o recurso solicitado. Embora um protocolo bem definido e consistente, ele possui um conjunto reduzido de operações a serem executados, e também por mensagens HTML possuírem uma grande quantidade de caracteres, isso o torna ineficiente para o envio de pequenas quantidades de dados. Sim, por exemplo, o HTTP e URL são muito convenientes, por possibilitarem interligar e estabelecer identificadores de recursos, para que os computadores possam comunicar-se entre si. 1.7- Um programa servidor escrito em uma linguagem (por exemplo, C++) fornece a implementação de um objeto BLOB destinado a ser acessado por clientes que podem estar escritos em outra linguagem (por exemplo, Java). Os computadores cliente e servidor podem ter hardware diferente, mas todos eles estão ligados em uma rede. Descreva os problemas devidos a cada um dos cinco aspectos da heterogeneidade que precisam ser resolvidos para que seja possível um objeto cliente invocar um método no objeto servidor. R: - Rede: no que se refere a esse aspecto, pressupõe-se pelo modelo (OSI) que os protocolos de rede possuem meios de lidar com essa heterogeneidade. - Hardware do Computador: no que se refere a esse aspecto, a depender da arquitetura de cada máquina, vai ser necessário resolver as diferentes possibilidades de representações, sendo tipos, dados ou até mesmo os objetos, com por exemplo, um padrão que deverá ser determinado e seguido para que seja possível essa comunicação. - Sistemas operacionais: no que se refere a esse aspecto, seria necessário desenvolver um meio nativo ou padrão do sistema servidor, dentro do cliente, para que ao chegar de uma mensagem no servidor, o objeto do cliente possa efetuar essa invocação do método servidor. - Linguagens de Programação: no que se refere a esse aspecto, considerando as possíveis diferentes linguagens de programação, e que cada uma possui sua forma de representar dados e estruturas de dados, é preciso definir um tipo comum as possíveis linguagens, para que esse possa ser utilizado para definir qual estrutura de dados será utilizada nos objetos, possibilitando uma “tradução” entre objetos das linguagens. - Implementações de diferentes desenvolvedores: no que se refere a esse aspecto, é preciso estabelecer modelos padrão, e que todos sigam modelos e que não fujam desse padrão. 1.8- Um sistema distribuído aberto permite que novos serviços de compartilhamento de recursos (como o objeto BLOB do exercício 1.7) sejam adicionados e acessados por diversos programas clientes. Discuta, no contexto desse exemplo, até que ponto as necessidades de abertura do sistema diferem das necessidades da heterogeneidade. R: Levando em consideração que os desafios da heterogeneidade tenham sido tenham sido resolvidos, tais como o meio e protocolos de comunicação, padrões dos objetos e seus dados, padrões de mensagens definidos e etc., a tarefa de adicionar novos serviços a um sistema distribuído será simples. Mas quando se fala em sistema distribuído aberto, todos esses desafios devem naturalmente ser levados em consideração, os padrões e documentação devem estar nos conformes, pra que então o novo serviço seja implementado, a equipe envolvida na implementação deve conhecer essa documentação e estar de acordo com ela. Depois de implementado o novo serviço deve ser divulgado (publicada no sistema), para que quem costuma acessar o serviço com seus clientes perceba essa nova funcionalidade e possam acessa-la. 1.9- Suponha que as operações do objeto BLOB sejam separadas em duas categorias – operações públicas que estão disponíveis para todos os usuários e operações protegidas, que estão disponíveis somente para certos usuários nomeados. Indique todos os problemas envolvidos para se garantir que somente os usuários nomeados possam usar uma operação protegida. Supondo que o acesso a uma operação protegida forneça informações que não devem ser reveladas para todos os usuários, quis outros problemas surgem? R: Vão ser necessárias ações para cada request de acesso a operações protegidas, sendo necessário identificar cada usuário que fizer uma solicitação, aí os problemas podem começar pra se decidir como identificar cada usuário. Cada objeto BLOB precisa saber como identificar esses usuários que tem permissão de acesso a essas operações protegidas, e saber identificar que as mensagens de request estão vindo de usuários com permissão. Deve ser necessário impedir que essas mensagens sejam interceptadas e consequentemente alteradas por usuários não autorizados, impedindo que se passem por usuários autorizados. Deve ser garantido que ao identificar-se, esse usuário sejam quem ele realmente diz ser, pra só então garantir acesso as operações protegidas. Como essas operações vão responder com mensagens que não devem ser exibidas a usuários não autorizados, é necessário que sejam adotadas medidas de proteção de ponta a ponta, como alguma técnica de criptografia por exemplo. 1.10- O serviço INFO gerencia um conjunto potencialmente muito grande de recursos, cada um dos quais podendo ser acessado por usuários de toda a Internet por intermédio de uma chave (um nome de string). Discuta uma estratégia para o projeto dos nomes dos recursos que cause a mínima perda de desempenho à medida que o número de recursos no serviço aumenta. Sugira como o serviço INFO pode ser implementado de modo a evitar gargalos de desempenho quando o número de usuários se torna muito grande. R: Uma possível estratégia para a criação dos nomes dos recursos é basear-se na regionalização desses recursos já que esse serviço é oferecido para toda a internet, classificando por continente por exemplo. E a cada sub-região, os recursos poderiam ser ainda mais subdivididos, tornando possível acompanhar a demanda e o uso desses recursos, e melhorar a distribuição para cada sub-região. Em nível global, o esquema de nomes poderia ser determinado pelos continentes (América do Norte, América do Sul, Europa,...), e ir incluindo nessas próprias chaves (o nome STRING) a que país e a que região desse país cada recurso se destina, tornando possível especificar através dessa chave. Por exemplo usando “América do Sul, Brasil, Nordeste, Ceará”, é fácil determinar uma chave pra especificar a que região, sub-região e área um determinado recurso se destina. Seguindo a lógica do parágrafo anterior, o serviço deve ser implementado de maneira distribuída, sendo assim, o serviço seria distribuído por "regiões", para no caso de exemplo de buscas ou consultas primeiramente o serviço a faz dentro de sua base de dados, pra só em seguida, partir para buscas em servidores adjacentes. Acesso a dados ou recursos ausentes dentro de uma determinada região somente seria necessários caso não presentes na base de dados de sua própria região. 1.11- Liste os três principais componentes de software que podem falhar quando um processo cliente chama um método em um objeto servidor, dando um exemplo de falha em cada caso. Sugira como os componentes podem ser feitos de modo a tolerar falhas uns dos outros. R: Um software, a depender de sua arquitetura, pode apresentar diversas falhas, como por exemplo, no case de uma arquitetura cliente-servidor, em que a comunicação ocorre via rede, pode apresentar as falhas: Noservidor, o serviço deixa de se comportar como esperado, por ter recebido um dado ou informação inesperada, por exemplo um ataque utilizando-se de caracteres invisíveis. No cliente, quando por exemplo, um dado recebido chegou de maneira diferente do esperado, levando a comportamento inesperado, por exemplo travamentos; No servidor, quando o número de acessos é tão grande, que o leva a colocar-se em modo de proteção, passando a negar serviço, o “deny of service”; 1.12- Um processo servidor mantém um objeto de informação compartilhada, como o objeto BLOB do Exercício 1.7. Dê argumentos contra permitir que os pedidos do cliente sejam executados de forma concorrente pelo servidor e a favor disso. No caso de serem executados de forma concorrente, dê um exemplo de uma possível “interferência” que pode ocorrer entre as operações de diferentes clientes. Sugira como essa interferência pode ser evitada. R: Quando se fala em acesso concorrente, é preciso tomar muito cuidado em relação a quem está alterando o que e quando aqui foi alterado, pra que outro usuário tentando acessar tenha acesso de maneira integra, com os dados atualizados. O que se pode citar contra o acesso concorrente, é o problema ligado referente as operações simultâneas, e o acesso aos resultados dessas operações. A favor, é possível citar o uso eficiente de recursos e infraestrutura. Como exemplo de possível interferência, um usuário ‘A’ tem acesso a um valor salvo em memória, e um usuário ‘B’ tem acesso a esse mesmo valor; Suponha que o usuário B está fazendo uso desse valor salvo em memória, exibindo em tela por exemplo, e que simultaneamente, o usuário ‘A’ alterou esse valor em memória por um motivo qualquer. O usuário ‘B’ que antes estava exibindo um valor percebeu essa alteração, involuntariamente, passa a exibir outro valor. Se fosse o caso de uma apresentação por exemplo, esses valores seriam alterados durante a apresentação, causando problemas de compreensão. 1.13- 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: Esses recursos poderiam ser distribuídos com o objetivo de trazer agilidade na comunicação cliente-servidor e também pra proporcionar melhor desempenho pros servidores, mas essa implementação teria de seguir algum critério pra distribuir os acessos para cada região. No caso do uso de multicast pra um grande grupo de servidores, não seria muito interessante pros clientes, pois seria necessário haver uma grande busca, e filtragem das respostas, resultando numa carga considerável de trabalho pros servidores. 1.14- Os recursos na World Wide Web e outros serviços são nomeados por URLs. O que denotam as iniciais URL? Dê exemplos de três diferentes tipos de recursos da Web que podem ser nomeados por URLs. R: A letras URL significam Uniform Resource Locator, servindo pra identificar recursos disponíveis, conforme o seu esquema descrever. Os Ftp, para protocolo de transferência de arquivos; Os Http, para disponibilizar recursos no protocolo de transferência de HiperText; Os eD2k, que são protocolos de comunicação usados pra compartilhar arquivos entre computadores disponibilizados publicamente; Os ‘magnet’ links, que são usados pra referenciar popularmente recursos disponíveis para download via redes peer-to-peer. 1.15- Cite um exemplo de URL HTTP. Liste os principais componentes de um URL HTTP, dizendo como seus limites são denotados e ilustrando cada um, a partir de seu exemplo. Até que ponto um URL HTTP tem transparência de localização? R: ‘https://www.pt.wikipedia.org/wiki/URL ’ O primeiro componente é o esquema , que vai até o caractere “;”. Aqui o esquema é “https”. O segundo é o pathname, com o nome do servidor, que se inicia logo após os caracteres “//” . Aqui o pathname é “www.pt.wikipedia.org” . O terceiro é o caminho, que se inicia logo após o caractere “/”, depois do pathname. Aqui o caminho é “wiki/URL” . A transparência permanece enquanto os nomes lógicos dos recursos permanecerem não relacionados por exemplo a localização do servidor web de uma determinada url. Ou seja, essa url permanecer não relacionada aos endereços ip dos seus recursos.
Compartilhar