Explicación 2 del clúster de redis-cluster

Resumen de la clase pequeña D

  • Analizar el principio del modo cluster

    • La segmentación horizontal es relativamente más complicada que la vertical. Porque desea dividir diferentes datos en la misma tabla en diferentes bases de datos. La fragmentación es una tecnología de expansión de concepto tradicional basada en la división de la base de datos en varios fragmentos, que divide la base de datos en varios fragmentos y los coloca en distintos servidores.

    • La mayor característica de la segmentación vertical es que las reglas son simples y la implementación es más conveniente, especialmente adecuada para sistemas con muy bajo acoplamiento entre varios servicios, poca influencia mutua y una lógica de negocios muy clara. Coloque diferentes datos en diferentes tablas de acuerdo con las dimensiones comerciales

  • Conmutación por falla

    • A través de la sincronización de la información del nodo de chismes, el esclavo se realiza como el nodo de respaldo del maestro y se elimina la falla. El nodo maestro es reemplazado por el esclavo y el resultado se notifica a otros nodos después del reemplazo.

  • Twitter Empresa de Twitter twemproxy soluciones de clúster de fragmentación del lado del servidor y del lado del cliente

  • concepto:

    Twemproxy, también llamado cascanueces. Es un servidor proxy rápido / ligero para redis y memcache open source de twtter; Twemproxy es un programa proxy rápido de un solo subproceso que admite Memcached y Redis. Twemproxy de middleware proxy de Redis es una tecnología que utiliza middleware para la fragmentación. twemproxy está en el medio del cliente y el servidor. Después de una cierta cantidad de procesamiento (fragmentación), la solicitud enviada por el cliente se reenvía al servidor back-end real redis

  • efecto:

    Al introducir una capa de proxy, Twemproxy puede administrar y asignar de manera uniforme múltiples instancias de Redis o Memcached en su back-end, de modo que la aplicación solo necesita operar en Twemproxy, independientemente de cuántos almacenamientos reales de Redis o Memcached estén detrás.

  •  

  • característica:

    • Admite la eliminación automática de nodos fallidos

      • Puede establecer el tiempo para volver a conectarse al nodo

      • Puede configurar el número de conexiones para eliminar el nodo

    • Reducir el número de conexiones entre el cliente y el servidor directamente

      • Partición automática en varias instancias de redis en el backend

    • Múltiples algoritmos hash

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

    • Múltiples algoritmos de fragmentación

      • ketama (una implementación de algoritmo hash consistente), modula, random

  • Algoritmo hash consistente

  • 2 elevado a 32 de la potencia del hash módulo 0 a 2 elevado a 32 potencia de -1

  • ShardedJedisPool de jedis distribuido (algoritmo de fragmentación de Hash consistente)

  • concepto:

    Cuando surge el problema del balanceo de carga en un sistema distribuido, se puede utilizar el algoritmo Hash para hacer que una parte fija de la solicitud caiga en el mismo servidor, de modo que cada servidor pueda procesar una parte de la solicitud (y mantener la información de estas solicitudes), lo cual juega un rol de balanceo de carga.

  • práctica:

    • El anillo de hash comienza en el sentido de las agujas del reloj desde el número entero 0 hasta el número entero positivo más grande. El valor de hash que calculamos en función de las cuatro ips definitivamente caerá a un cierto punto en el anillo de hash. Hasta ahora, hemos asignado las cuatro ips del servidor a la coherencia anillo hash

    • Cuando el usuario realiza una solicitud al cliente, primero calcule la regla de enrutamiento (valor hash) de acuerdo con el hash (identificación de usuario), luego vea dónde cae el valor hash en el anillo hash y encuentre la distancia más cercana en el sentido de las agujas del reloj de acuerdo con la posición del valor hash en el anillo hash IP como IP de enrutamiento

    • Cuando el usuario realiza una solicitud al cliente, primero calcule la regla de enrutamiento (valor hash) de acuerdo con el hash (identificación de usuario), luego vea dónde cae el valor hash en el anillo hash y encuentre la distancia más cercana en el sentido de las agujas del reloj de acuerdo con la posición del valor hash en el anillo hash Ip como la ip de enrutamiento.

  • Las características del hash consistente

    • Monotonicidad. La monotonicidad significa que si algunas solicitudes ya se han transferido al servidor correspondiente para su procesamiento, y se agrega un nuevo servidor al sistema, se debe garantizar que la solicitud original se pueda asignar al original. O al nuevo servidor sin estar asignado a los otros servidores originales.

    • Propagación: En un entorno distribuido, el cliente puede no conocer la existencia de todos los servidores al solicitar, y puede que solo conozca algunos de ellos. Desde la perspectiva del cliente, algunos de los servidores que ve formarán un anillo hash completo. Si varios clientes tratan parte del servidor como un anillo de hash completo, es posible que la solicitud del mismo usuario se enrute a diferentes servidores para su procesamiento. Obviamente, esta situación debe evitarse, porque no puede garantizar que la misma solicitud del usuario caiga en el mismo servidor. La denominada dispersión se refiere a la gravedad de la ocurrencia de la situación anterior. Un buen algoritmo hash debería intentar evitar reducir la dispersión tanto como sea posible. El hash de consistencia tiene una dispersión muy baja

    • Equilibrio: Equilibrio significa equilibrio de carga, lo que significa que las solicitudes hash del cliente deberían poder distribuirse a diferentes servidores. El hash consistente puede hacer que cada servidor procese solicitudes, pero no puede garantizar que la cantidad de solicitudes procesadas por cada servidor sea aproximadamente la misma

    • Nodo virtual de algoritmo hash consistente

    • Análisis del problema:

      Una vez eliminado el nodo hash departamental, aunque las máquinas restantes están procesando solicitudes, es obvio que la carga de cada máquina no está equilibrada. A esto se le llama inclinación del hash consistente. La aparición de nodos virtuales sirve para solucionar este problema.

    • Agregar nodos virtuales

      Cuando el número de máquinas físicas es A y el nodo virtual es B, el número real de nodos en el anillo hash es A * B, y el nodo A se divide en A1, A2, A3; A1, A2, A3 se distribuyen uniformemente en cada ubicación, Haga que los nodos atendidos por A se distribuyan lo más uniformemente posible en cada esquina

    • Carga relativamente equilibrada en cada servidor

      Cuando un nodo cuelga, sus datos se distribuyen uniformemente al nodo vecino en el sentido de las agujas del reloj, por lo que todos los datos están relativamente equilibrados que el hash consistente descrito anteriormente.

Supongo que te gusta

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