UNICAP CCT - Ciência da Computação Sistemas Distribuídos Prof. Almir Pires
Lista de Exercícios – Capítulo 2 Modelos de Sistemas 1. Descreva Descreva e ilustre ilustre a arquitetura arquitetura cliente-se cliente-servido rvidorr de duas aplicações aplicações Internet (por exemplo, web e email). (Coulouris – Exercício 2.1) Web: Nave Na vega gado dore res s sã são o cl clie ient ntes es de se serv rvid idor ores es de no nome me de do domí míni nio o (D (DNS NS)) e servidores web (HTTP). Alguns são intranets configurados para interpor um servidor Proxy. Os servidores proxy podem cumprir vários fins - quando estão situados no mesmo site como o cliente, eles reduzem os atrasos de rede e tráfeg trá fego o de red rede. e. Qua Quando ndo ele eles s est estão ão no mes mesmo mo local que o ser servid vidor, or, eles formam um posto de segurança e podem reduzir a carga sobre o servidor.
Email: O envio de mensagens: User Agent (programa de composição de email do usuário) é um cliente de um servidor SMTP local e passa cada mensagem de saída saí da par para a o ser servid vidor or SMT SMTP P par para a ent entreg rega. a. O ser servid vidor or SMT SMTP P loc local al uti utiliz liza a tabela tab elas s de rot roteam eament ento o de ema emailil par para a det determ ermina inarr um per percu curso rso par para a cad cada a mensagem e, em seguida, encaminha a mensagem para o próximo servidor SMTP SMT P esc escolh olhido ido da rot rota. a. Cad Cada a se servi rvidor dor de SMT SMTP P pro proces cessa sa e enc encami aminha nha cada mensagem que chega a menos que o nome de domínio da mensagem seja se ja ig igua uall a da má máqu quin ina a lo loca cal. l. Ne Nest ste e úl últim timo o ca caso so,, el ela a te tent nta a en entre trega garr a mensagem para o destinatário, armazenando-o em um arquivo de caixa de email em um servidor de disco ou arquivo local. Leitura de mensagens: User Agent (programa de leitura de email do usuário) é um cliente do servidor de arquivos local ou um cliente de um servidor de entrega entre ga de emai email, l, como um servido servidorr POP ou IMAP. IMAP. No primeiro primeiro caso, o User User Agent lê mensagens diretamente e cria o arquivo de caixa de email em que foram for am col coloca ocados dos du duran rante te a ent entreg rega a da men mensag sagem. em. Neste último último cas caso, o, o
usuário solicita ao Agent informações sobre o conteúdo do arquivo de caixa de email do usuário a partir de um servidor POP ou IMAP e recebe mensagens a partir desses servidores para exibir ao usuário. POP e IMAP são protocolos especificamente concebidos para apoiar acesso ao email em áreas amplas e conexões de rede lentas, de modo que um usuário pode continuar a acessar sua caixa de email casa enquanto viaja.
Netnews: Publicação de artigos de notícias: User Agent (programa de composição de notícias do usuário) é um cliente de um servidor local NNTP que passa cada artigo de saída para o servidor NNTP para entrega. Cada artigo é atribuído um único identificador. Cada Servidor NNTP mantém uma lista de outros servidores NNTP para o qual é um newsfeed - estão inscritos para receber artigos a partir dele. Ele periodicamente contacta cada um dos servidores registrados e oferece todos os artigos novos e solicita artigos que não possui (usando a identificação exclusiva dos artigos para determinar quais são). Para garantir a entrega de cada artigo para todos os destinos Netnews, deve haver um caminho de conexões newsfeed que alcança todos os servidores NNTP. Navegação / leitura de artigos: User Agent (programa de leitura de notícias do usuário) é um cliente de um servidor NNTP local. O agente do usuário solicita atualizações para todos os grupos de notícias que o usuário está vinculado e exibe.
2. Para as aplicações discutidas no exercício anterior, mostre como os servidores poderiam cooperar para prover o serviço. (Coulouris – Exercício 2.2) Web: servidores Web cooperam com servidores proxy para minimizar o tráfego de rede e latência. Responsabilidade para consistência é feitapelos servidores proxy - que verifique as datas de modificação de páginas freqüentemente com o servidor web de origem. Mail: servidores SMTP não mantem necessariamente tabelas de roteamento de distribuição de email para todos os destinos. Em vez disso, eles simplesmente encaminham mensagens dirigidas a destinos desconhecidos para outro servidor que é provavelmente tem as tabelas. Netnews: Todos os servidores NNTP cooperam da maneira descrita acima para fornecer o mecanismo de feed de notícias.
3. Discuta os tópicos “particionamento” e/ou “replicação” (ou caching) de dados entre os servidores das aplicações descritas no exercício 1. (Coulouris – Exercício 2.3) Web: Web page masters são mantidos em um sistema de arquivos em um único servidor. As informações sobre a web como um todo é, portanto, dividido entre muitos servidores web.
A replicação não é uma parte dos protocolos de web, mas um site muito usado pode fornecer vários servidores com cópias idênticas do sistema de arquivos em questão, utilizando um dos meios conhecidos para replicar slowly- alteração de dados. Solicitações HTTP podem ser multiplexados entre os servidores idênticos utilizando o (bastante básico) mecanismo de compartilhamento de carga DNS. Além disso, os servidores proxy web replicação apoio através do uso de réplicas em cache de páginas e navegadores usados recentemente suportar a replicação através da manutenção de um cache local de páginas acedidas recentemente. Mail: As mensagens são armazenadas somente em seus destinos. Ou seja, o serviço de email é baseado principalmente em particionamento, embora uma mensagem para vários destinatários é replicado em vários destinos. Netnews: Cada grupo é replicada somente em locais que exigem isso. 4. Sugira algumas aplicações adequadas para o modelo de processos peer-to-peer. (Coulouris – Exercício 2.5) Trabalho cooperativo (groupware) aplicativos que fornecem um processo de pares perto de cada usuário. Os aplicativos que precisam apresentar todos os usuários com estado idêntico - compartilhada whiteboard, visão compartilhada de uma discussão textual. Menos consistência: onde um grupo de usuários está trabalhando em um documento compartilhado, mas usuários diferentes podem acessar diferentes partes ou talvez um usuário bloqueia parte do documento e aos outros são mostrados a nova versão quando ele estiver terminada. Alguns serviços são efetivamente grupos de processos pares para fornecer disponibilidade ou tolerância a falhas. Se eles particionarem dados, então eles não precisam para manter consistente em tudo. 5. Liste os tipos de recursos locais que estão vulneráveis a um ataque de um programa não confiável que é carregado de um site remoto e roda em um computador local. (Coulouris – Exercício 2.6) Objetos no sistema de arquivos, como arquivos e diretórios, podem sofrer leitua e escrita, e podem ser criados e deletados usando os direitos locais do usuário que executa o programa. A comunicação de rede: o programa pode tentar criar sockets, conecta-los, enviar mensagens, etc. Acesso a impressoras.
Também é possível se passar pelo usuário de várias formas, como por exemplo, enviando e recebendo email.
6. Dê exemplos de aplicações em que o uso de código móvel seja vantajoso. (Coulouris – Exercício 2.7) Fazendo a computação proximo ao usuário, como nos Applets. Casos em que os objetos sao enviados para um processo e o codigo é necessário para torna-lo usável. 7. Que fatores afetam o tempo de resposta de uma aplicação que acessa dados compartilhados gerenciados por um servidor? Descreva medidas que podem ser úteis para resolver tais problemas. (Coulouris – Exercício 2.8) Quando o cliente acessa um servidor, faz-se uma invocação de uma operação no servidor que esta rodando num computador remoto. As seguintes causas podem afetar o tempo de resposta: 1. Servidor sobrecarregado 2. Latência na troca de request e reply (devido a camadas do sistema operacional e do middleware no cliente e servidor) 3. Carga na rede O uso de cache ajuda com todos os problemas acima, Em particular cache no cliente reduz todos eles. 8. Qual a diferença entre bufferização e caching? (Coulouris – Exercício 2.9) Buffer: uma técnica para armazenar dados transmitidos a partir de um processo de envio a um processo receptor em memória local ou armazenamento secundário até que o processo receptor esteja pronto para usar. Por exemplo, ler dados de um arquivo ou transmissão de mensagens através de uma rede, é melhor para lidar com isso em grandes blocos. Os blocos são mantidos em armazenamento de buffer no espaço de memória do processo receptor. O buffer é liberado quando os dados tiverem sido consumidos pelo processo. Caching: uma técnica para otimizar o acesso a objetos de dados remotos, mantendo uma cópia deles na memória local ou em armazenamento secundário. Os acessos a partes do objecto remoto são traduzidos em acessos ao partes da cópia local correspondente. Ao contrário de buffering, a cópia local pode ser mantido enquanto houver locais memória disponível para armazená-la. Um algoritmo de gerenciamento de cache e uma estratégia de
liberação são necessários para gerenciar o uso da memória alocada para o cache. 9. Dê exemplos de falhas de hardware e de software que podem/não podem ser toleradas pelo uso de redundância em um sistema distribuído. (Coulouris – Exercício 2.10) ● Falhas de Hardware: processadores, discos e conexões de rede podem usar redundância, por exemplo, rodar um processo em múltiplos computadores, escrever em dois discos, ter dois roteadores separados na rede disponível. ● Galhas de software, crashes: Redundância nao é bom com erros, porque eles podem ser replicados. Processos replicados ajudam com crashes que podem ocorrer devidos a bugs em partes independentes do sistema. Mensagens retransmitidas ajudam com o problema de perda de mensagens. 10.Considere um servidor simples que atende a requisições de clientes sem acessar outros servidores. Explique por que geralmente não é possível determinar um tempo limite de resposta para tal servidor. O que poderia ser feito para que um tempo de resposta fosse estabelecido? (Coulouris – Exercício 2.11) A taxa de chegada de requests do cliente é imprevisível. Se o servidor usa threads para executar requests de forma concorrente, ele pode nao ser capaz de alocar tempo suficiente para um request em particular que tem um tempo limite. Se o servidor coloca o request na fila e vai tirando da fila um de cada vez, eles podem esperar na fila por uma quantidade de tempo ilimitada. Para executar requests dentro de um periodo de tempo limitado, limite o numero de clients para se adequar a sua capacidade. Para lidar com mais clients, usa um servidor com mais processadores. Depois disso, ou em vez disso, replique o serviço. A solução pode ser cara e, em alguns casos manter as replicas consistentes pode levar úteis ciclos de processamento, reduzindo os ciclos disponíveis para execução de requests. 11. Considere a existência de dois serviços de comunicação, A e B, em um sistema distribuído assíncrono. No serviço A, mensagens podem ser perdidas, duplicadas ou atrasadas e checksums são utilizados apenas nos cabeçalhos das mensagens. No serviço B, mensagens podem ser perdidas,
atrasadas ou entregues muito rapidamente para o destinatário, mas aquelas que são entregues têm o seu conteúdo correto. Descreva as classes de falhas que estão presentes nos dois serviços. Algum dos serviços descritos pode ser considerado um serviço de comunicação confiável? (Coulouris – Exercício 2.14) Serviço A pode ter: ➢ Falhas arbitrárias: ● checksum nao se aplicar ao corpo da mensagem, o corpo da mensagem pode ser corrompido. ● mensagens duplicadas. ➢ Falhas de omissão (mensagens perdidas) Uma vez que o sistema distribuído que é usado de forma assincrona, ele não pode sofrer de falhas de temporização. ● Validade - é negado por mensagens perdidas ● Integridade - é negado por mensagens corrompidas ou duplicadas Serviço B pode ter: ➢ Filhas de omissão (mensagens perdidas, mensagens dropadas) ➢ Uma vez que o sistema distribuído que é usado de forma assincrona, ele não pode sofrer de falhas de temporização. ➢ Passa no teste de integridade, mas não no de validade, por conta disso, nao pode ser considerado confiável. 12.Considere um par de processos X e Y que usa o serviço de comunicação B da questão anterior para trocar informações entre si. Suponha que X é um cliente e Y é um servidor e que uma invocação consiste de uma requisição de X para Y, seguida do processamento da requisição por Y, seguida de uma mensagem de resposta de Y para X. Descreva as classes de falhas que uma invocação pode apresentar nesse modelo. (Coulouris – Exercício 2.15) Uma invocação pode sofrer com as seguintes falhas: ● Falhas de crash: X ou Y podem crashar, então, uma invocação pode sofrer com falhas de crash. ● Falhas de omissão: se o serviço B sofrer com falhas de omissão, a mensagem de request ou reply pode se perder.