Explicação 2 do cluster Redis

Resumo da pequena classe D

  • Analise o princípio do modo de cluster

    • A segmentação horizontal é relativamente mais complicada do que a vertical. Porque você deseja dividir dados diferentes na mesma tabela em bancos de dados diferentes. Sharding é uma tecnologia de expansão de conceito tradicional baseada na divisão do banco de dados em vários fragmentos. Ele divide o banco de dados em vários fragmentos e os coloca em servidores diferentes.

    • A maior característica da segmentação vertical é que as regras são simples e a implementação é mais conveniente, sendo especialmente adequada para sistemas com acoplamento muito baixo entre vários serviços, pouca influência mútua e lógica de negócios muito clara. Coloque dados diferentes em tabelas diferentes de acordo com as dimensões do negócio

  • Failover

    • Através da sincronização das informações do nó gossip, o escravo é percebido como o nó de backup do mestre, e a falha é eliminada.O nó mestre é substituído pelo escravo, e o resultado é notificado aos outros nós após a substituição.

  • Twitter Twitter empresa twemproxy de fragmentação de servidor e soluções de cluster de fragmentação de cliente

  • conceito:

    Twemproxy, também chamado de nutcraker. É um servidor proxy rápido / leve para redis e memcache de código aberto da twtter; Twemproxy é um programa proxy de thread único rápido compatível com Memcached e Redis. Middleware de proxy Redis twemproxy é uma tecnologia que usa middleware para fragmentação. O twemproxy está no meio do cliente e do servidor. Após uma certa quantidade de processamento (fragmentação), a solicitação enviada pelo cliente é encaminhada para o servidor redis real back-end

  • efeito:

    Ao introduzir uma camada de proxy, o Twemproxy pode gerenciar e alocar uniformemente várias instâncias do Redis ou Memcached em seu back-end, de modo que o aplicativo só precise operar no Twemproxy, independentemente de quantos armazenamentos Redis ou Memcached reais estejam atrás.

  •  

  • característica:

    • Suporta exclusão automática de nós com falha

      • Você pode definir o tempo para se reconectar ao nó

      • Você pode definir o número de conexões para excluir o nó

    • Reduza o número de conexões entre o cliente e o servidor diretamente

      • Fragmentar automaticamente para várias instâncias do redis no back-end

    • Vários algoritmos de hash

      • md5, crc16, crc32, crc32a, fnv1_64, fnv1a_64, fnv1_32, fnv1a_32, hsieh, murmur, jenkins

    • Vários algoritmos de fragmentação

      • ketama (uma implementação de algoritmo hash consistente), modula, random

  • Algoritmo Hash consistente

  • 2 elevado à potência 32 do módulo hash 0 a 2 elevado à potência 32 de -1

  • ShardedJedisPool de jedis distribuídos (algoritmo de fragmentação de Hash consistente)

  • conceito:

    Quando o problema de balanceamento de carga em um sistema distribuído, você pode usar o algoritmo Hash para fazer uma parte fixa da solicitação cair no mesmo servidor, de modo que cada servidor possa processar uma parte da solicitação (e manter as informações dessas solicitações), e desempenhar o papel de balanceamento de carga

  • prática:

    • O anel de hash começa no sentido horário a partir do inteiro 0 e atinge o maior número inteiro positivo. O valor de hash que calculamos com base nos quatro ips certamente cairá para um determinado ponto no anel de hash. Até agora, mapeamos os quatro ips do servidor para consistência anel de hash

    • Quando um usuário faz uma solicitação no cliente, primeiro calcule a regra de roteamento (valor de hash) de acordo com o hash (id do usuário), veja onde o valor de hash cai no anel de hash e encontre a distância mais próxima no sentido horário de acordo com a posição do valor de hash no anel de hash IP como IP de roteamento

    • Quando um usuário faz uma solicitação no cliente, primeiro calcule a regra de roteamento (valor de hash) de acordo com o hash (id do usuário), veja onde o valor de hash cai no anel de hash e encontre a distância mais próxima no sentido horário de acordo com a posição do valor de hash no anel de hash Ip como o IP de roteamento.

  • As características do hash consistente

    • Monotonicidade. Monotonicidade significa que, se algumas solicitações já tiverem sido processadas no servidor correspondente para processamento e um novo servidor for adicionado ao sistema, deve-se garantir que a solicitação original possa ser mapeada para a original Ou para o novo servidor sem ser mapeado para os outros servidores originais.

    • Spread: Em um ambiente distribuído, o cliente pode não saber a existência de todos os servidores ao solicitar, e pode saber apenas alguns deles.Para o cliente, a parte dos servidores que ele vê formará um hash ring completo. Se vários clientes tratarem parte do servidor como um hash ring completo, isso pode fazer com que a solicitação do mesmo usuário seja roteada para diferentes servidores para processamento. Obviamente, esta situação deve ser evitada, pois não pode garantir que a solicitação do mesmo usuário cairá no mesmo servidor. A chamada dispersão refere-se à gravidade da ocorrência da situação acima. Um bom algoritmo de hash deve tentar evitar a redução da dispersão tanto quanto possível. Hash de consistência tem dispersão muito baixa

    • Equilíbrio: Equilíbrio significa equilíbrio de carga, o que significa que as solicitações em hash do cliente devem ser distribuídas para servidores diferentes. O hash consistente pode fazer solicitações de processos de cada servidor, mas não pode garantir que o número de solicitações processadas por cada servidor seja aproximadamente o mesmo

    • Nó virtual do algoritmo Hash consistente

    • Analise de problemas:

      Depois que o nó hash departamental é removido, embora as máquinas restantes estejam processando solicitações, é óbvio que a carga de cada máquina não está balanceada. Isso é chamado de inclinação do hash consistente. O surgimento de nós virtuais é para resolver este problema.

    • Adicionar nós virtuais

      Quando o número de máquinas físicas é A e o nó virtual é B, o número real de nós no anel hash é A * B, e o nó A é dividido em A1, A2, A3; A1, A2, A3 são uniformemente distribuídos em cada local, Faça com que os nós servidos por A sejam distribuídos da forma mais uniforme possível em cada canto

    • Carga relativamente balanceada em cada servidor

      Quando um nó desliga, seus dados são distribuídos uniformemente para o nó vizinho no sentido horário atrás, então todos os dados são relativamente balanceados do que o hash consistente descrito anteriormente

Acho que você gosta

Origin blog.csdn.net/qq_41023026/article/details/89739206
Recomendado
Clasificación