Buscar

Exercícios sobre Sistemas distribuídos

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 12 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 12 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 12 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 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.

Continue navegando