Baixe o app para aproveitar ainda mais
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.
Compartilhar