1) A tolerância a falhas é uma característica importante em sistemas distribuídos que permite que o sistema continue funcionando mesmo quando alguns de seus componentes falham.
2) A redundância, como a replicação de processos em grupos, é uma técnica fundamental para mascarar falhas e manter a disponibilidade do sistema.
3) Protocolos de consenso como Paxos e PBFT são usados para que processos replicados cheguem a um acordo sobre operações mesmo na presença de falhas.
Tolerancia a falhas sistema distribuído .pdfHurgelNeto
O documento discute a tolerância a falhas em sistemas distribuídos. Aborda conceitos como falhas parciais, redundância de informação, tempo e hardware para mascarar falhas. Também apresenta modelos de falhas como fail-stop, omissão e temporização, além de estratégias como replicação de processos em grupos simples ou hierárquicos para prover resiliência.
O documento discute conceitos de alta disponibilidade, incluindo: (1) aplicações que se tornam indisponíveis podem causar prejuízos financeiros ou riscos à vida humana, (2) envolve tanto hardware quanto software para remover falhas e fornecer redundância, (3) pode ser alcançada em vários níveis como aplicação, infraestrutura e data center.
O documento discute modelos de falhas em sistemas distribuídos, classificando falhas e definindo termos como disponibilidade, confiabilidade e pontualidade. Apresenta estratégias para tolerar falhas, como redundância de informação, tempo e componentes físicos, além de abordar comunicação confiável entre processos e grupos.
Em que momento a infraestrutura de servidores e administração dos recursos de...Edilson Feitoza
O documento discute a importância de se ter uma boa infraestrutura de servidores e de dividir as tarefas de administração de TI entre equipes. Apresenta exemplos de problemas com servidores improvisados e mal administrados, e defende que dividir as responsabilidades entre analistas especializados em cada serviço evita problemas e otimiza a gestão dos recursos de TI.
1) A comunicação entre processos em sistemas distribuídos é feita através da troca de mensagens, ao invés de memória compartilhada.
2) Protocolos de comunicação utilizam camadas para facilitar a implementação e entendimento da troca de mensagens entre sistemas heterogêneos.
3) O Modelo OSI define sete camadas de funcionalidade para a comunicação entre sistemas abertos de forma estruturada.
A manutenção de servidores é essencial para garantir o bom funcionamento das redes de computadores, prevenindo problemas e prolongando a vida útil dos equipamentos. Ela envolve atualizações de softwares e hardwares, verificações de segurança, limpeza preventiva e correções de falhas para manter os servidores funcionando de forma estável e segura.
O documento discute como automatizar sistemas legados utilizando ferramentas de DevOps. Primeiro, descreve as características problemáticas dos sistemas legados e a necessidade de tratá-los da melhor forma possível. Em seguida, apresenta como a HypeFlame/Agibank modularizou seu sistema legado, escolheu ferramentas adequadas e implementou pipelines de integração e entrega contínuas para tratá-lo de forma semelhante a microsserviços.
1) O documento discute processos e threads em sistemas operacionais modernos, abordando tópicos como criação e término de processos, estados de processos, comunicação entre processos e uso de threads.
2) É explicado que um processo é uma entidade dinâmica que consiste em um programa em execução e seus recursos, e que threads permitem múltiplas execuções dentro do mesmo processo.
3) Problemas de condição de corrida ocorrem quando processos acessam recursos compartilhados simultaneamente e são evitados por
Tolerancia a falhas sistema distribuído .pdfHurgelNeto
O documento discute a tolerância a falhas em sistemas distribuídos. Aborda conceitos como falhas parciais, redundância de informação, tempo e hardware para mascarar falhas. Também apresenta modelos de falhas como fail-stop, omissão e temporização, além de estratégias como replicação de processos em grupos simples ou hierárquicos para prover resiliência.
O documento discute conceitos de alta disponibilidade, incluindo: (1) aplicações que se tornam indisponíveis podem causar prejuízos financeiros ou riscos à vida humana, (2) envolve tanto hardware quanto software para remover falhas e fornecer redundância, (3) pode ser alcançada em vários níveis como aplicação, infraestrutura e data center.
O documento discute modelos de falhas em sistemas distribuídos, classificando falhas e definindo termos como disponibilidade, confiabilidade e pontualidade. Apresenta estratégias para tolerar falhas, como redundância de informação, tempo e componentes físicos, além de abordar comunicação confiável entre processos e grupos.
Em que momento a infraestrutura de servidores e administração dos recursos de...Edilson Feitoza
O documento discute a importância de se ter uma boa infraestrutura de servidores e de dividir as tarefas de administração de TI entre equipes. Apresenta exemplos de problemas com servidores improvisados e mal administrados, e defende que dividir as responsabilidades entre analistas especializados em cada serviço evita problemas e otimiza a gestão dos recursos de TI.
1) A comunicação entre processos em sistemas distribuídos é feita através da troca de mensagens, ao invés de memória compartilhada.
2) Protocolos de comunicação utilizam camadas para facilitar a implementação e entendimento da troca de mensagens entre sistemas heterogêneos.
3) O Modelo OSI define sete camadas de funcionalidade para a comunicação entre sistemas abertos de forma estruturada.
A manutenção de servidores é essencial para garantir o bom funcionamento das redes de computadores, prevenindo problemas e prolongando a vida útil dos equipamentos. Ela envolve atualizações de softwares e hardwares, verificações de segurança, limpeza preventiva e correções de falhas para manter os servidores funcionando de forma estável e segura.
O documento discute como automatizar sistemas legados utilizando ferramentas de DevOps. Primeiro, descreve as características problemáticas dos sistemas legados e a necessidade de tratá-los da melhor forma possível. Em seguida, apresenta como a HypeFlame/Agibank modularizou seu sistema legado, escolheu ferramentas adequadas e implementou pipelines de integração e entrega contínuas para tratá-lo de forma semelhante a microsserviços.
1) O documento discute processos e threads em sistemas operacionais modernos, abordando tópicos como criação e término de processos, estados de processos, comunicação entre processos e uso de threads.
2) É explicado que um processo é uma entidade dinâmica que consiste em um programa em execução e seus recursos, e que threads permitem múltiplas execuções dentro do mesmo processo.
3) Problemas de condição de corrida ocorrem quando processos acessam recursos compartilhados simultaneamente e são evitados por
O documento discute soluções para o problema de exclusão mútua em sistemas distribuídos. Apresenta três algoritmos: centralizado, distribuído e em anel. O algoritmo centralizado usa um processo coordenador para controlar o acesso à região crítica. O algoritmo distribuído ordena eventos globalmente através de troca de mensagens. O algoritmo em anel passa um token circularmente entre os processos.
O documento discute impasses em sistemas operacionais. Um impasse ocorre quando processos dependem uns dos outros para continuar a execução e nenhum pode prosseguir sozinho. O texto descreve causas comuns de impasses, como disputa por recursos, e técnicas para detecção e recuperação de sistemas em situação de impasse.
O documento descreve o padrão Circuit Breaker, que previne que uma aplicação tente repetidamente executar uma operação que provavelmente irá falhar. O Circuit Breaker age como um proxy monitorando falhas recentes e decidindo se permite ou não uma operação baseado no número de falhas. Ele muda entre três estados - Closed, Open e Half-Open - para controlar o acesso a serviços externos e garantir a resiliência da aplicação. O padrão deve ser usado quando se precisa impedir tentativas de invocar serviços remotos que provavelmente falharão
Uma introdução a Resiliência em Sistemas Distribuídos bem como o uso de padrões e políticas de resiliência com o Polly.
Código fonte e animações em:
https://github.com/maiconcp/polly-meetup
Apresentação realizada no evento:
https://www.meetup.com/pt-BR/qualyteam/events/258072791/
O documento discute os conceitos de transparência, resiliência e segurança em sistemas distribuídos. São descritos tipos de transparência como localização, migração e replicação que ocultam aspectos da distribuição dos recursos dos usuários. Também são abordados conceitos como disponibilidade, tolerância a falhas e medidas para proteger a segurança dos dados e recursos.
O documento discute os conceitos de escalonamento de threads no Windows, incluindo: (1) O Windows implementa um escalonador multinível do tipo feedback queue; (2) As threads possuem prioridades que variam de 0 a 31, divididas em tempos reais e variáveis; (3) O escalonador ajusta periodicamente as prioridades das threads para evitar postergação indefinida.
O documento discute algoritmos de coordenação distribuída para exclusão mútua e eleição de coordenadores. Aborda algoritmos centralizados e distribuídos para exclusão mútua baseados em fichas e permissões. Também explica algoritmos de eleição como o do valentão, do anel, para redes sem fio e sistemas de grande escala.
O documento discute os conceitos fundamentais de concorrência em sistemas computacionais, incluindo: (1) por que a concorrência é importante para melhorar o desempenho e modelar o mundo real; (2) como programas concorrentes especificam múltiplos processos executando simultaneamente; e (3) os problemas complexos introduzidos pela concorrência, como não-determinismo, dependência de velocidade, deadlocks e fome.
Segurança Através de Gerência de ConfiguraçõesJeronimo Zucco
O documento discute como a gerência de configurações pode melhorar a segurança através da automação e padronização de configurações em servidores. Ele explica como ferramentas como Puppet podem garantir que as configurações sejam aplicadas de forma consistente, documentada e escalonável em múltiplas máquinas, prevenindo erros e garantindo a segurança das configurações. Um exemplo mostra como Puppet pode agilizar o processo de criação de contas de usuário em vários servidores de forma automatizada.
O documento discute tolerância a falhas em sistemas, incluindo tipos de falhas, uso de redundância e consenso na presença de falhas. Aborda falhas em hardware e software, tempos médios até falhar, replicação ativa e primária-backup para tolerar falhas, e os desafios do consenso quando há falhas de comunicação ou processadores.
O documento discute deadlocks em sistemas operacionais, definindo deadlock como uma situação onde dois ou mais processos estão esperando por um evento que só pode ser gerado por algum dos mesmos processos em espera. As condições necessárias para um deadlock ocorrer são também explicadas, assim como possíveis soluções como prevenção, detecção e recuperação de deadlocks."
O documento discute sistemas operacionais aplicados, especificamente sobre servidores de aplicação e conceitos relacionados como programa, serviço, rede, modelos de comunicação e protocolos. Aborda também aplicações centralizadas versus distribuídas e os papéis da rede e protocolos nesses sistemas.
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorSofia Trindade
O documento discute categorias de algoritmos de escalonamento e seus objetivos. Explora sistemas em lote, interativos e tempo real, e como os algoritmos de escalonamento variam de acordo com cada ambiente para atingir objetivos como eficiência, tempo de resposta e cumprimento de prazos.
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...tdc-globalcode
O documento discute os benefícios da versionamento da infraestrutura usando ferramentas de orquestração como Chef e Ansible, incluindo a redução de riscos de falhas, menos dependência de pessoas e melhor monitoramento. É apresentada a experiência da empresa Rivendel na implantação de cultura DevOps e na migração de clientes para ambientes na nuvem.
Apresentação do Coderage Brasil 2018 sobre TDD com Código Legado com Delphi usando Spring.Testing e TestInsight.
Dicas de Refactory, como identificar Code Smell e Antipatterns e Hands on do refactory do exemplo GettingStarted do FireDAC.
"Apresentação atualizada, pois o SlideShare não permite re-upload."
Vídeo da primeira parte - Apresentação
https://youtu.be/ZWQO0bLB8gU
O capítulo discute multiprocessamento e clusters, abordando programação paralela, coerência de cache, sincronização e topologias de rede. São explicados conceitos como speedup, barramento único, NUMA, clusters, SIMD, vetorial e categorias de Flynn.
O documento discute a importância de uma boa infraestrutura de servidores. Ele explica que uma infraestrutura de servidores garante a disponibilidade dos serviços, mantém redundâncias de hardware e sistemas, e realiza backups periódicos. Também descreve ambientes comuns para servidores e os riscos de reutilizar servidores antigos ou transformar PCs em servidores. A computação em nuvem é apresentada como uma alternativa, com vantagens como economia e escalabilidade, mas também desvantagens como dependência da internet.
Categorias de escalonamento e objetivos do algoritmo de escalonamentoThaís Favore
Este documento discute categorias de algoritmos de escalonamento e seus objetivos. Ele explica que há três principais categorias de algoritmos (lote, interativo e tempo real), cada um com objetivos diferentes de desempenho em função do tipo de sistema. Além disso, destaca a importância de manter todas as partes do sistema ocupadas para maximizar a produtividade.
Material de aula da disciplina de Sistemas Distribuídos ministrada na Faculdade Dom Luiz de Orleans e Bragança no curso Tecnólogo de Redes de Computadores
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
O documento discute soluções para o problema de exclusão mútua em sistemas distribuídos. Apresenta três algoritmos: centralizado, distribuído e em anel. O algoritmo centralizado usa um processo coordenador para controlar o acesso à região crítica. O algoritmo distribuído ordena eventos globalmente através de troca de mensagens. O algoritmo em anel passa um token circularmente entre os processos.
O documento discute impasses em sistemas operacionais. Um impasse ocorre quando processos dependem uns dos outros para continuar a execução e nenhum pode prosseguir sozinho. O texto descreve causas comuns de impasses, como disputa por recursos, e técnicas para detecção e recuperação de sistemas em situação de impasse.
O documento descreve o padrão Circuit Breaker, que previne que uma aplicação tente repetidamente executar uma operação que provavelmente irá falhar. O Circuit Breaker age como um proxy monitorando falhas recentes e decidindo se permite ou não uma operação baseado no número de falhas. Ele muda entre três estados - Closed, Open e Half-Open - para controlar o acesso a serviços externos e garantir a resiliência da aplicação. O padrão deve ser usado quando se precisa impedir tentativas de invocar serviços remotos que provavelmente falharão
Uma introdução a Resiliência em Sistemas Distribuídos bem como o uso de padrões e políticas de resiliência com o Polly.
Código fonte e animações em:
https://github.com/maiconcp/polly-meetup
Apresentação realizada no evento:
https://www.meetup.com/pt-BR/qualyteam/events/258072791/
O documento discute os conceitos de transparência, resiliência e segurança em sistemas distribuídos. São descritos tipos de transparência como localização, migração e replicação que ocultam aspectos da distribuição dos recursos dos usuários. Também são abordados conceitos como disponibilidade, tolerância a falhas e medidas para proteger a segurança dos dados e recursos.
O documento discute os conceitos de escalonamento de threads no Windows, incluindo: (1) O Windows implementa um escalonador multinível do tipo feedback queue; (2) As threads possuem prioridades que variam de 0 a 31, divididas em tempos reais e variáveis; (3) O escalonador ajusta periodicamente as prioridades das threads para evitar postergação indefinida.
O documento discute algoritmos de coordenação distribuída para exclusão mútua e eleição de coordenadores. Aborda algoritmos centralizados e distribuídos para exclusão mútua baseados em fichas e permissões. Também explica algoritmos de eleição como o do valentão, do anel, para redes sem fio e sistemas de grande escala.
O documento discute os conceitos fundamentais de concorrência em sistemas computacionais, incluindo: (1) por que a concorrência é importante para melhorar o desempenho e modelar o mundo real; (2) como programas concorrentes especificam múltiplos processos executando simultaneamente; e (3) os problemas complexos introduzidos pela concorrência, como não-determinismo, dependência de velocidade, deadlocks e fome.
Segurança Através de Gerência de ConfiguraçõesJeronimo Zucco
O documento discute como a gerência de configurações pode melhorar a segurança através da automação e padronização de configurações em servidores. Ele explica como ferramentas como Puppet podem garantir que as configurações sejam aplicadas de forma consistente, documentada e escalonável em múltiplas máquinas, prevenindo erros e garantindo a segurança das configurações. Um exemplo mostra como Puppet pode agilizar o processo de criação de contas de usuário em vários servidores de forma automatizada.
O documento discute tolerância a falhas em sistemas, incluindo tipos de falhas, uso de redundância e consenso na presença de falhas. Aborda falhas em hardware e software, tempos médios até falhar, replicação ativa e primária-backup para tolerar falhas, e os desafios do consenso quando há falhas de comunicação ou processadores.
O documento discute deadlocks em sistemas operacionais, definindo deadlock como uma situação onde dois ou mais processos estão esperando por um evento que só pode ser gerado por algum dos mesmos processos em espera. As condições necessárias para um deadlock ocorrer são também explicadas, assim como possíveis soluções como prevenção, detecção e recuperação de deadlocks."
O documento discute sistemas operacionais aplicados, especificamente sobre servidores de aplicação e conceitos relacionados como programa, serviço, rede, modelos de comunicação e protocolos. Aborda também aplicações centralizadas versus distribuídas e os papéis da rede e protocolos nesses sistemas.
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorSofia Trindade
O documento discute categorias de algoritmos de escalonamento e seus objetivos. Explora sistemas em lote, interativos e tempo real, e como os algoritmos de escalonamento variam de acordo com cada ambiente para atingir objetivos como eficiência, tempo de resposta e cumprimento de prazos.
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...tdc-globalcode
O documento discute os benefícios da versionamento da infraestrutura usando ferramentas de orquestração como Chef e Ansible, incluindo a redução de riscos de falhas, menos dependência de pessoas e melhor monitoramento. É apresentada a experiência da empresa Rivendel na implantação de cultura DevOps e na migração de clientes para ambientes na nuvem.
Apresentação do Coderage Brasil 2018 sobre TDD com Código Legado com Delphi usando Spring.Testing e TestInsight.
Dicas de Refactory, como identificar Code Smell e Antipatterns e Hands on do refactory do exemplo GettingStarted do FireDAC.
"Apresentação atualizada, pois o SlideShare não permite re-upload."
Vídeo da primeira parte - Apresentação
https://youtu.be/ZWQO0bLB8gU
O capítulo discute multiprocessamento e clusters, abordando programação paralela, coerência de cache, sincronização e topologias de rede. São explicados conceitos como speedup, barramento único, NUMA, clusters, SIMD, vetorial e categorias de Flynn.
O documento discute a importância de uma boa infraestrutura de servidores. Ele explica que uma infraestrutura de servidores garante a disponibilidade dos serviços, mantém redundâncias de hardware e sistemas, e realiza backups periódicos. Também descreve ambientes comuns para servidores e os riscos de reutilizar servidores antigos ou transformar PCs em servidores. A computação em nuvem é apresentada como uma alternativa, com vantagens como economia e escalabilidade, mas também desvantagens como dependência da internet.
Categorias de escalonamento e objetivos do algoritmo de escalonamentoThaís Favore
Este documento discute categorias de algoritmos de escalonamento e seus objetivos. Ele explica que há três principais categorias de algoritmos (lote, interativo e tempo real), cada um com objetivos diferentes de desempenho em função do tipo de sistema. Além disso, destaca a importância de manter todas as partes do sistema ocupadas para maximizar a produtividade.
Material de aula da disciplina de Sistemas Distribuídos ministrada na Faculdade Dom Luiz de Orleans e Bragança no curso Tecnólogo de Redes de Computadores
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
2. TOLERÂNCIA A FALHAS
• Uma característica de sistemas distribuídos
que os distingue de sistemas de uma
máquina é a noção de falha parcial
• Uma falha parcial pode acontecer quando
um componente de um SD falha
• Esta falha pode afetar a operação de alguns
componentes e ao mesmo tempo deixar outros
completamente ilesos
• Uma falha em um sistema de uma máquina
só é quase sempre total
• afeta todos os componentes
3. TOLERÂNCIA A FALHAS
• Um objetivo importante no projeto de um
sistema distribuído:
• Construir o sistema de modo que ele possa se
recuperar automaticamente de falhas parciais
sem afetar seriamente o desempenho global.
• Sempre que ocorrer uma falha o SD deve
continuar a funcionar de maneira aceitável
enquanto o sistema se recupera
• O sistema deve ser tolerante a falhas
4. TOLERÂNCIA A FALHAS
Tolerância a falhas está fortemente
relacionada a sistemas confiáveis. Um
sistema confiável abrange uma série de
requisitos:
• Disponibilidade
• Confiabilidade
• Segurança
• Capacidade de Manutenção
5. Disponibilidade
• É a propriedade de um sistema estar
pronto para ser usado imediatamente
• Um sistema de alta disponibilidade é
aquele que mais provavelmente estará
funcionando em dado instante
6. Confiabilidade
• É a propriedade do sistema funcionar
continuamente sem falhas
• Um sistema de alta confiabilidade
continuará a executar sem interrupção
durante um período de tempo longo
• Tempo médio entre falhas.
7. Disponibilidade x Confiabilidade
• Disponibilidade é definida em termos de instante de
tempo e confiabilidade em termos de intervalo de
tempo
• Um sistema muito confiável é aquele que continua a
trabalhar sem interrupção durante um período
relativamente longo de tempo
• Se um sistema ficar fora do ar por um milissegundo
a cada hora, terá uma disponibilidade de mais de
99.99999%, mas sua confiabilidade ainda será
muito baixa
• Por outro lado, um sistema que nunca cai mas é
desligado por duas semanas no ano, tem alta
confiabilidade, mas somente 96% de disponibilidade
8. Segurança
• Refere-se a situação que se o sistema
deixar de funcionar corretamente por um
certo tempo nada catastrófico
acontecerá
9. Capacidade de Manutenção
• Refere-se a facilidade com que um
sistema que falhou pode ser consertado
• Sistemas de alta capacidade de
manutenção também podem mostrar
alto grau de disponibilidade, em especial
se as falhas puderem ser detectadas e
reparadas automaticamente
10. TOLERÂNCIA A FALHAS – CONCEITOS
BÁSICOS
• Defeito: se um sistema não pode cumprir
suas promessas, apresenta defeito
• Erro: parte do estado de um sistema que
pode levar a um defeito
• Exemplo: Pacotes danificados transmitidos
• Falha: é a causa de um erro
• Um meio de transmissão errado ou ruim pode
danificar pacotes, neste caso fácil reconhecer a falha
• Alguns erros de transmissão podem ser causados por
más condições atmosféricas
• difícil remover a falha
11. CONCEITOS BÁSICOS - Tipos de falhas
Falha transiente
• Ocorre uma vez e desaparece
• Se a operação for repetida a falha não
acontecerá novamente
12. CONCEITOS BÁSICOS - Tipos de falhas
Falha intermitente
• Ocorre, para por um período
indeterminado, reaparece, e assim por
diante
• São difíceis de diagnosticar
• Ex. Mau contato
13. CONCEITOS BÁSICOS - Tipos de falhas
Falha permanente
• Continua a existir até que o componente
faltoso seja substituído
• Ex. Chip queimado
14. MODELOS DE FALHA
• Um sistema que apresenta defeito não fornece
seus serviços adequadamente. Como encontrar
o problema?
• Nem sempre o servidor que está funcionando mal é a falha
que está se procurando
• Se o servidor depende de outros servidores, por exemplo,
pode ser que a falha esteja em outro lugar
• Tais relações de dependência acontecem muito
em sistemas distribuídos
• Um disco defeituoso em um servidor de
arquivos que faz parte de um banco de dados
distribuído pode comprometer o funcionamento
adequado de todo o banco
16. Falha por queda (fail-stop)
• Um servidor para de funcionar, mas
estava funcionando corretamente até
sua parada.
• Exemplo: Um SO que para em um
estado que somente um reboot possa
fazer ele voltar a funcionar
17. Falha por omissão
• Isso ocorre quando o servidor falha em
responder a solicitações dos clientes ou falha
em receber mensagens ou em enviar
mensagens
• Razões:
• Omissão-recebimento: A conexão entre cliente e servidor
foi estabelecida corretamente, mas não tem thread para
receber as mensagens.
• Omissão-envio: Um buffer de envio estoura e a mensagem
não é enviada. O servidor tem que estar preparado porque
um cliente pode solicitar
• Um loop infinito onde cada iteração cria um novo processo
causando que o processo pare em algum momento
18. Falha por temporização
• Uma resposta do servidor está fora de
um intervalo de tempo específico
• Um site de e-commerce site pode definir
que uma resposta ao usuário não deve
ser dada em mais de 5 segundos
• Em uma aplicação de vídeo por
demanda, um cliente tem que receber os
frames em uma determinada frequência
• Difíceis de gerenciar
19. Falha de Resposta
• A resposta de um servidor está incorreta:
uma resposta errada é retornada ou um
servidor reage de forma inesperada a
uma solicitação
• Exemplo: Um motor de procura que
sistematicamente retorna páginas da web que
não estão relacionadas aos termos utilizados na
busca.
• Exemplo: Um servidor recebe uma mensagem
que não reconhece e realiza ações incorretas.
20. Falha de Resposta
• A resposta de um servidor está incorreta:
uma resposta errada é retornada ou um
servidor reage de forma inesperada a
uma solicitação
• Exemplo: Um motor de procura que
sistematicamente retorna páginas da web que
não estão relacionadas aos termos utilizados na
busca.
• Exemplo: Um servidor recebe uma mensagem
que não reconhece e realiza ações incorretas.
21. Falhas arbitrárias (bizantinas)
• Servidor está realizando respostas
incorretas, mas que não podem ser
detectadas como incorretas
• Um servidor faltoso pode estar
trabalhando maliciosamente com outros
servidores para produzir respostas
erradas
22. MASCARAMENTO DE FALHA
• Para o sistema ser tolerante a falhas, as
ocorrências das falhas devem ser
ocultas de outros processos e usuários
• A técnica fundamental para mascarar
falhas é usar redundância:
• Redundância de informação – bits extras podem
ser adicionados para recuperação de bits
deteriorados.
23. REDUNDÂNCIA DE TEMPO
• Uma ação é realizada e se necessário é
realizada novamente
• Exemplo: Se uma transação aborta, ela
pode ser refeita sem prejuízo.
• Especialmente útil quando as falhas são
transientes ou intermitentes
24. REDUNDÂNCIA FÍSICA
• Processos ou equipamentos extras são
adicionados para possibilitar que o sistema
possa como um todo tolerar a perda ou
mau funcionamento de alguns
componentes
• Redundância física pode ser feita em
hardware ou em software
• Exemplos in hardware:
• Aeronave: 747 tem 4 motores mas voa com 3.
• Aeronave espacial: Tem 5 computadores
• Circuitos eletrônicos
26. REDUNDÂNCIA FÍSICA
• No circuito eletrônico anterior, cada dispositivo é
replicado três vezes.
• Após cada estágio de dispositivo existe um
votante triplicado
• Cada votante é um circuito que possui 3
entradas e uma saída
• Se duas ou três entradas são as mesmas, a
saída é igual a esse valor de entrada
• Se todas as entradas são diferentes, a saída é
indefinida
• Este tipo de projeto é conhecido como TMR
(Triple Modular Redundancy).
27. REDUNDÂNCIA FÍSICA
• TMR pode ser aplicado a qualquer
unidade de hardware
• TMR pode mascarar completamente a
falha de uma unidade de hardware
• Não há necessidade de se executarem
ações específicas para detecção de
erro, recuperação, etc
• Particularmente adequado para falhas
transientes
28. REDUNDÂNCIA FÍSICA
• Este esquema não consegue tratar a falha
de duas unidades
• Caso uma unidade falhe, é essencial que
as outras duas continuem a trabalhar
corretamente
• O esquema TMR depende criticamente do
elemento votante, que é tipicamente um
circuito simples que é fácil de ser muito
confiável
• A falha de um único votante não é tolerada
29. ESTRATÉGIAS DE TOLERÂNCIA A FALHAS
• Resiliência de Processos
• Replicação de processos em grupos
• Grupos Simples ou Hierárquicos
• Comunicação Confiável Cliente-Servidor
• Falhas de Comunicação
• Canal de Comunicação pode exibir falhas por queda, por
omissão, arbitrárias
• Comunicação Confiável de Grupo
• Implementar entrega confiável de mensagens a todos
processos
• Comprometimento Distribuído
• Envolve a realização de uma operação por cada membro
de um grupo de processos ou por absolutamente nenhum
30. RESILIÊNCIA DE PROCESSO
A abordagem fundamental para tolerar um
processo faltoso é organizar vários processos
idênticos em um grupo
• Quando uma mensagem é enviada a um grupo,
todos membros do grupo a recebem
• Se um processo falhar, espera-se que algum
outro se encarregue da mensagem em seu
lugar
• Grupos podem ser dinâmicos
• A finalidade de introduzir grupos é permitir que
processos tratem conjuntos de processos como
uma única abstração, como um único processo
32. RESILIÊNCIA DE PROCESSO
Grupos simples
• Todos processos são iguais dentro de um
grupo
• Decisões são tomadas coletivamente
• Vantagem
• Não tem ponto de falha único → Mesmo que um
processo caia, o grupo continua a oferecer o serviço
• Desvantagem
• Tomada de decisão pode ser complicada, com
necessidade de uma votação → retardo
33. RESILIÊNCIA DE PROCESSO
Grupos hierárquicos
• Existe um processo coordenador e demais
são denominados operários
• Sempre que uma requisição e gerada, é
enviada ao coordenador → O coordenador
decide qual e o operário mais adequado
para executá-la
• Vantagem
• Decisões são centralizadas
• Desvantagem
• Caso o coordenador falhe, o serviço falhará
34. RESILIÊNCIA DE PROCESSO
• Com a existência da comunicação em
grupos, se torna necessário mecanismos
para:
• Criar e eliminar grupos
• Permitir a entrada e saída de processos em um
grupo
• Existem duas abordagens possíveis
para este gerenciamento:
• Servidor de grupo
• Gerenciamento distribuído
35. RESILIÊNCIA DE PROCESSO
Servidor de Grupo
• Recebe todas as requisições e mantém
banco de dados completo sobre todos
grupos e seus membros
• Método direto, eficiente e razoavelmente
fácil de implementar
• Desvantagem
• Por ser uma abordagem centralizada → Um único
ponto de falha
• Se o servidor de grupo cair, o gerenciamento deixa
de existir
36. RESILIÊNCIA DE PROCESSO
Gerenciamento Distribuído
• Se existe multicast confiável, um processo
pode enviar uma mensagem a todos os
membros do grupo anunciando que deseja
se juntar ao grupo
• Para sair de um grupo, o processo deveria
mandar uma mensagem de adeus a todos
• Dificuldades:
• Difícil de detectar quedas
• Entrar/Sair de um grupo devem ser síncronos com as
mensagens enviadas/recebidas
37. RESILIÊNCIA DE PROCESSO
• Para construir sistemas tolerantes a falhas,
podemos replicar processos e organizá-los em
um grupo para substituir um único processo
(vulnerável) por um grupo (tolerante a falha).
• A replicação pode ser abordada de duas
maneiras:
• Protocolos baseados em primários: Um grupo de
processos é organizado de modo hierárquico no qual um
servidor primário coordena todas operações de escrita. Os
servidores de backup executam um algoritmo de eleição
caso o primário caia.
• Protocolos de escrita replicada: organiza um conjunto de
processos idênticos em um grupo simples.
38. RESILIÊNCIA DE PROCESSO
Quanto de replicação é necessária ao se criar um
grupo de processos tolerante a falhas?
• Quando um grupo de processos deseja
mascarar k falhas simultâneas, é classificado
como um grupo k-tolerante a falha
1. Se k processos falharem silenciosamente, sem propagar
informações erradas, basta ter k+1 processos
2. Se os processos exibirem falhas e continuarem a enviar
respostas erradas às requisições, é preciso um mínimo de
2k+1 processadores para conseguir k-tolerância, porque
teremos k enviando respostas erradas mas k+1 enviando
respostas certas e pode-se acreditar na maioria
39. RESILIÊNCIA DE PROCESSO – ACORDO
• Organizar processos replicados em um grupo
ajuda a aumentar a tolerância a falha
• Em muitos casos, um grupo de processos deve
chegar a algum tipo de acordo: eleger um
coordenador, decidir a validação de uma
transação, repartir tarefas entre operários
• Objetivo é que todos os processos que não
apresentam falhas cheguem a um consenso
sobre alguma questão, dentro de um número
finito de etapas
• O problema é complicado pelo fato de que
premissas diferentes sobre o sistema requerem
soluções diferentes
40. RESILIÊNCIA DE PROCESSO – ACORDO
• Consenso por Inundação
• Paxos
• https://www.youtube.com/watch?v=SRsK-
ZXTeZ0
• PBFT(Pratical Bizantine Fault Tolerance)
• https://www.youtube.com/watch?v=IafgKJN3nwU