Prévia do material em texto
Exercícios – Sistemas Distribuídos – Capítulo 1 1. Cite cinco tipos de recursos de hardware e cinco tipos de recursos de software ou dados que podem ser compartilhados. Exemplifique como esse compartilhamento ocorre em Sds. Hardware: Discos, impressoras; Software: arquivos, bases de dados,objetos; Exemplo: compartilhamento de arquivos do google drive através da internet ou o compartilhamento de impressoras entre vários computadores de uma mesma rede. 2. Como sincronizar o relógio de dois computadores ligados por uma rede local sem referência a uma fonte externa de tempo? Quais fatores limitam a precisão do procedimento descrito por você? Como poderia um grande número de computadores conectados à Internet serem sincronizados? Discuta a precisão do procedimento. Dois relógios ligados por uma rede local podem ser sincronizados sem uma fonte de hora externa, pois , sendo síncrono, é possível saber os limites da taxa de derivação dos relógios, o atraso máximo de transmissão de mensagens e o tempo que leva para executar cada etapa de um processo e a técnica que torna isso real chama-se relógios lógicos. Um processo envia o tempo t de seu relógio local para o outro em uma mensagem m, pois o receptor se programaria para configurar o seu com o tempo t + Tmin, onde Tmin é o tempo necessário para levar a mensagem m de um para o outro, ocorrendo sincronia perfeita entre eles. Entretanto Tmin pode sofrer uma variação desconhecida devido às variáveis que podem influenciar na queda do desempenho da rede(concorrência pelo canal de comunicação, por exemplo), mesmo assim, Tmin pode ser estimado considerando o canal sempre acessível, ou seja, livre de congestionamentos. Além do Tmin, também existe um limite máximo de tempo para a transmissão da mensagem. Sendo a incerteza igual a Tmax – Tmin, o receptor pode configurar o seu relógio no ponto médio da incerteza, ou seja, somar o tempo t que demorou com o Tmax e o Tmin, sendo o desvio de no máximo a incerteza dividida por dois. 3. Considere as estratégias de implementação de MMOG (massively multiplayer online games) 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? Vantagem: Utilizar uma arquitetura cliente-servidor a qual uma única cópia do estado do mundo é mantida em um servidor centralizado e acessada por programas clientes em execução, nos consoles ou em outros equipamentos dos jogadores. A arquitetura centralizada ajuda significativamente no gerenciamento do mundo virtual e a cópia única também diminui as preocupações com a concorrência. Assim, o objetivo é garantir respostas rápida por meio, da otimização de protocolos de rede e também para eventos recebidos. Desvantagem: Se o servidor central cair não teria outro para substituí-lo. 4. Considere um viajante em uma estação de trem que nunca visitou antes, portando seu PDA com dispositivos para conexão sem fio. Sugira como o usuário poderia descobrir os serviços oferecidos pela estação e enumere os desafios técnicos para alcançar tal objetivo. Este usuário poderia se conectar a uma wifi, e receber informações sobre este local devido ao provedor desta wifi, inserir tais informações na rede. Aplicativos reconhecimento de localização também podem dar essas informações. Desafios: O usuário deve executar um programa em seu dispositivo que executa estas URLs, dando controle suficiente, sem que elas estejam inundadas por URLs indesejadas. Os meios de propagar a URL(por exemplo, infravermelho ou uma LAN sem fio 802.11) devem ter um alcance que correspondem à propagação física do próprio local. 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? O modelo básico de funcionamento da internet é o chamado cliente-servidor, onde existe uma máquina central que tem armazenado os documentos que os usuários desejam ver e estes, por sua vez, são chamados clientes. A computação em nuvem é a distribuição de serviços de computação – servidores, armazenamento, banco de dados, redes, software, análise, inteligência e muito mais pela internet(“a nuvem”), proporcionando inovações mais rápidas, recursos flexíveis e economia na escala. Você normalmente paga apenas pelos serviços de nuvem que utiliza, ajudando a reduzir os custos operacionais, a executar sua infraestrutura com mais eficiência e a dimensionar conforme as necessidades de sua empresa. 6. Utilize a WWW como um exemplo para ilustrar os conceitos de compartilhamento de recurso, cliente e servidor. Quais são as vantagens e desvantagens de HTML, URL e HTTP como as tecnologias base para navegação em informação? Alguma dessas tecnologias é conveniente como base para a computação cliente/servidor em geral? Uma página web é qualquer documento que faça parte de um sítio web e que costuma conter ligações (igualmente chamadas hiperligações ou links) para facilitar a navegação entre os conteúdos. HTML: É uma linguagem relativamente simples para analisar e processar, está disponível em diversas plataformas e sua performance é ótima em PC`s, dispositivos móveis e tablets, mas confunde apresentação com os dados subjacentes que estão sendo apresentados. URL: O objetivo de um URL é identificar um recurso. Os navegadores examinam os URL`s para acessar os recursos correspondentes. O usuário digita um url no navegador, mais comumente, o navegador pesquisa o url correspondente quando o usuário clica em um link, quando seleciona um url de sua lista de bookmarks ou quando o navegador busca um recurso incorporado em uma página web como imagem. A desvantagem é que não são suficientemente ricos como links de recursos. HTTP: São protocolos simples de serem implementados, mas apesar de serem sensíveis, eles são tratados de forma textual, já que o HTTP é um protocolo baseado em texto. Dessa forma, dados que são enviados podem ser acessados no meio do tráfego, prejudicando muito a segurança de informação. HTTP e URLs são convenientes como uma base para a computação cliente-servidor. 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. À medida que os computadores estão ligados a uma internet, podemos supor que os protocolos da Internet lidar com as diferenças de redes. Mas os computadores podem ter um hardware diferente - portanto, temos de lidar com as diferenças de representação de itens de dados de pedido e mensagens de resposta dos clientes aos objetos. Um padrão comum será definido para cada tipo de item de dados que devem ser transmitidos entre o objeto e seus clientes. Os computadores podem executar sistemas operacionais diferentes, portanto, temos de lidar com diferentes operações para enviar e receber mensagens ou para expressar invocações. Assim, no / C ++ nível Java uma operação comum faria ser usado que será traduzido para a operação específica de acordo com o sistema operacional que ele é executado. Temos duas diferentes linguagens de programação C ++ e Java, eles usamrepresentações diferentes para dados estruturas, tais como arrays, registros. Um padrão comum será definido para cada tipo de estrutura de dados que devem ser transmitidos entre o objeto e seus clientes e uma maneira de traduzir entre essa estrutura de dados e cada um dos idiomas. Podemos ter diferentes implementadores, por exemplo, um para C ++ e outra para Java. Eles terão de acordar sobre as normas comuns mencionadas acima e para documentá-los. 8. Um sistema distribuído aberto permite que novos serviços de compartilhamento de recursos (como o objeto BLOB do Exercício anterior) 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. O sistema distribuído usa um conjunto comum de protocolos de comunicação (provavelmente protocolos de internet). Usa um padrão definido para representar os itens de dados (para lidar com a heterogeneidade de hardware). Ele usa um padrão comum para operações de passagem de mensagens (ou para invocações). Ele usa um padrão independente linguagem para representar estruturas de dados. Mas para o sistema distribuído aberto as normas devem ter sido acordado e documentado antes do BLOB objeto foi implementado. Os implementadores devem estar de acordo com essas normas. Além disso, a interface para o BLOB objeto deve ser publicado para que quando ele é adicionado ao sistema, actuais e novos clientes será capaz de acessá-los. A publicação dos padrões permite que partes do sistema a ser implementado por diferentes fornecedores e trabalhar em conjunto. 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 par todos os usuários, quais outros problemas surgem? 10. O serviço INFO gerencia uma grande quantidade de recursos, cada um dos quais podem ser acessados por usuários através da Internet por meio de uma chave (uma string, por exemplo). Discuta uma abordagem para projetar os nomes dos recursos que resulte a mínima perda de desempenho quando o número de recursos no serviço aumenta. Sugira como o serviço INFO pode ser implementado para evitar gargalos de desempenho quando o número de usuários torna-se muito grande. Algoritmos que usam estruturas hierárquicas dimensionar melhor do que aqueles que usam estruturas lineares. Por conseguinte, a solução deve sugerir um esquema de nomenclatura hierárquica. por exemplo. que cada recurso tem um nome do formulário 'ABC' etc em que o tempo necessário é O (log n), onde n existem recursos do sistema. Para permitir que um grande número de usuários, os recursos são divididos entre vários servidores, por exemplo, nomes começando com A a um servidor, com B no servidor 2 e assim por diante. Pode haver mais do que um nível de particionamento como no DNS. Para evitar gargalos de desempenho do algoritmo para procurar um nome deve ser descentralizadas. Esse é, ao mesmo servidor não deve ser envolvido em olhar acima de todo nome. (Uma solução centralizada usaria uma única servidor raiz que mantém um banco de dados local que mapeia partes da informação para servidores específicos). Alguns replicação é necessária para evitar tal centralização. Por exemplo: i) o banco de dados de localização pode ser replicado em vários servidores raiz ou ii) o banco de dados de localização pode ser replicado em todos os servidores. Em ambos os casos, diferente os clientes devem acessar servidores diferentes (por exemplo, os locais ou aleatoriamente). 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 as falhas uns dos outros. Os três principais componentes de software que podem falhar são: - O processo de cliente, por exemplo, ele pode falhar - O processo do servidor, por exemplo, o processo pode falhar - O software de comunicação, por exemplo, uma mensagem pode não chegar As falhas são geralmente causados independentemente um do outro. Exemplos de falhas dependentes: - Se a perda de uma mensagem faz com que o processo do cliente ou servidor deixe de funcionar. (A queda de um servidor causaria um cliente a perceber que uma mensagem de resposta está faltando e pode indiretamente causar falha). - Se os clientes quebrando servidores causar problemas. - Se a queda de um processo provoca uma falha no software de comunicação. Ambos os processos devem ser capazes de tolerar as mensagens em falta. O cliente deve tolerar uma mensagem de resposta faltando depois de ter enviado uma mensagem de solicitação de chamada. Em vez de fazer o usuário esperar para sempre para a resposta, um cliente processo poderia usar um tempo limite e, em seguida, informar ao usuário que não tem sido capaz de entrar em contato com o servidor. Um servidor simples, apenas espera por mensagens de pedido, executa invocações e envia respostas. Deveria ser absolutamente imune a mensagens perdidas. Mas, se um servidor armazena informações sobre seus clientes que eventualmente pode falhar se os clientes falhar sem informar o servidor (de modo que ele pode remover informações redundantes). O software de comunicação deve ser concebido para tolerar falhas nos processos de comunicação. Por exemplo, a falha de um processo não deve causar problemas na comunicação entre os sobreviventes processos. 12. Um processo servidor mantém um objeto de informação compartilhada, como o objeto BLOB do Exercício 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. Para execuções concorrentes - mais taxa de transferência no servidor (particularmente se o servidor tem que acessar um disco ou outro serviço) Contra - problemas de interferência entre operações simultâneas exemplo: Um segmento do cliente de lê valor da variável X Segmento do cliente do B lê o valor da variável X Cliente Um fio de adiciona 1 para o seu valor e armazena o resultado em X Cliente fio de B subtrai 1 do seu valor e armazena o resultado em X Resultado: x: = X-1; imaginar que X é o saldo de uma conta bancária, e os clientes A e B são de crédito de execução e operações de débito, e você pode ver imediatamente que o resultado é incorreto. Para superar uso interferência alguma forma de controle de concorrência. Por exemplo, para uma utilização de servidor Java operações sincronizadas, como crédito e débito. 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? A migração de recursos (objetos de informação) é realizado: para reduzir os atrasos de comunicação (colocar objetos em um servidor que está na mesma rede local que seus usuários mais freqüentes); para equilibrar a carga de processamento e ou a utilização do armazenamento entre diferentes servidores. Se todos os servidoresde receber todos os pedidos, a carga de comunicação na rede está muito aumentada e servidores devem fazer trabalho desnecessário filtrando os pedidos de objetos que eles não possuem. 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. URL significa Unifor Resource Locator(localizador de recurso uniforme). Três exemplos de recursos que podem usar URLs: um arquivo ou uma imagem, filme, som, qualquer coisa que pode ser processado, uma consulta a um banco de dados ou a um mecanismo de busca. 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? Exemplo de URL HTTP: http://utfpr.edu.br Principais componentes: - Antes do “:” define o protocolo; ex: http(HyperText Transport Protocol). - A parte entre // e / é o nome do domínio no servidor web. Ex: utfpr.edu.br - O resto (depois de /) refere-se à informação solicitada ao servidor (o recurso) que está dentro de um diretório usado no servidor web. Ex: o recurso “index.php” está localizado no diretório raiz do servidor utfpr.edu.br. Quanto a transparência: O nome de host “www” é independente da localização, por isso temos a transparência do local em que o endereço de um determinado computador não está incluído. Portanto, a organização pode mover o serviço da Web para outro computador. Porém, se a responsabilidade de fornecer um serviço de informação baseado em www se deslocar para outra organização, a url precisaria ser alterada.