utilizando gems gossip protocol · gossip-protocol - tem funcionamento parecido com a fofoca...
TRANSCRIPT
Gossip Protocolutilizando GEMS
Alunos: João Batista, Lucas Eugênio, Vinícius Coelho
Gossip-protocol
- Confiavel, escalavel, rápido;- Usado para detecção de falhas;- Consenso distribuído de falhas, entre centenas e até milhares de nós em tempo curto;- Usa mensagens UDPs;
Gossip-protocol
- Tem funcionamento parecido com a fofoca humana;- Um nó escolhe randomicamente, de tempos em tempos, outros nós para propagar suas informações; - Mensagens com informações sobre outros nós(lista gossip, matriz de suspeitos e cabeçalhos);
Parametros chave para o protocolo
- Gossip time - tempo que o nó espera entre o envio das mensagens;- Cleanup time - tempo decorrido desde a ultima mensagem recebida de um nó;- Consensus time - tempo decorrido desde que um nó foi declarado como falho;
- Gossip lista - vetor com o tempo decorrido desde o ultimo sinal recebido, de cada nó do sistema;- Vetor de suspeitos - vetor com a marcação dos nós suspeitos de falha;- Matriz de suspeitos - matriz que guarda o vetor de suspeitos dos outros nós;- Vetor de vivos - guarda quais nós ainda estão vivos;
Dados mantidos por cada nó
Abordagens
- Flat System;- Layered System;
Abordagens
- Layered Gossip; divide o sistema em grupos; ideia de divisão e conquista;- Cada camada de grupos é tratada como se fosse um nó;- Os nós mantem informações do grupo, e o grupo mantém informações dos grupos mais ácima;- Uma lista de nós vivos para cada grupo é mantida em todos grupo;
Gossip-protocol
- Interessante ideia de consenso;- Para um nó ser declarado falho, maioria dos nós devem suspeitar de sua falha;- Informação sobre o nó falho é espalhada por broadcast;- No Layered System, o consensu é local, restrito ao grupo ao qual o nó pertence;
Gossip-protocol
- Se um grupo não tem a maioria dos nós ativos, ou não possui nós suficientes, é usado o timeout;- Checa-se a matriz de suspeitos, se foi ultrapassado o timeout e se não houve mudança na matriz(sinal de um nó) é detectada a falha;
Gossip-protocol
- Detecção de falhas de grupos;- Todos os nós do grupo cairam;- Enquanto houver um nó ativo, o grupo continua ativo;
Monitoramento de recursos e desempenho
- O modulo de controle é composto por dois componentes principais:
- RMA: Agente de monitoramento de recursos
- AG: Agente Gossip
Monitoramento de recursos e desempenho
- RMA: Agente de monitoramento de recursos- Reúne dados de desempenho do sistema e forma um
pacotes de dados.
- AG: Agente Gossip- Monitorar o estado sistema- Participa na detecção de falhas
Componentes do serviço de monitoramento
Sensores
- Função: interagir com o hardware e aplicativos para coletar dados de recursos
- Tipos de sensores:- Built-in sensors - User-defined sensors
Built-in sensors
- Ativamente mede os seguintes parâmetros de desempenho através dos serviços do sistema operacional e chamadas de sistema:
-
User-defined sensors
- Mede novos parametros do sistema, que são úteis para monitorar recursos que não são suportados pelos sensores embutidos
- Exemplo: um novo sensor definido pelo usuário, que mede a latência de ida e volta entre dois nós.
Interface de comunicação
- Coraçao do RMA- Recebe consultas de aplicações através da API- Recebe dados monitorados localmente- Recebe dados do AG- Responsável por gerar o MDP
- MDP: Monitor Data Packet
MIB: Management Information BaseAMIB: Aggregate Management Information Base
As funções de agregação
Cada aplicações pode ter uma função de agregação especial de acordo com o tipo de dados.
- Fornecidas pelo RMA
- Definidas pelo usuario
Componentes do serviço de monitoramento
Application Programming Interface (API)
- É constituído por um conjunto de funções- É o principal modo de comunicação entre a aplicação e o RMA- Categorias:
- Funções de inicialização- Funções de controle- Funções de update
Funções de inicialização
Funções de Controle
Funções de Update
Experimentos com detecções de falha
-Não determinar o T-cleanup baixo-Aumento de falsas detecções de falha-Consenso se torna impossível
Tempo de consenso em um determinado grupoprecisa ser independente do tamanho do sistema:-Maior grupo, maior tempo de consenso-Menor grupo, menor tempo de consenso
Experimentos com detecções de falha
Crescimento de camadas vs. Crescimento de grupos-Grupos menores, mais camadas, evitando overhead e sem afetar restrições
-Nó "morto" pode ser detectado em até 130ms, enquanto em outros sistemas, pode ser de até 2s
Experimentos com detecções de falha
Experimentos com uso de rede
Para sistemas pequenos ( < 64 = 8 x 8 ), camadas adicionais aumentam a largura de banda
Para sistemas maiores ( > 64 ), a largura de banda por nó em uma arquitetura de 3 camadas é menor que em uma de 2 camadas
Poucos grupos na camada dois se comunicam
Experimentos com uso de rede
Experimento com uso de processador
Teste feito pelo autor, com uso de 8-144 máquinasPIII, 733 MHz, 256 RAM
Uso de CPU aumenta quando o número de nós ou de grupos em uma camada ultrapassa um múltiplo de 8
Característica semelhante a do experimento em rede
Experimento com uso de processador
Com GEMS, o uso de CPU gira em torno de 2%, quando o módulo que monitora a performance básica do sistema é incluida
Uso em processadores de mais rápidos, obtêm-se melhor eficiência com GEMS
Experimentos com uso de processador
Inserção de novos nós
A "fofoca" para até que novo nó seja inserido, para evitar inconsistência
É crucial manter uma detecção de falha rápida, devido a pausa da "fofoca"
O tempo para inserir um nó é o tempo entre o recebimento da requisição pelo "patrocinador" até o momento em que a comunicação é restabelecida
Inserção de novos nós
Com GEMS, esse tempo é na casa de microssegundos, mesmo em sistemas grandes
Em outros sistemas, gira em torno de um décimo de segundo
Inserção de novos nós
Otimização
É dada por uma fórmula:
Otimização
B é a largura de banda requirida pelo nó, Lk é o tamanho do pacote gossip na kth camada, λ é o número de camadas usadas no serviço, fk é a frequência da mensagem gossip na kth camada,Mk é o tamanho dos dados de monitoramento de performance na camada k, e gk é o número de nós ou grupos na camada k, que juntos foram um grupo na camada k+1.
Otimização
Uma "fofoca" inclui um header, um vetor de bits, lista de gossips e uma matriz de nós suspeitos juntamente com dados de monitoramento de performance.
O campo do header é composto de 4 bytes e especifica o tipo do pacote gossip e o tamanho.
Conclusão
Podemos concluir que o uso de GEMS, pode ser o diferencial em um sistema.A arquitetura de camadas possibilita uma alta escalabilidade e facilidade na inserção nos nós, sem que haja uma perda significativa de performance.Além disso, a capacidade de recuperação é bastante eficiente, visto que um nó morto é detectado em ms, graças a tabela de "heartbeat".