Você está na página 1de 2
Programação em Sistemas Distribuídos Exercícios de Fixação 02 – Google
Programação em Sistemas Distribuídos Exercícios de Fixação 02 – Google

Programação em Sistemas Distribuídos

Exercícios de Fixação 02 – Google

------------------------------------------------------------------------------------------------------------------------------

1

Orientações

Esta atividade trata do importante problema de como uma empresa de internet muito grande tem encarado o projeto de um sistema distribuído para suportar um exigente conjunto de aplicações do mundo real. Esse é um assunto muito desafiador e exige entendimento completo das escolhas tecnológicas disponíveis para desenvolvedores de sistemas distribuídos em todos os níveis do desenvolvimento de sistemas incluindo paradigmas de comunicação, serviços disponíveis e algoritmos distribuídos associados. Os inevitáveis compromissos associados às escolhas de projeto exigem o entendimento completo do domínio de aplicação.

A estratégia adotada é destacar a arte do projeto de sistemas distribuídos por meio de

um estudo de caso importante, ou seja, o exame do projeto da infraestrutura do Google,

da plataforma e do middleware utilizados pelo Google para suportar seu mecanismo de busca e expandir o conjunto de aplicações e serviços. Esse é um estudo de caso atraente, pois trata do que é o sistema distribuído mais complexo e de grande escala já construído

e que tem demonstrado satisfazer seus requisitos de projeto. Esse estudo examina a

arquitetura global do sistema, junto a estudos aprofundados dos principais serviços subjacentes.

A infraestrutura do Google é uma de várias soluções de middleware para computação

em nuvem surgida recentemente (embora disponível completamente apenas dentro do Google). Outras soluções incluem o AWS (Amazon Web Services), Azure (Microsoft) e soluções de códigos-fonte aberto, incluindo Hadoop (que contém uma implementação de MapReduuce (hadoop.apache.org), Eucalyptus (open.eucalyptus.com), Google App Engine e Sector Sphere (sector.sourceforge.net). Também foi desenvolvido o OpenStreetMap (www.openstreetmap.org), uma alternativa aberta ao Google Maps que funciona de maneira semelhante, usando o software desenvolvido por voluntários e servidores não comerciais. Detalhes dessas implementações estão geralmente disponíveis, e estimula-se o aluno a estudar uma seleção dessas arquiteturas, comparando as escolhas de projeto com as apresentadas no estudo de caso.

1.1

Responda

1. Até que ponto o Google agora é uma empresa provedor de nuvem? 1 .

2. Os principais requisitos da infraestrutura do Google são escalabilidade, confiabilidade, desempenho e abertura. Dê três exemplos de onde esses requisitos poderiam estar em conflito e discuta como o Google lida com esses conflitos em potencial. 2

1 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 921 2 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 921

Programação em Sistemas Distribuídos Exercícios de Fixação 02 – Google
Programação em Sistemas Distribuídos Exercícios de Fixação 02 – Google

Programação em Sistemas Distribuídos

Exercícios de Fixação 02 – Google

------------------------------------------------------------------------------------------------------------------------------

3. Uma especificação de uma estrutura Person em XML foi apresentada na Figura 4.12. Reescreva essa especificação usando buffers de protocolo 3

4. Discuta até que ponto o estilo RPC suportado pelo componente buffers de protocolo melhora a capacidade de extensão (especialmente a decisão de projeto de ter apenas um argumento e um resultado. 4

5. Explique por que a infraestrutura do Google suporta três recursos de armazenamento de dados distintos. Por que o Google não adota apenas m banco de dados distribuído comercial, em vez dos três serviços separados? 5

6. O GFS e a BIGTABLE fazem a mesma escolha básica de projeto ter um único mestre. Quais as repercussões de uma falha desse mestre único em cada caso? 6

7. Na seção 21.5.2, compara-se a estratégia de consistência de cache do Chubby com o NFS, concluindo que o NFS oferece semântica muito mais fraca, em termos de ver diferentes versões de arquivos em diferentes nós. Faça uma comparação semelhante entre as estratégias de consistência de cache adotadas no Chubby e no AFS. 7

8. Conforme descrito na seção 21.5.2, a implementação do Paxos depende da geração de números sequenciais cada vez maiores e globalmente exclusivos. Essa seção também descreveu uma possível implementação. Descreva uma estratégia alternativa para implementar esses números sequenciais. 8

9. A figura 21.18 lista várias aplicações possíveis de MapReduce. Descreva uma aplicação possível e esboce como isso seria implementado no MapReduce, fornecendo em particular, esboços de implementações das funções map e reduce. 9

10. Dê um exemplo de computação distribuída que seria difícil implementar no MapReduce, fornecendo as razões para sua resposta. 10

3 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 929

4 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 931

5 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 935

6 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 937-938, 950-952

7 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 943-944

8 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 958

9 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 958 10 Coulouris, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos Conceitos e Projeto. Porto Alegre: Bookman, 5ª edição. p. 958