Buscar

Respostas das questões do capítulo 1 do livro _Sistemas Distribuídos_ Princípios e Paradigmas_ de Andrew S

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Respostas das questões do capítulo 1 do livro "Sistemas Distribuídos: Princípios e
Paradigmas" de Andrew S. Tanenbaum
Referência: Tanenbaum, A. S., van Steen, M.; Sistemas
Distribuídos: princípios e paradigmas. Pearson
Prentice Hall, 2a Ed., 2007.
Capítulo 1:
1) Uma definição alternativa para um sistema distribuído é que ele é um
conjunto de computadores independentes que dá a impressão de ser um
sistema único, isto é, o fato de haver vários computadores fica
completamente oculto aos usuários. Dê um exemplo para o qual essa visão
viria muito a calhar.
Essa visão de um sistema distribuído que dá a impressão de ser um sistema único
pode ser muito útil em diversas situações. Um exemplo seria um sistema de
comércio eletrônico, onde os usuários fazem compras e pagamentos online em uma
loja virtual. Por trás dessa loja virtual, pode haver uma infraestrutura distribuída de
servidores, bancos de dados, sistemas de processamento de pagamento e outros
componentes que trabalham juntos para fornecer o serviço de comércio eletrônico.
Os usuários não precisam saber quantos servidores ou bancos de dados estão
envolvidos na operação da loja virtual, ou como esses componentes estão
interconectados. Eles simplesmente interagem com a interface da loja virtual e
realizam suas compras de forma transparente, sem saber que estão interagindo
com um sistema distribuído complexo e heterogêneo. A visão de um sistema único
é, portanto, importante para fornecer aos usuários uma experiência transparente e
fácil de usar, apesar da complexidade subjacente do sistema distribuído.
2) Qual é o papel do middleware em um sistema distribuído?
O middleware é um software intermediário que atua como uma camada de
abstração entre os componentes de um sistema distribuído. Ele fornece serviços e
interfaces padronizados que permitem que os componentes de um sistema
distribuído se comuniquem e cooperem uns com os outros, independentemente da
plataforma de hardware ou software subjacente.
O papel do middleware em um sistema distribuído é, portanto, essencial. Ele atua
como um "colar" que integra os diferentes componentes e tecnologias em um
sistema coeso e unificado. O middleware pode fornecer uma série de serviços para
suportar a comunicação entre componentes distribuídos, como serviços de
mensagens, serviços de diretório, serviços de segurança e serviços de
gerenciamento de transações.
Além disso, o middleware pode fornecer mecanismos para garantir a qualidade de
serviço (QoS) em um sistema distribuído. Isso inclui garantir a disponibilidade,
confiabilidade, segurança e desempenho dos componentes de um sistema
distribuído. O middleware pode, por exemplo, fornecer mecanismos de
balanceamento de carga para distribuir as cargas de trabalho entre os diferentes
componentes de um sistema distribuído, para que nenhum componente fique
sobrecarregado.
Em resumo, o papel do middleware em um sistema distribuído é integrar e gerenciar
os componentes de um sistema distribuído de forma transparente e eficiente,
fornecendo serviços padronizados e garantindo a QoS do sistema.
3) Muitos sistemas em rede são organizados em termos de uma retaguarda e
uma vanguarda. Como as organizações se ajustam à visão coerente que
exigimos para um sistema distribuído?
Em muitos sistemas em rede, a organização em termos de uma retaguarda
(backend) e uma vanguarda (frontend) pode ser uma forma eficaz de dividir as
responsabilidades e funções dos diferentes componentes do sistema. No entanto,
em um sistema distribuído, a visão coerente é essencial para garantir que o sistema
como um todo funcione de forma eficaz e coesa.
Para ajustar-se a essa visão coerente em um sistema distribuído, as organizações
precisam adotar uma abordagem de projeto e implementação mais integrada e
holística. Isso pode incluir a adoção de uma arquitetura orientada a serviços (SOA),
que fornece uma abstração de alto nível dos componentes de um sistema
distribuído é uma abordagem baseada em padrões para integrar esses
componentes.
Além disso, as organizações precisam estabelecer protocolos e padrões de
comunicação claros entre os componentes de um sistema distribuído, a fim de
garantir que eles possam se comunicar e cooperar uns com os outros de forma
eficaz e confiável. Isso pode incluir a adoção de tecnologias de middleware que
forneçam uma camada de abstração entre os componentes de um sistema
distribuído, como mencionado anteriormente.
Finalmente, as organizações precisam investir em habilidades e competências para
projetar, implementar e gerenciar sistemas distribuídos de forma eficaz. Isso pode
incluir o treinamento de equipes de desenvolvimento e operações em práticas de
engenharia de software e operações de TI para sistemas distribuídos, bem como a
contratação de especialistas externos quando necessário.
Em resumo, as organizações precisam adotar uma abordagem mais integrada e
holística para projetar e implementar sistemas distribuídos, estabelecendo padrões
e protocolos claros de comunicação, investindo em tecnologias de middleware e
treinando suas equipes em habilidades relevantes para sistemas distribuídos.
4) Explique o que quer dizer e dê exemplos de cada um dos tipos de
transparência.
A transparência é um conceito importante em sistemas distribuídos e se refere à
ideia de que os usuários de um sistema distribuído não precisam estar cientes dos
detalhes de implementação do sistema. Existem vários tipos de transparência em
sistemas distribuídos, cada um dos quais visa ocultar um aspecto específico da
implementação do sistema. A seguir, descrevo cada um dos tipos de transparência e
dou exemplos de como eles podem ser aplicados em sistemas distribuídos.
1. Transparência de acesso: A transparência de acesso oculta as diferenças
entre diferentes sistemas de armazenamento de dados, permitindo que os
usuários acessem e modifiquem dados independentemente de sua
localização ou formato. Um exemplo disso é o sistema de arquivos
distribuídos, em que os usuários podem acessar arquivos armazenados em
diferentes computadores como se estivessem armazenados localmente.
2. Transparência de localização: A transparência de localização permite que os
usuários acessem serviços sem ter que se preocupar com onde esses
serviços estão localizados fisicamente. Por exemplo, em um sistema de
balanceamento de carga distribuído, os usuários podem enviar solicitações a
um endereço IP ou nome de domínio, e o sistema de balanceamento de carga
direciona essas solicitações para o servidor apropriado, independentemente
de onde ele esteja localizado fisicamente.
3. Transparência de replicação: A transparência de replicação permite que os
usuários acessem uma cópia de um recurso sem saber que existem outras
cópias desse recurso em outros locais. Por exemplo, em um sistema de
bancos de dados distribuídos, os usuários podem acessar e modificar dados
em uma cópia local do banco de dados, sem saber que existem outras cópias
do banco de dados em outros locais.
4. Transparência de concorrência: A transparência de concorrência oculta a
complexidade de gerenciamento de recursos compartilhados em um sistema
distribuído. Por exemplo, em um sistema de gerenciamento de recursos
distribuídos, os usuários podem solicitar recursos compartilhados, como
processadores ou memória, sem ter que se preocupar com o gerenciamento
de conflitos de recursos.
5. Transparência de falhas: A transparência de falhas oculta a complexidade do
gerenciamento de falhas em um sistema distribuído. Por exemplo, em um
sistema de arquivos distribuídos, os usuários podem acessar e modificar
arquivos, mesmo que alguns dos computadores que armazenam esses
arquivos estejam temporariamente indisponíveis devido a falhas ou
manutenção.
6. Transparência de mobilidade: A transparência de mobilidade permite que os
usuários acessem serviços de qualquer lugar, independentemente do
dispositivo ou rede que estão usando. Por exemplo, em um sistema de
computação móvel, os usuários podem acessar serviços de computação em
nuvem a partir de seus dispositivosmóveis, independentemente de onde
estejam localizados ou da rede que estão usando.
7. Transparência de desempenho: A transparência de desempenho oculta a
complexidade do gerenciamento de recursos de hardware e software em um
sistema distribuído. Por exemplo, em um sistema de processamento paralelo
distribuído, os usuários podem enviar tarefas para serem processadas por
vários processadores distribuídos sem ter que se preocupar com a alocação
de recursos, a comunicação entre os processadores ou a sincronização de
resultados. O sistema gerencia tudo isso de maneira transparente para o
usuário, permitindo que eles se concentrem em suas tarefas sem ter que se
preocupar com os detalhes de implementação do sistema distribuído.
5) Por que às vezes é tão difícil ocultar a ocorrência e a recuperação de falhas em
um sistema distribuído?
Ocultar a ocorrência e a recuperação de falhas em sistemas distribuídos pode ser
um desafio significativo por várias razões. Algumas das principais razões são:
1. Complexidade: Sistemas distribuídos geralmente consistem em vários
componentes interconectados, e as falhas podem ocorrer em qualquer um
desses componentes. Isso torna a detecção e correção de falhas muito mais
complexa do que em sistemas centralizados.
2. Comunicação: Em sistemas distribuídos, a comunicação é essencial para a
operação correta do sistema. No entanto, as falhas na comunicação também
podem ocorrer, o que pode dificultar a detecção e a recuperação de falhas.
3. Concorrência: Sistemas distribuídos geralmente são projetados para suportar
múltiplos usuários que compartilham recursos. Isso pode levar a situações
de concorrência em que vários usuários estão tentando acessar os mesmos
recursos ao mesmo tempo, o que pode aumentar a probabilidade de falhas.
4. Tolerância a falhas: Projetar sistemas distribuídos com tolerância a falhas
requer muito trabalho e pode ser difícil garantir que todas as possíveis falhas
tenham sido previstas e tratadas adequadamente.
5. Diagnóstico: Identificar a causa raiz de uma falha em um sistema distribuído
pode ser complicado, pois muitas vezes não é óbvio onde a falha ocorreu ou
qual componente está causando o problema.
6. Configuração: A configuração de um sistema distribuído pode ser complexa,
o que pode levar a erros e falhas. Também pode ser difícil manter a
consistência de configuração em todo o sistema distribuído.
Por essas razões, a ocultação de falhas em sistemas distribuídos é um desafio, e
muitas vezes é necessário projetar sistemas de recuperação de falhas complexos e
robustos para garantir a operação confiável do sistema.
6) Por que nem sempre é uma boa ideia visar à implementação do mais alto nível de
transparência possível?
Embora a transparência seja um objetivo desejável em sistemas distribuídos, nem
sempre é uma boa ideia visar à implementação do mais alto nível de transparência
possível. Isso ocorre por algumas razões:
1. Complexidade: Implementar o mais alto nível de transparência pode
aumentar significativamente a complexidade do sistema. Isso pode levar a
custos mais elevados de desenvolvimento, manutenção e operação, além de
um maior risco de falhas e erros.
2. Desempenho: A implementação de transparência pode afetar negativamente
o desempenho do sistema, especialmente em sistemas de grande escala. Por
exemplo, a sobrecarga de comunicação necessária para fornecer
transparência pode diminuir a taxa de transferência do sistema.
3. Confiabilidade: A implementação da transparência pode levar a uma redução
na confiabilidade do sistema. Por exemplo, ocultar a ocorrência de falhas
pode fazer com que os usuários tenham uma falsa sensação de segurança e
se tornam complacentes em relação à possibilidade de falhas.
4. Flexibilidade: A implementação de transparência pode reduzir a flexibilidade
do sistema, tornando-o menos adaptável às mudanças nas necessidades dos
usuários. Por exemplo, a implementação de transparência pode tornar mais
difícil a introdução de novas funcionalidades ou a mudança de configuração
do sistema.
Em geral, é importante equilibrar a implementação da transparência com outros
requisitos de design, como desempenho, confiabilidade e flexibilidade. Isso pode
levar a um sistema mais equilibrado e robusto que atenda melhor às necessidades
dos usuários.
7) O que é um sistema distribuído aberto e quais as são os benefícios que a abertura
proporciona?
Um sistema distribuído aberto é um sistema que permite a participação de
diferentes fornecedores de software e hardware e é construído em conformidade
com padrões abertos e públicos, garantindo que os diferentes componentes
possam interagir e interoperar sem problemas.
Os benefícios da abertura em sistemas distribuídos incluem:
1. Interoperabilidade: Com a adoção de padrões abertos, diferentes
componentes do sistema podem ser desenvolvidos e mantidos por diferentes
fornecedores, mas ainda assim ser capazes de se comunicar e cooperar sem
problemas. Isso aumenta a flexibilidade do sistema e reduz a dependência de
um único fornecedor.
2. Inovação: A abertura do sistema distribuído permite a introdução de novas
tecnologias e funcionalidades por diferentes fornecedores, o que pode levar a
um sistema mais inovador e eficiente.
3. Concorrência: A adoção de padrões abertos promove a concorrência entre
diferentes fornecedores, o que pode levar a preços mais baixos, maior
qualidade e mais opções para os usuários finais.
4. Adoção mais fácil: A abertura e conformidade com padrões abertos pode
tornar a adoção e integração de novos componentes de sistema mais fácil e
menos dispendiosa.
5. Redução de lock-in do fornecedor: A adoção de padrões abertos pode reduzir
a dependência de um único fornecedor, permitindo a troca de fornecedores
mais facilmente e reduzindo o risco de lock-in do fornecedor.
Em geral, a abertura de sistemas distribuídos pode trazer muitos benefícios em
termos de flexibilidade, inovação, concorrência e redução de custos para os
usuários finais.
8 e 9) O que quer dizer sistema escalável e quais são as técnicas para se conseguir
escalabilidade?
Um sistema escalável é um sistema que pode lidar com um aumento crescente de
carga ou volume de dados de forma eficiente, sem perder desempenho ou
comprometer a qualidade do serviço. Em outras palavras, um sistema escalável é
capaz de lidar com um aumento no número de usuários, tráfego ou dados, sem que
isso afete significativamente sua capacidade de processamento, armazenamento ou
resposta.
Um sistema escalável pode ser implementado de várias maneiras (técnicas),
incluindo:
● Escalabilidade horizontal: adicionando mais recursos de hardware ou
software, como servidores, para lidar com o aumento de carga.
● Escalabilidade vertical: adicionando mais recursos de hardware, como CPU,
memória e armazenamento, para aumentar a capacidade de processamento.
● Escalabilidade elástica: usando tecnologias de computação em nuvem para
aumentar ou diminuir a capacidade de recursos automaticamente, de acordo
com a demanda.
● Particionamento de dados: envolve dividir os dados em vários fragmentos,
para que eles possam ser processados por diferentes máquinas em paralelo.
Isso permite que a carga de trabalho seja distribuída em várias máquinas,
aumentando a capacidade do sistema. O particionamento de dados pode ser
baseado em várias estratégias, como chave de partição, intervalo de valores,
hash de chave, entre outros.
● Balanceamento de carga: envolve distribuir a carga de trabalho entre várias
máquinas de forma equilibrada. Isso pode ser feito por meio de diferentes
técnicas, como round-robin, distribuição baseada em capacidade ou
distribuição baseada em desempenho.
● Cache distribuído: envolve armazenar dados em um cache distribuído para
evitar consultas frequentes ao banco de dados. Isso pode melhorar
significativamente o desempenho do sistema, permitindo que ele lide com
mais usuários e mais solicitações.
● Eventual consistency: envolve relaxar a consistência dos dados em troca de
maior escalabilidade e desempenho. Isso é comumem sistemas distribuídos
que precisam lidar com grandes volumes de dados, como bancos de dados
NoSQL, por exemplo.
A escalabilidade é uma característica importante para sistemas que precisam lidar
com um grande número de usuários ou com cargas de trabalho variáveis, como
aplicações de comércio eletrônico, serviços de streaming de vídeo e jogos online,
por exemplo. Sistemas escaláveis permitem que as empresas ofereçam serviços de
alta qualidade e confiabilidade, mesmo em situações de pico de demanda.
10) Explique o que significa organização virtual e dê uma sugestão para uma
possível implementação dessas organizações.
Uma organização virtual é um grupo de indivíduos e/ou organizações que se unem
temporariamente para alcançar um objetivo comum, sem que haja uma estrutura
formal de organização ou hierarquia. Esses grupos são geralmente formados por
meio de redes de comunicação e tecnologia da informação, o que os torna uma
forma de organização distribuída.
Uma possível implementação de uma organização virtual seria uma plataforma de
colaboração online, como uma sala de bate-papo ou fórum, onde indivíduos com
interesses comuns podem se reunir para discutir tópicos específicos. Outra opção
seria uma rede social que conecta pessoas com habilidades ou experiências
específicas, para que possam colaborar em projetos ou iniciativas comuns.
Essas organizações virtuais podem ser muito eficazes para alcançar objetivos
específicos, pois permitem que indivíduos e organizações se unam em torno de um
interesse comum, sem que haja limitações geográficas ou organizacionais. No
entanto, elas também podem apresentar desafios, como a falta de liderança ou
estrutura formal, o que pode levar a dificuldades na tomada de decisões e
coordenação de atividades. Por isso, é importante ter cuidado ao estabelecer e
gerenciar essas organizações virtuais, para garantir que elas sejam eficazes e
produtivas.
11) Dissemos que, quando uma transação é abortada,o mundo é restaurado ao seu
estado anterior, como se a transação nunca tivesse acontecido. Mentimos. Dê um
exemplo no qual restaurar o mundo é impossível.
Em algumas situações, a restauração do mundo a um estado anterior pode ser
impossível, mesmo quando uma transação é abortada. Isso pode ocorrer em casos
em que a transação envolve ações físicas que afetam o mundo real.
Por exemplo, considere uma transação em que uma máquina de produção
automatizada é programada para produzir um grande lote de um determinado
produto. Se um erro ocorrer durante a produção, a transação pode ser abortada, mas
pode ser impossível restaurar completamente o mundo ao seu estado anterior. Por
exemplo, se a máquina de produção já tiver usado uma grande quantidade de
matérias-primas para produzir parte do lote, a restauração completa do mundo pode
ser impossível. Além disso, se o tempo gasto produzindo o lote não pode ser
recuperado, a restauração completa do mundo pode ser impossível.
Nesses casos, a melhor opção pode ser encontrar maneiras de minimizar os danos
causados pela transação abortada e garantir que quaisquer efeitos negativos sejam
mitigados o máximo possível.
12) Executar transações aninhadas requer certo tipo de coordenação. Explique o que
um coordenador deve realmente fazer.
Quando as transações aninhadas são executadas em um sistema distribuído, é
necessário um coordenador para garantir a consistência das operações em todas as
transações. O coordenador é responsável por coordenar a execução de todas as
transações aninhadas e garantir que elas sejam executadas de forma consistente.
O coordenador deve primeiro iniciar a transação principal e, em seguida, iniciar
todas as transações aninhadas. Ele deve garantir que cada transação aninhada seja
concluída com êxito antes de prosseguir com a próxima. Se uma transação
aninhada falhar, o coordenador deve abortar a transação principal e todas as
transações aninhadas associadas.
Além disso, o coordenador deve coordenar a confirmação ou reversão das
transações aninhadas. Quando todas as transações aninhadas são concluídas com
êxito, o coordenador deve confirmar as alterações feitas por todas as transações
aninhadas. Se alguma transação aninhada falhar, o coordenador deve reverter as
alterações feitas por todas as transações aninhadas e, em seguida, abortar todas as
transações aninhadas e a transação principal.
Em resumo, o coordenador deve garantir que todas as transações aninhadas sejam
executadas de forma consistente, em ordem apropriada e que quaisquer efeitos
colaterais indesejados sejam desfeitos de maneira apropriada. Ele é o responsável
por garantir que as transações aninhadas sejam executadas com sucesso ou
abordadas de forma apropriada, a fim de manter a integridade dos dados em todo o
sistema distribuído.
13) Argumentamos que a transparência de distribuição pode não estar presente em
sistemas pervasivos. Essa afirmação não vale para todos os tipos de
transparências, de exemplos. 14) Exemplos de sistemas pervasivos.
Sistemas pervasivos são sistemas computacionais que estão por toda parte ao
nosso redor e podem ser compostos por diversos dispositivos, como sensores,
smartphones e eletrodomésticos, que se comunicam entre si e executam tarefas
automatizadas. Esses sistemas podem ser utilizados para coletar e compartilhar
informações, além de melhorar a eficiência, a produtividade e a qualidade de vida.
Por exemplo, se você tem um termostato inteligente em casa que regula a
temperatura automaticamente, isso é um exemplo de sistema pervasivo. Outros
exemplos incluem o uso de sensores em carros para melhorar a segurança e a
eficiência do veículo, e dispositivos vestíveis que monitoram a saúde e a atividade
física das pessoas.
Apesar das vantagens, esses sistemas apresentam desafios, como a necessidade
de lidar com recursos limitados e condições de rede instáveis, o que pode dificultar
a coleta e compartilhamento de informações entre os dispositivos.
De fato, em sistemas pervasivos, algumas formas de transparência podem não estar
presentes devido à natureza dos dispositivos e ao ambiente em que são
executados. No entanto, outras formas de transparência ainda podem ser aplicadas.
Por exemplo, a transparência de acesso pode ser mantida em sistemas pervasivos.
Os usuários podem acessar serviços e recursos, independentemente de sua
localização física ou do dispositivo em que estão sendo executados. Além disso, a
transparência de falhas ainda pode ser mantida, desde que haja um sistema que
possa detectar e se recuperar de falhas.
No entanto, outras formas de transparência, como transparência de localização e
transparência de replicação, podem não estar presentes em sistemas pervasivos, já
que esses sistemas são compostos por dispositivos heterogêneos, distribuídos em
diferentes locais e podem não estar disponíveis continuamente.
Portanto, a transparência em sistemas pervasivos depende do tipo de transparência
e da capacidade dos dispositivos e infraestrutura para fornecê-la.

Continue navegando