Baixe o app para aproveitar ainda mais
Prévia do material em texto
Respostas dos exercícios dos slides: Aula 03 - Comunicação entre processos 1) Defina o que é um Processo. R: Em sistemas de computação, um processo é um programa em execução juntamente com o ambiente em que ele é executado e o conteúdo de seus registradores. Ele pode ser visto como uma instância de um programa em execução, representando uma atividade que um usuário deseja realizar no sistema. O processo é responsável por gerenciar os recursos de hardware e software necessários para a execução do programa e é composto por um espaço de endereçamento, um conjunto de registradores e uma pilha de execução. 2) Explique, com suas palavras, a comunicação entre processos. R: A comunicação entre processos é a troca de informações entre processos em um sistema distribuído. Ela é essencial para permitir que processos independentes interajam e cooperem em um ambiente distribuído. Existem várias técnicas de comunicação entre processos, incluindo pipes, sockets, memória compartilhada, mensagens assíncronas, entre outras. A escolha da técnica mais apropriada depende das necessidades específicas do sistema em questão. O objetivo da comunicação entre processos é permitir que diferentes processos trabalhem juntos para realizar tarefas mais complexas do que poderiam ser realizadas por um único processo isolado. 3) Explique a diferença entre uma Comunicação Síncrona e uma Comunicação Assíncrona, utilizando as chamadas send e receive. R: A comunicação síncrona é uma forma de comunicação entre processos em que o processo que está enviando uma mensagem fica bloqueado até que o processo receptor receba a mensagem. Já na comunicação assíncrona, o processo que envia a mensagem não precisa esperar que o processo receptor receba a mensagem antes de continuar a execução. Na chamada send síncrona, o processo que envia a mensagem fica bloqueado até que a mensagem seja entregue ao processo receptor. Na chamada receive síncrona, o processo receptor fica bloqueado até que a mensagem seja recebida. Na chamada send assíncrona, o processo que envia a mensagem não fica bloqueado e continua a execução. Já na chamada receive assíncrona, o processo receptor não fica bloqueado e continua a execução, mesmo que ainda não tenha recebido a mensagem. 4) O que é um Socket? R: Um socket é um ponto final de um canal de comunicação bidirecional entre processos em uma rede. Ele é usado para estabelecer a comunicação entre um cliente e um servidor em um sistema distribuído, permitindo que as aplicações troquem dados em uma rede. O socket é identificado por um endereço IP e um número de porta, que permitem que os processos se conectem e troquem dados entre si. Em resumo, um socket é a combinação de um endereço IP e um número de porta que define um ponto de comunicação para processos em uma rede. Aula 04 - Balanceamento de carga 1) Defina o que é balanceamento de carga. R: Balanceamento de carga é uma técnica usada em sistemas distribuídos para distribuir a carga de trabalho entre múltiplos recursos (como servidores, processadores, discos, etc.), a fim de melhorar o desempenho, aumentar a disponibilidade e garantir a escalabilidade do sistema. O balanceamento de carga pode ser feito de várias maneiras, como redirecionamento de solicitações, distribuição de carga baseada em algoritmos, roteamento de tráfego, replicação de dados, entre outras técnicas. O objetivo principal é garantir que cada recurso seja usado da maneira mais eficiente possível e que a carga seja distribuída uniformemente para evitar gargalos ou sobrecarga em qualquer um dos recursos. 2) Explique, com suas palavras, a diferença entre receiver-initiated, sender-initiated e symmetrically-initiated. R: Receiver-initiated, sender-initiated e symmetrically-initiated são três abordagens diferentes para o estabelecimento de uma comunicação ponto a ponto em um sistema distribuído. Na abordagem receiver-initiated, o receptor é responsável por iniciar a comunicação com o emissor. O receptor envia uma mensagem de solicitação ao emissor para que este envie uma mensagem de resposta. Essa abordagem é útil quando o receptor tem informações importantes que o emissor precisa receber. Na abordagem sender-initiated, o emissor é responsável por iniciar a comunicação com o receptor. O emissor envia uma mensagem de solicitação ao receptor para que este envie uma mensagem de resposta. Essa abordagem é útil quando o emissor tem informações importantes que o receptor precisa receber. Na abordagem symmetrically-initiated, tanto o emissor quanto o receptor podem iniciar a comunicação. Ambos enviam e recebem mensagens em um padrão de ida e volta até que a comunicação seja concluída. Essa abordagem é útil quando não há uma parte claramente responsável por iniciar a comunicação ou quando a comunicação deve ser altamente interativa e bidirecional. 3) Imagine que você esteja implementando um Sistema Distribuído. Como você implementaria cada uma das políticas? Dê a explicação fazendo um exemplo. R: Para explicar a implementação das políticas de comunicação receiver-initiated, sender-initiated e symmetrically-initiated em um sistema distribuído, vamos utilizar um exemplo de um sistema de mensagens instantâneas. No sistema, cada usuário conectado pode enviar mensagens para outros usuários. A comunicação entre os usuários é feita por meio de uma rede distribuída e os usuários podem estar em diferentes dispositivos. Para cada mensagem enviada, é necessário que o destinatário receba a mensagem. Na política receiver-initiated, o destinatário da mensagem é o responsável por iniciar a comunicação. O destinatário envia uma mensagem de confirmação para o remetente, indicando que a mensagem foi recebida com sucesso. Nesse caso, o remetente deve esperar até receber essa confirmação antes de enviar a próxima mensagem. A implementação dessa política pode ser feita com o uso de um mecanismo de ACK (acknowledgment) em que o destinatário envia uma mensagem de confirmação para o remetente, indicando que recebeu a mensagem. O remetente aguarda essa confirmação antes de enviar a próxima mensagem. Na política sender-initiated, o remetente é o responsável por iniciar a comunicação. O remetente envia a mensagem e espera por uma resposta do destinatário indicando que a mensagem foi recebida com sucesso. Nesse caso, o destinatário deve enviar uma resposta para o remetente, confirmando o recebimento da mensagem. A implementação dessa política pode ser feita com o uso de um mecanismo de resposta em que o destinatário envia uma mensagem de confirmação para o remetente, indicando que recebeu a mensagem. O remetente aguarda essa resposta antes de enviar a próxima mensagem. Na política symmetrically-initiated, tanto o remetente quanto o destinatário podem iniciar a comunicação. Nesse caso, tanto o remetente quanto o destinatário enviam mensagens para confirmar o recebimento das mensagens. A implementação dessa política pode ser feita com o uso de um mecanismo de confirmação bilateral em que o remetente e o destinatário enviam mensagens de confirmação para confirmar o recebimento das mensagens. Em resumo, a política receiver-initiated é indicada para situações em que o destinatário tem um maior controle sobre a comunicação, a política sender-initiated é indicada para situações em que o remetente tem um maior controle sobre a comunicação e a política symmetrically-initiated é indicada para situações em que tanto o remetente quanto o destinatário têm o mesmo nível de controle sobre a comunicação. 4) Dê um exemplo para cada tipo de mecanismo. R: ● Comunicação baseada em mensagens: Imagine um sistema de processamento de pedidos online, onde clientes podem enviar pedidos para serem processados. Nesse caso, os clientes enviaram mensagens contendo informações sobre o pedido, que seriam recebidas pelos servidores do sistema para processamento. ● Comunicação baseada em chamada de procedimento remoto: Suponha que um cliente queira solicitar uma lista de produtos de um servidor em um Sistema de Vendas Distribuído. O cliente poderia fazeruma chamada de procedimento remoto para o servidor, que retornaria a lista solicitada. ● Comunicação baseada em memória compartilhada: Em um ambiente onde vários processos precisam compartilhar uma região de memória, a comunicação pode ser feita através de memória compartilhada. Por exemplo, em um sistema de edição de texto colaborativo, os usuários poderiam compartilhar um documento em uma região de memória compartilhada, onde as alterações de um usuário seriam imediatamente visíveis para todos os outros usuários que compartilham a mesma região de memória. ● Comunicação baseada em passagem de token: Em um sistema onde vários processos precisam acessar um recurso compartilhado em uma ordem específica, pode ser utilizado um mecanismo de passagem de token. Por exemplo, em um sistema de controle de acesso a um banco de dados distribuído, onde apenas um processo pode acessar o banco de dados de cada vez, um token pode ser passado de um processo para o próximo em uma ordem determinada, garantindo que apenas um processo tenha acesso ao recurso compartilhado de cada vez. ● Comunicação baseada em multicast: Em um sistema de streaming de vídeo em tempo real, os servidores podem enviar um fluxo de dados para um grupo de clientes que estão interessados no mesmo conteúdo, utilizando a comunicação baseada em multicast. Essa abordagem permite que o mesmo fluxo de dados seja enviado para vários clientes ao mesmo tempo, economizando largura de banda e recursos do servidor. 5) Qual a diferença entre as Políticas de Escalonamento e os Mecanismos de Escalonamento? R: As políticas de escalonamento definem o comportamento geral do sistema em relação à ordem de execução de tarefas. Já os mecanismos de escalonamento são os algoritmos e estruturas de dados que implementam as políticas de escalonamento definidas. Em outras palavras, as políticas de escalonamento definem as regras, enquanto os mecanismos de escalonamento implementam essas regras. Aula 05 - Sistemas de arquivos distribuídos 1) Descreva com suas palavras o funcionamento de um Sistema de Arquivos Distribuídos. E dê um exemplo R: Um Sistema de Arquivos Distribuídos (SAD) é uma infraestrutura que permite que arquivos e diretórios sejam compartilhados entre diferentes sistemas de computadores conectados em rede. Em outras palavras, é uma forma de fornecer aos usuários acesso a arquivos armazenados em discos rígidos localizados em diferentes servidores. No SAD, o sistema de arquivos é distribuído por vários computadores interconectados. Cada servidor pode armazenar arquivos ou diretórios, e todos os servidores são acessados como um único sistema de arquivos para os usuários. O acesso aos arquivos pode ser feito por meio de um protocolo padrão de rede, como o NFS (Network File System) ou o CIFS (Common Internet File System). Os arquivos e diretórios no SAD podem ser acessados por diferentes usuários em diferentes sistemas. Além disso, o SAD permite que vários usuários acessem o mesmo arquivo ao mesmo tempo, mas em diferentes servidores, o que pode melhorar o desempenho e a disponibilidade. Um exemplo de Sistema de Arquivos Distribuídos é o GlusterFS, que é um software livre que permite criar um sistema de arquivos distribuído para vários servidores. Com o GlusterFS, os arquivos são replicados em vários servidores, o que aumenta a disponibilidade e a tolerância a falhas do sistema. Ele também oferece a capacidade de adicionar e remover servidores dinamicamente, permitindo a escalabilidade do sistema. 2) Explique o que são Espaços de Nomes e Alias. R: Em um sistema de arquivos, um espaço de nomes é um conjunto de nomes de arquivos únicos usados para identificar arquivos e diretórios em um sistema. Cada arquivo ou diretório é referenciado por um caminho que especifica sua localização dentro do espaço de nomes. O uso de espaços de nomes permite que arquivos com nomes iguais ou semelhantes coexistam em um sistema de arquivos sem conflitos. Os aliases são nomes alternativos para arquivos ou diretórios em um sistema de arquivos. Eles fornecem uma maneira de se referir a um arquivo ou diretório com um nome diferente do nome original ou do caminho completo. Os aliases são úteis em situações em que um arquivo precisa ser referenciado de várias maneiras diferentes, ou quando um nome de arquivo longo ou complexo precisa ser simplificado para fins de conveniência ou facilidade de uso. Por exemplo, em um sistema de arquivos distribuído, pode ser conveniente criar aliases para arquivos e diretórios em diferentes nós do sistema para facilitar o acesso e a navegação pelos usuários. 3) Qual é a característica dos Domínios de Atribuição de Nomes que os diferenciam dos Espaços de Nomes comuns. R: Os Domínios de Atribuição de Nomes (DANs) são uma forma de Espaços de Nomes com a característica adicional de que cada nome no DAN é atribuído a um domínio específico, que é responsável por gerenciá-lo. Isso permite uma melhor organização e controle dos nomes em um ambiente distribuído, já que diferentes domínios podem ter políticas de atribuição de nomes diferentes e podem se comunicar com outros domínios para resolver conflitos ou coordenar atividades. Os DANs também podem incluir serviços de diretório, que fornecem informações adicionais sobre recursos distribuídos e suas localizações. Além disso, os DANs podem ser configurados para fornecer segurança, controle de acesso e outras políticas de gerenciamento de recursos em um ambiente distribuído. Em resumo, os DANs fornecem uma estrutura mais sofisticada para o gerenciamento de nomes em sistemas distribuídos, com recursos adicionais de organização, controle, segurança e serviços de diretório. 4) Explique Resolução de Nomes. R: A resolução de nomes é o processo pelo qual um nome simbólico é mapeado em um endereço ou recurso físico correspondente em um sistema distribuído. Em outras palavras, é o processo pelo qual um nome de objeto é traduzido em um endereço de rede ou outro identificador de recurso que possa ser usado para acessar o objeto em um ambiente distribuído. A resolução de nomes geralmente envolve uma solicitação enviada a um servidor de nomes que contém informações sobre a localização de objetos em uma rede. O servidor de nomes pode responder com o endereço ou identificador do objeto solicitado, ou pode encaminhar a solicitação para outro servidor de nomes que tenha informações mais precisas sobre a localização do objeto. A resolução de nomes é uma parte crítica de muitos sistemas distribuídos, pois permite que os usuários acessem recursos em uma rede sem precisar conhecer os detalhes de como esses recursos são implementados ou onde estão localizados fisicamente. É especialmente importante em ambientes de grande escala, onde os recursos podem ser distribuídos em vários servidores e sistemas em toda a rede. 5) Quais as melhorias que pode ser obtido utilizando uma cache para Resolução de Nomes? R: A utilização de uma cache para resolução de nomes pode trazer diversas melhorias para o desempenho e eficiência do sistema. Algumas dessas melhorias incluem: 1. Redução de tempo de resposta: com a utilização de uma cache local, a resolução de nomes pode ser feita mais rapidamente, já que muitas vezes os nomes já foram previamente resolvidos e estão armazenados em cache. Isso reduz o tempo de espera para obter informações de resolução de nomes de servidores remotos. 2. Redução de tráfego de rede: uma cache local de resolução de nomes pode reduzir o tráfego de rede, uma vez que muitas consultas de resolução de nomes podem ser atendidas a partir da cache, sem a necessidade de consultar servidores remotos. 3. Redução de carga no servidor: a utilização de uma cache local de resolução de nomes pode reduzir a carga no servidor, pois muitas solicitações de resolução de nomes podem ser atendidas pela cache local, reduzindo o número de solicitações que precisam ser processadas pelo servidor. 4. Melhoria na disponibilidade: com a utilização de uma cache local de resolução de nomes, é possível melhorar a disponibilidadedo serviço, pois a cache pode ser configurada para manter cópias de informações de resolução de nomes de servidores remotos, reduzindo a dependência de um único servidor para manter as informações de resolução de nomes. No geral, a utilização de uma cache local de resolução de nomes pode melhorar a eficiência, o desempenho e a disponibilidade do sistema, reduzindo o tempo de resposta, o tráfego de rede e a carga no servidor. Aulas 06 e 07 - Sincronização de sistemas distribuídos 1) Qual a característica de Sistemas Distribuídos mais evidente no problema da sincronização? R: Uma das características mais evidentes dos sistemas distribuídos relacionadas ao problema da sincronização é a falta de relógios compartilhados. Em sistemas distribuídos, é comum ter vários relógios que estão todos ligeiramente fora de sincronia, o que torna difícil coordenar as ações entre diferentes componentes do sistema. Além disso, a comunicação em redes de computadores pode sofrer atrasos e perdas, o que aumenta a complexidade da sincronização em sistemas distribuídos. Portanto, a sincronização é um dos principais desafios enfrentados em sistemas distribuídos. 2) A sincronização por Relógio Físico sempre é exata? Porquê? R: Não, a sincronização por relógio físico nem sempre é exata. Os relógios físicos podem ser afetados por diversas fontes de imprecisão, como a deriva do relógio, o tempo de propagação de mensagens, o tempo de processamento, entre outros fatores. Além disso, a sincronização por relógio físico depende da capacidade de sincronização dos protocolos utilizados, que podem não ser precisos o suficiente para garantir a exatidão da sincronização em todas as situações. Por essas razões, muitos sistemas distribuídos utilizam algoritmos de sincronização de relógio que levam em conta essas imprecisões e tentam minimizá-las. 3) Em qual situação o Relógio Lógico é indicado? R: O relógio lógico é um mecanismo usado para sincronizar eventos em sistemas distribuídos. Ele é indicado quando a sincronização precisa ser estabelecida em relação à ordem de ocorrência de eventos, em vez de em relação ao tempo absoluto. O relógio lógico é baseado em um contador que é incrementado a cada evento ocorrido em um processo. Quando um processo envia uma mensagem para outro processo, ele anexa o valor atual do contador de relógio lógico ao cabeçalho da mensagem. Quando o processo receptor recebe a mensagem, ele atualiza seu contador de relógio lógico para o valor máximo entre o seu próprio contador e o valor recebido na mensagem. Dessa forma, cada processo pode determinar a ordem relativa de eventos em diferentes processos. O relógio lógico não é tão preciso quanto o relógio físico, mas é uma solução útil em sistemas distribuídos em que o tempo absoluto pode não ser relevante ou confiável. 4) O que é UTC? R: UTC (Coordinated Universal Time, ou Tempo Universal Coordenado em português) é uma escala de tempo que é usada como referência para estabelecer o horário oficial em muitos países ao redor do mundo. É um padrão de tempo baseado em relógios atômicos que permite uma sincronização precisa em todo o planeta. O UTC é definido pelo Bureau Internacional de Pesos e Medidas (BIPM) e é mantido através de uma rede de relógios atômicos em todo o mundo. Ele é utilizado como base para ajustar outros sistemas de tempo, como o horário de verão e as diferentes zonas de tempo. 5) Qual é o objetivo da Coordenação Distribuída? Explique sua importância? R: Coordenação Distribuída é uma área de pesquisa em Sistemas Distribuídos que se concentra em encontrar maneiras de permitir que múltiplos processos em um sistema distribuído coordenem suas ações e interajam de forma eficiente e confiável. O objetivo principal da Coordenação Distribuída é garantir a consistência do sistema e evitar que processos concorrentes entrem em conflito, o que pode levar a resultados inesperados e potencialmente prejudiciais. A importância da Coordenação Distribuída está na sua capacidade de permitir que sistemas distribuídos funcionem de maneira confiável, mesmo em face de falhas e degradação no desempenho. Com a coordenação adequada, é possível manter a consistência dos dados, evitar conflitos entre processos e garantir que o sistema funcione de maneira previsível e eficiente. Isso é particularmente importante em sistemas distribuídos de grande escala, nos quais a coordenação eficiente é essencial para garantir a escalabilidade e a disponibilidade do sistema. 6) O que é Exclusão Mútua, ela é aplicada em quais situações? Dê um exemplo. R: Exclusão mútua é um mecanismo utilizado em sistemas computacionais para garantir que somente um processo ou thread possa acessar um recurso compartilhado em um dado momento. A exclusão mútua é aplicada em situações em que vários processos precisam acessar um recurso compartilhado, mas apenas um processo pode acessar o recurso de cada vez. O objetivo é garantir que os processos não entrem em conflito ao tentar acessar o recurso ao mesmo tempo. Por exemplo, suponha que exista uma impressora compartilhada em uma rede de computadores e vários processos precisam imprimir documentos nessa impressora. Para evitar que os processos tentem imprimir ao mesmo tempo e acabem gerando impressões conflitantes ou corrompidas, é necessário garantir a exclusão mútua, permitindo que apenas um processo por vez acesse a impressora. Isso pode ser alcançado por meio de algoritmos de exclusão mútua, como semáforos, monitores ou algoritmos de eleição de líder. Aula 08 - Replicação e Consistência 1) Quais as vantagens da replicação? Explique com suas palavras o motivo dessas vantagens. R: A replicação é uma técnica utilizada em sistemas distribuídos para melhorar a disponibilidade, desempenho e confiabilidade dos dados e serviços. Algumas das principais vantagens da replicação incluem: 1. Aumento da disponibilidade: ao replicar dados e serviços em múltiplos servidores, é possível garantir que, mesmo que um dos servidores falhe, o serviço continuará disponível para os usuários, uma vez que eles poderão acessá-lo através de um dos outros servidores. 2. Melhoria do desempenho: a replicação também pode melhorar o desempenho, uma vez que os usuários podem acessar os dados e serviços a partir do servidor mais próximo ou menos ocupado, o que reduz o tempo de resposta e melhora a experiência do usuário. 3. Aumento da confiabilidade: a replicação também pode melhorar a confiabilidade dos dados e serviços, uma vez que os dados são armazenados em vários servidores, reduzindo a possibilidade de perda de dados ou falha de serviço. 4. Escalabilidade: a replicação permite que o sistema distribuído seja escalado para lidar com um grande número de usuários ou transações. Novos servidores podem ser adicionados ao sistema para lidar com o aumento da demanda, e os dados e serviços podem ser replicados nesses novos servidores para manter a disponibilidade e desempenho. No entanto, a replicação também apresenta alguns desafios, como a consistência dos dados e a coordenação entre os servidores. A garantia da consistência dos dados em vários servidores é um desafio, uma vez que a atualização dos dados em um servidor pode levar tempo para ser propagada para outros servidores. Portanto, é importante que os sistemas de replicação sejam projetados para lidar com esses desafios e garantir que os dados e serviços estejam consistentes em todos os servidores. 2) Qual o requisito básico para a replicação de dados? R: O requisito básico para a replicação de dados é que os dados devem ser copiados e mantidos em múltiplos locais (ou servidores) de forma consistente. Isso significa que todas as cópias dos dados devem ser atualizadas simultaneamente e com as mesmas informações, para garantir que todas as cópias sejam iguais e refletem o estado mais recente dos dados. Para garantir a consistência dos dados replicados, é necessário implementar protocolos de replicação que definem como as atualizações de dados são propagadas para todos os servidores envolvidos na replicação. Esses protocolosgeralmente usam técnicas de coordenação e sincronização entre os servidores para garantir que as atualizações sejam aplicadas em ordem e de forma consistente em todos os locais de replicação. Além disso, a replicação também requer recursos de armazenamento e processamento adicionais, uma vez que cada cópia de dados requer espaço de armazenamento e poder de processamento para manter as atualizações em sincronia com as outras cópias. Portanto, é importante avaliar cuidadosamente os requisitos de recursos necessários para a replicação antes de implementá-la em um sistema distribuído. 3) Porque a consistência de dados é tão importante? Quais os dois modelos estudados. R: A consistência de dados é importante porque garante que todas as cópias dos dados estejam sincronizadas e reflitam o estado atual dos dados. Isso é especialmente crítico em sistemas distribuídos, onde várias cópias dos dados são mantidas em diferentes servidores e podem ser atualizadas simultaneamente por vários clientes. Se as atualizações de dados não forem aplicadas de forma consistente em todas as cópias, os diferentes clientes podem ter visões diferentes dos dados, o que pode levar a comportamentos inconsistentes e erros no sistema. No Modelo de Consistência Centrado nos Dados, todas as operações de leitura e gravação em um conjunto de dados devem ser aplicadas de forma consistente em todas as cópias dos dados antes que a operação seja considerada concluída. Isso significa que todas as cópias dos dados devem estar atualizadas antes que a operação seja considerada concluída, e que todas as operações de leitura subsequente devem retornar os mesmos dados atualizados. Esse modelo de consistência é mais restrito e exige mais recursos de coordenação e sincronização entre as cópias dos dados, mas garante que os dados estejam sempre em um estado consistente. No Modelo de Consistência Centrado nos Clientes, os clientes podem ter visões diferentes dos dados em momentos diferentes, desde que a visão seja consistente com o estado mais recente dos dados. Isso significa que as operações de leitura podem retornar diferentes resultados em diferentes cópias dos dados, desde que esses resultados refletem o estado atual dos dados naquela cópia. Esse modelo é menos restrito e requer menos recursos de coordenação e sincronização entre as cópias dos dados, mas pode levar a visões inconsistentes dos dados pelos clientes. Em resumo, o Modelo de Consistência Centrado nos Dados garante que os dados estejam sempre em um estado consistente, enquanto o Modelo de Consistência Centrado nos Clientes permite diferentes visões dos dados, desde que elas reflitam o estado atual dos dados. A escolha entre os modelos depende dos requisitos de consistência e desempenho do sistema e deve ser avaliada cuidadosamente durante o projeto e implementação de um sistema distribuído. 4) Quais as duas categorias de protocolos de consistência? Indique sua principal diferença. R: Os protocolos baseados em servidor primário selecionam um nó específico como o nó primário ou mestre, que é responsável por coordenar todas as operações de gravação nos nós secundários. Quando um cliente deseja gravar dados, ele se comunica com o nó primário, que coordena a gravação em todos os nós secundários. O nó primário geralmente mantém uma cópia completa e atualizada de todos os dados, enquanto os nós secundários mantêm cópias somente leitura dos dados. Esse protocolo garante que apenas o nó primário faça alterações nos dados, o que significa que a consistência dos dados é mais facilmente mantida. No entanto, se o nó primário falhar, todo o sistema pode ficar indisponível. Os protocolos de escrita replicada permitem que todos os nós armazenem dados e coordenem gravações sem um nó primário. Em vez disso, quando um cliente deseja gravar dados, ele se comunica com vários nós simultaneamente para garantir que as gravações sejam replicadas em todos os nós. Essa abordagem garante alta disponibilidade, pois os dados podem ser gravados em qualquer nó, mas pode tornar mais difícil manter a consistência dos dados. Os protocolos de escrita replicada geralmente são mais adequados para ambientes onde a disponibilidade é mais importante do que a consistência estrita dos dados, como em sistemas de cache distribuído ou em aplicativos da Web em larga escala. Aula 09 - Tolerância a falhas 1) Explique com suas palavras a característica de tolerância a falhas. R: Um sistema tolerante a falhas é capaz de manter seu funcionamento, mesmo que um ou mais componentes falhem, o que pode acontecer por diversos motivos, como falha de hardware, problemas de rede, entre outros. A tolerância a falhas é alcançada por meio da replicação de componentes importantes do sistema, como dados e serviços, ou por meio do uso de algoritmos e protocolos que permitem detectar e corrigir falhas. Portanto, a tolerância a falhas é uma característica essencial para garantir a disponibilidade, confiabilidade e resiliência dos sistemas distribuídos, permitindo que eles continuem a operar mesmo em condições adversas ou em face de falhas imprevistas. 2) Existem 3 tipos de Mascaramento de Falhas. Indique quais são e o que fazem. R: 1. Mascaramento de falhas por tempo (redundância de tempo): neste tipo de mascaramento, a falha é detectada, mas não é corrigida imediatamente. Em vez disso, o sistema aguarda um período de tempo antes de agir, na esperança de que a falha seja temporária e possa se recuperar por si só. Se a falha persistir após esse período, o sistema toma medidas para corrigi-la. 2. Mascaramento de falhas por espaço (redundância de informação): neste tipo de mascaramento, o sistema utiliza componentes redundantes que podem substituir o componente defeituoso em caso de falha. Quando ocorre uma falha, o componente redundante assume as funções do componente com falha e o usuário não percebe a interrupção do serviço. 3. Mascaramento de falhas por réplica (redundância física): neste tipo de mascaramento, o sistema distribuído possui réplicas idênticas dos componentes críticos do sistema. Se uma réplica falha, outra réplica pode assumir suas funções, garantindo que o serviço continue sendo fornecido sem interrupção. 3) Qual o objetivo da Resiliência. Explique seu funcionamento. R: O objetivo da resiliência é garantir que um sistema seja capaz de se adaptar e se recuperar de falhas e interrupções inesperadas, mantendo a continuidade dos serviços prestados. Uma mensagem é enviada a um grupo; Todos os processos a recebem; Caso um processo do grupo falhe, espera-se que outro assuma a responsabilidade pela mensagem. 4) O que significa Dependabilidade? Qual o seu objetivo? R: Dependabilidade é uma característica de sistemas computacionais que se refere à capacidade de um sistema de ser confiável, seguro e disponível, ou seja, capaz de fornecer seus serviços de maneira consistente e previsível, mesmo em condições adversas ou diante de falhas. Os aspectos fundamentais da dependabilidade incluem: ● Confiabilidade: a capacidade do sistema de realizar suas funções conforme esperado, sem falhas ou erros. ● Disponibilidade: a capacidade do sistema de estar disponível para uso sempre que necessário, mesmo em caso de falhas ou manutenção. ● Segurança: a capacidade do sistema de proteger seus usuários e seus dados contra ameaças externas ou internas. ● Manutenibilidade: a capacidade do sistema de ser mantido e atualizado de forma eficiente e sem interrupções significativas no serviço. Para alcançar a dependabilidade, os sistemas computacionais geralmente empregam diversas técnicas e estratégias, incluindo redundância, backup, teste e validação, segurança, monitoramento e recuperação de falhas.
Compartilhar