Altos preguntas detalladas cara JAVA (tres) - Redis (REDIS cluster, ranura virtual, algoritmo hash de consistencia, elección principal, fuera de la política, estructura de datos String)

Detallado siguiente Redis

Espero que esto se puede conseguir el resto de las cosas, si todo lo demás falla, entonces tenemos en este y el próximo se obtiene la demanda de desarrollo ya que esta es la última edición de la demanda, después de este día tengo una versión evolucionada, otro día tengo esta última edición, otro día Ultimate Edition evolución previsible. Digimon un proceso evolutivo conjunto, bajo Tucao estaba más ocupado recientemente no por delante listas de tiempo para escribir algo hoy. Principalmente pesticidas S19 de la temporada llegó en los puntos van, que el jefe lo siento.

Entrevistador: Redis modelo de clúster, que ah puerro pequeño?

1, el modo maestro-esclavo (maestro / esclavo)
el modo maestro-esclavo Introducción
  • Un maestro puede tener múltiples Esclavo
  • replicación Soporte maestro-esclavo, el anfitrión sincronizar automáticamente los datos al esclavo, la separación se puede leer (nodo maestro defecto puede leer y escribir)
Maestro y esclavo modos ventajas
  • Soporte de lectura y escritura separada, maestro de presión reducida
  • nodo maestro después de colgar, no afecta nodo esclavo de lectura (también eficaz para hacer copia de seguridad de datos, para evitar que las circunstancias especiales que resultan en la pérdida de datos no se puede recuperar maestro)
  • Esclavo Los esclavos también puede aceptar otras conexiones y solicitud de sincronización, que puede sincronizar con eficacia la descarga de presión Maestro
Maestro y esclavo modos desventajas
  • Colgó el maestro no es compatible con una operación de escritura y el esclavo no se vuelve a elegir a un nuevo maestro (un simple luz principal en esta matanza de los modos)
  • dominar abajo, abajo la parte delantera de los datos ha fallado para sincronizar a un esclavo, también introducir inconsistencias en los datos después de la conexión IP.
  • Cuando se utiliza el modo de centinela, los clientes no se conectan directamente a Redis, pero la conexión Sentinel IP y el puerto
  • La expansión es difícil, es el caso cuando enfriar una gran cantidad de datos almacenados en el servidor no pueden caber
2, el modo de Sentinel (Sentinel)
Sentinel Modelo Descripción
  • Monitoreo maestro (master) y el esclavo está funcionando correctamente (desde el servidor).
  • Esclavo automáticamente (de un servidor) al maestro (master) cuando falla Maestro (servidor principal).
Ventajas modo guardia
  • modelo Sentinel se basa en un modo maestro-esclavo, el maestro de todas las ventajas de tener un modelo Sentinel.
  • Puede cambiar automáticamente de la principal, el sistema es más robusto, más disponible.
Sentinel deficiencias modo
  • La expansión es difícil, es el caso cuando enfriar una gran cantidad de datos almacenados en el servidor no pueden caber
Redis modelo de clúster de clúster (esto es un entrevistador bien le preguntará)
Redis de perfil cluster
  • Después de 3.0 redis Redis apoyo a las agrupaciones (cluster Redis) se puede hacer en varias máquinas, una pluralidad de despliegue principal (casos), almacena la parte de datos de cada maestro , y cada nodo se puede montar una pluralidad de nodo esclavo maestro (del Ejemplo ), luego cuelgue si mater, Redis cúmulo este mecanismo, será automáticamente un esclavo para cambiar a Maestro .

Entrevistador: Eso es bueno, luego cuelgue si mater, Redis que es la forma de elegir a un nuevo amo del esclavo múltiple?

  1. Balsa de nuevo proceso de elección primaria basada en protocolo de elección para lograr cuando se encontraron en el nodo principal ha sido estado sin conexión desde el nodo desde el nodo va a difundir un mensaje a todos los requisitos para recibir este mensaje, y tienen el derecho a voto de la nodo maestro desde el nodo a votación
  2. Si un nodo maestro tiene el derecho a voto, y votar por el nodo maestro no ha habido desde el otro nodo, se le pedirá al nodo maestro a voto ha devuelto un mensaje del nodo, lo que indica que el apoyo nodo principal del nodo se convierte en el nuevo nodo primario
  3. Si el clúster primario con N nodos tiene derecho a voto, entonces cuando recogida de un mayor nodo de clúster que o igual a N / 2 + cuando uno votos, el nodo esclavo se convierte en el nuevo nodo maestro
  4. Si no es así, a continuación, introduzca una nueva configuración de clúster de la era capaz de reunir suficientes votos de apoyo en una era de configuración, y la elección primaria de nuevo, hasta la elección de un nuevo nodo maestro ha sido
  5. Será revocada después de que el nuevo nodo maestro parece haber estado fuera de la línea de montaje de todas las ranuras asignadas al nodo principal, y todas estas franjas horarias asignadas a sí mismo (y los leones, el nuevo Rey León ocupará de viejas)
  6. El nuevo nodo principal del clúster mensajes de difusión para informar PONG otro nodo se ha convertido en el nuevo nodo maestro (el nuevo León para salir de su aroma dijo a los vecinos en el territorio aquí es mío)
  7. El nuevo nodo maestro recibe la solicitud y empieza el consiguiente tratamiento tanque

Entrevistador: Esta es una elección que decir también, ya que antes de hablar con la parte de almacenamiento de cada uno de los datos maestros, Redis cómo los datos en diferentes nodos?
Virtual partición manera ranura uso inteligente del espacio Hash, buena dispersión de la función hash usada para mapear todos los datos a un rango fijo del conjunto de enteros, el número entero define una ranura (slot). Esta gama es generalmente mucho mayor que el número de nodos, tales como rangos de ranura Redis Cluster 0-16.383 (2 ^ 14). Ranura es el grupo de gestión de datos y migración de las unidades básicas. El propósito principal de utilizar una amplia gama de segmentos de datos están divididos con el fin de facilitar la expansión y clusters. Cada ranura será responsable de un cierto número de nodos,
como el aumento de las necesidades de nodo para asignar parte del tanque de conseguir en el nuevo nodo de un nodo existente. Si desea eliminar un nodo necesita a ranuras de nodo trasladado a otro nodo, el nodo no tendrá ninguna ranura puede ser retirado de la agrupación.
Entrevistador: puerro pequeño puede ah, usted sabe por qué utilizar ranura virtual? algoritmo de hash consistencia a encontrar información sobre él
, de hecho, esta cuestión es preguntarse por qué ReDiS algoritmo de hash no es coherente hacerlo directamente.
hash consistente está dispuesto en el extremo del nodo de almacenamiento Hash para terminar anillos, cada tecla se encontrará después de calcular nodo de almacenamiento tienda de las agujas del reloj Hash, como no se encuentra nodo entonces el siguiente sentido horario con ella para encontrar un nodo . Cuando un nodo se une o salida, sólo afecta a los nodos en el anillo de las agujas del reloj Hash nodo adyacente posterior.
Pero en general, menos nodos en la práctica, una vez que el suprimir o añadir unos datos del nodo que trazan el impacto del anillo de hash muy grande, y no puede balanceo de carga garantía. A menos que se doble o la mitad del nodo.
Entrevistador: Así que si ahora quiero añadir un nodo, Redis cómo garantizar que el proceso de migración en la ranura normalmente escribir y modificar
con una tapa para contestar más fácil de entender:
migrar suponen desde un nodo A al nodo B ranura
Este tanque 1 en la transición de estado se etiqueta el nodo A Migración (migración)
Nodo B es la importación de estado (puerto de entrada)
relación de mapeado entre este intervalo de tiempo no será modificado, la migración de datos si se produce el depósito de consulta 1,
el cliente un nodo va a subir datos de la consulta, si los datos correspondientes sigue siendo en la máquina, entonces el retorno directo, si los datos no está en el nodo se devuelve Haz una dirección.
Si el cliente recibe ASK su vez, a continuación, envía la petición al comando de destino ajustada dirigir el nodo especificado nodo B. Primero preguntarle a enviar un comando, a continuación, enviar solicitud de comando real.
Groove no actualiza el cliente después de la finalización del registro de solicitud a la cartografía de los ganglios: 1 tanque todavía debe correlacionarse con el nodo A, en lugar de nodo B.
Una vez que el nodo A para la migración completa de la ranura 1, el nodo A de nuevo en la recepción de una solicitud de un tanque de mando 1 se devolverá al cliente a su vez movido, estará al mando de la ranura 1 a pedido larga vuelta al nodo B.

Aquí ya es casi, pero no pedirle que no responder al entrevistador cómo encontró con los puños, no ate el campo de batalla, debe cavar sus límites a menos que se diga que el entrevistador ha comenzado atontado. Así que continuamos la batalla 300 rondas

El entrevistador (NO toque volver alabar este cebollino): Mire antes de hablar con los principales a través de Redis, entonces usted sabe cómo asegurar Redis datos maestros consistentes de ella
primer amo leer y comandos de escritura sólo se puede ejecutar desde la biblioteca un comando de lectura (configuración por defecto puede ser modificado como si el apoyo por escrito, pero no tiene sentido, ya que será cubierto por el maestro),
síncronos dos casos

  • Sincronización: cuando un comando de sincronización se envía desde el servidor principal cuando se inicia el servidor, el servidor principal recibe el comando de sincronización para guardar una instantánea en el fondo comienza (RDB operación realizada), y la orden recibida durante el almacenamiento en caché del servidor cuando no se procesará la solicitud de datos de sincronización inicial bloqueando cliente (cliente) es, maestro no afectado.
  • la transmisión de comandos: la base de datos es modificado en un estado del servidor principal, que conduce a la maestra, el servidor maestro escribirá su propio comando ejecutado desde el servidor a la aplicación de estado del servidor de base de datos de inconsistente,
  • Heartbeat
    en el comando de fase de propagación, desde el servidor de la frecuencia predeterminada de una vez por segundo al servidor principal envía un comando
    para detectar la conexión primaria es normal desde el servidor de
    detectar la pérdida de la orden, los controles maestros para ver si el servidor recibe desde el servidor y el desplazamiento desde el servidor después de la orden y el servidor principal, y si no transmitirá buffer de acumulación de detrás de comandos de desplazamiento al servidor desde el servidor.

Redis datos fuera de qué tipos de estrategias: entrevistador?

  • noeviction : Cuando no eliminar una política, para alcanzar el límite máximo de memoria, si necesita más memoria, los retornos directos un mensaje de error.
  • las LRU-AllKeys : Todo clave común, que se utiliza prioridad tecla de borrar menos recientemente (menos recientemente utilizados, LRU) es.
  • LRU volátil : conjunto limitado de sección caduca; prioritario tecla de borrar menos recientemente utilizado (usado menos recientemente, LRU) a.
  • Aleatorios AllKeys : Todos comunes clave; elimine algunos clave aleatoria.
  • Aleatorio volátil : conjunto limitado de la sección de expirar; elimine algunos clave aleatoria.
  • TTL volátil : conjunto limitado de sección caduca; preferentemente eliminar el tiempo restante (tiempo de vida, TTL) clave a corto.

¿Qué tipos que tienen llave caducada a eliminar la política?

  • Regularmente borrado :
    al mismo tiempo, establecer el tiempo de caducidad de la clave, crear un temporizador, por lo clave tiempo de expiración del temporizador aparece, lleve a cabo la retirada de la llave de inmediato,
    el tiempo para la eliminación de memoria es amable, no requiere de la memoria operación, pero mediante el uso de un contador de tiempo, usted puede garantizar expirará tan pronto como la tecla de borrar, pero no es amigable para la CPU, si la clave expiró más, entonces, desde que el temporizador será más borrar esta operación tendrá un máximo de recursos de la CPU;

  • Eliminar inerte :
    faire clave expira sin tener en cuenta, pero cada vez obtenida desde el espacio de claves es la clave, el tiempo de caducidad de la clave de la inspección se realizan, si ha expirado, puede ser suprimido el
    funcionamiento inerte para la CPU es amable, expiró única teclas cuando el juez leyó el programa no ha expirado sólo se retira, pero esto sólo eliminar una clave caducada, pero para la memoria es antipático, si varias claves han caducado, y estas llaves y no se ha accedido, esta parte de la memoria de esto habría sido puesto en libertad;

  • Suprimido regularidad :
    Cada cierto tiempo, el programa comprueba la base de datos una vez, eliminar las claves caducadas;
    eliminar periódicamente un compromiso dos opciones anteriores, de vez en cuando para eliminar las claves obsoletas, y el límite de tiempo largo por la operación de borrado lleva a cabo para reducir el impacto y la frecuencia de la eliminación del tiempo de CPU, además, también es eficaz en la reducción de la pérdida de memoria; pero la dificultad de esta estrategia es un largo intervalo, esto tiene que fijarse de acuerdo con su propia situación de negocios;

Redis el tamaño de los datos extraídos clave
SEDA-CLI de "BigKeys"
llen cadena se calcula utilizando el método STRLEN, la lista se calcula: calculados

Esa charla en la que la estructura de datos subyacente Redis más comúnmente utilizado de la cadena
Redis con el fin de facilitar la expansión, el rendimiento y la seguridad, la definición de una estructura para almacenar cadenas. Es decir, SDS (cadena dinámico simple),
que además de ahorrar buf cadena, también lleva a cabo libre (buf representa el espacio restante) y Len (longitud de la subcadena actual).
Este diseño tiene varias ventajas:

  1. Obtiene la longitud de cadena de complejidad es O (1)
  2. Añadir el resto del espacio está determinada por la longitud de la cadena y decidir si modificar la expansión, no causará desbordamiento de memoria intermedia
  3. Cada vez que se expansión doble de la longitud de la expansión ha sido la reducción del número de reasignación de memoria trajo modificar la cadena de
  4. Len seguridad binaria, ya que es el final de la cadena, para determinar si el lenguaje C en lugar de '\ 0' estándar para juzgar el final de la cadena

Redis primera que así sea, tomar un descanso en la preparación de un módulo si están interesados ​​pueden dejar un mensaje y ver cuál es el módulo más para ver, quiero ser el primero en escribirlo.

Se han publicado 19 artículos originales · ganado elogios 45 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/zhibo_lv/article/details/105239297
Recomendado
Clasificación