Upload
bruno-xavier
View
51
Download
2
Embed Size (px)
DESCRIPTION
Modelos de Sistemas
Citation preview
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 e ilustre a arquitetura clienteservidor de duas aplicações Internet
(por exemplo, web e email). (Coulouris – Exercício 2.1) Web: Navegadores são clientes de servidores de nome de domínio (DNS) 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áfego de rede. Quando eles estão no mesmo local que o servidor, 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 para o servidor SMTP para entrega. O servidor SMTP local utiliza tabelas de roteamento de email para determinar um percurso para cada mensagem e, em seguida, encaminha a mensagem para o próximo servidor SMTP escolhido da rota. Cada servidor de SMTP processa e encaminha cada mensagem que chega a menos que o nome de domínio da mensagem seja igual a da máquina local. Neste último caso, ela tenta entregar a mensagem para o destinatário, armazenandoo 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 de email, como um servidor POP ou IMAP. No primeiro caso, o User Agent lê mensagens diretamente e cria o arquivo de caixa de email em que foram colocados durante a entrega da mensagem. Neste último caso, 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
peertopeer. (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, conectalos, 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 tornalo 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, fazse 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.