Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo se implementa Redis?

¿Cómo se implementa Redis?

Primero: ¿Qué es Redis?

Redis es un sistema de almacenamiento de alto rendimiento de base de datos Key-Value, de tipo registro duradero y basado en memoria, que proporciona API en varios idiomas.

Segundo: antecedentes de emergencia

p>

Cada vez hay más requisitos de estructura de datos (estructura de datos), pero no están disponibles en Memcache, lo que afecta la eficiencia del desarrollo

Los requisitos de rendimiento deben resolverse a medida que aumenta la cantidad de operaciones de lectura. aumenta El proceso experimentado es el siguiente:?

Separación de lectura y escritura de la base de datos (M/S)–>La base de datos utiliza múltiples esclavos–>Agregar caché (memcache)–>Ir a Redis

.

Para resolver el problema de escritura:

División horizontal, dividir la tabla, colocar algunos usuarios en esta tabla y algunos usuarios en otra tabla;

¿Requisitos de confiabilidad?

¿El problema de la "avalancha" de Cache es confuso?

Cache enfrenta el desafío de una recuperación rápida

¿Requisitos de costos de desarrollo?

La coherencia entre Cache y DB ¿Los costos de mantenimiento son cada vez más altos (limpie primero la base de datos, luego limpie el caché, no, es demasiado lento!)?

¿Es necesario que el desarrollo se mantenga al día con la afluencia de demanda de productos?

El costo de hardware más caro es la máquina a nivel de base de datos, que es básicamente varias veces más cara que la máquina front-end. Es principalmente intensiva en IO y consume mucho hardware;

¿Es complicado de mantener?

El costo del mantenimiento de la coherencia es cada vez mayor;?

BerkeleyDB utiliza B-tree, que siempre escribirá otros nuevos, y habrá no habrá una reorganización interna del archivo; esto hará que el archivo se haga cada vez más grande cuando sea grande, es necesario archivarlo y la operación de archivado debe realizarse con regularidad;?

De esta manera, se necesita cierto tiempo de inactividad;

Basado en las consideraciones anteriores, se eligió Redis

Tres: Aplicación de Redis en Sina Weibo

Introducción a Redis

1. Admite 5 estructuras de datos

¿Admite cadenas, hashes, listas, conjuntos, conjuntos ordenados?

La cadena es un buen método de almacenamiento que se utiliza para contar el almacenamiento.

Los conjuntos son excelentes para crear bibliotecas de índices;

2. Almacenamiento K-V frente a caché K-V

El 98% de las aplicaciones actuales de Sina Weibo son aplicaciones persistentes y el 2% son cachés que utilizan más de 600 servidores. ?

La aplicación persistente en Redis no será muy diferente del método no persistente:?

La no persistente es de 80.000-90.000 tps, luego la persistencia es de alrededor de 70.000- 80,000 tps;?

Al usar la persistencia, debe considerar la relación entre la persistencia y el rendimiento de escritura, es decir, debe considerar el tamaño de la memoria utilizada por Redis y el cálculo de la relación del rendimiento de escritura del disco duro. ;

3. Comunidad activa

Redis tiene actualmente más de 30.000 líneas de código. ¿El código está optimizado y tiene muchas implementaciones inteligentes? ¿El autor tiene una obsesión técnica?

La comunidad de Redis es muy activa, lo cual es un indicador importante para medir la calidad del software de código abierto. En las primeras etapas del software de código abierto, generalmente no existe soporte de servicio técnico comercial sin el apoyo de una comunidad activa. no habrá ningún lugar a quien acudir en busca de ayuda si ocurre un problema;

Principios básicos de Redis

La persistencia de Redis (aof) agrega el archivo en línea:?

Escriba el registro (aof) y luego combínelo con la memoria hasta cierto punto. Agregar y agregar, escribir en el disco secuencialmente, tiene muy poco impacto en el rendimiento

1. >

Redis usa un solo proceso, por lo que al configurar, una instancia solo usará una CPU;?

Durante la configuración, si necesita maximizar el uso de la CPU, puede configurar la cantidad de instancias de Redis para que corresponda a la cantidad de CPU y la cantidad de instancias de Redis para que corresponda a la cantidad de puertos (CPU de 8 núcleos, 8 instancias, 8 puertos) para mejorar la concurrencia:?

Durante el proceso independiente prueba, un solo dato tenía 200 bytes y el resultado de la prueba fue de 80 000 a 90 000 tps;

2. Replicación

Proceso: los datos se escriben en el maestro–>el maestro los almacena. en el RDB del esclavo–>el esclavo carga el RDB en la memoria. ?

Punto de guardado: cuando se interrumpe la red, después de conectar la conexión, la transmisión continúa.?

La primera sincronización en Maestro-esclavo es la transmisión completa, seguida de la transmisión incremental Sincronización de cantidad;,

3. Coherencia de datos

La posibilidad de inconsistencia entre múltiples nodos después de una operación a largo plazo;

Desarrollar dos herramientas Procedimiento:?

1. Para grandes cantidades de datos, la cantidad total se verificará periódicamente;

2. Los datos incrementales se verificarán en tiempo real para ver si son consistentes;

p>

La inconsistencia causada por la base de datos maestra que no sincroniza la base de datos esclava a tiempo se denomina problema de retraso;?

Para escenarios donde los requisitos de coherencia no son tan estrictos, solo es necesario garantizar la coherencia final. Eso es todo;?

Para el problema de retraso, es necesario analizar las características del escenario empresarial y agregar estrategias desde el nivel de la aplicación para resolver este problema;?

Por ejemplo:?

1. Los usuarios recién registrados deben consultar primero la base de datos principal;?

2. Después de registrarse correctamente, debe esperar 3 segundos antes de saltar. El fondo está sincronizando datos en este momento.

Cuarto: Diseño arquitectónico de caché distribuido

1. Diseño arquitectónico

Dado que redis es un punto único y debe usarse en el proyecto, debe implementarse. caché distribuido por usted mismo. El diagrama de arquitectura básico es el siguiente:

2. Implementación distribuida

Utilice claves para realizar un hash consistente para realizar la distribución de los nodos redis correspondientes a las claves.

Implementación de hash consistente:

cálculo del valor de lhash: al admitir dos métodos de cálculo, MD5 y MurmurHash, MurmurHash se utiliza de forma predeterminada para un cálculo de hash eficiente.

l Realización de coherencia: simule la estructura del anillo a través de TreeMap de Java para lograr una distribución uniforme

3 Selección del cliente

La principal modificación de jedis es la modificación del módulo de partición, para que sea compatible. La partición basada en BufferKey se puede inicializar de acuerdo con la información de diferentes nodos de Redis. Al mismo tiempo, la implementación subyacente de JedisPool también se modifica para que el grupo de conexiones admita métodos de construcción de claves y valores. cree diferentes clientes de conexión jedis para lograr el efecto de partición, que puede ser llamado por la capa de aplicación

4 Descripción del módulo

l Módulo de procesamiento de datos sucios, que se ejecuta cuando falla el procesamiento de las operaciones de almacenamiento en caché. .

l Módulo de monitoreo de escudo, para monitoreo anormal de operaciones jedis, cuando ocurre una anomalía en un nodo, puede controlar la eliminación de nodos redis y otras operaciones.

Todo el módulo distribuido utiliza hornetq para eliminar nodos redis anormales. La adición de nuevos nodos también se puede lograr mediante el método de recarga. (Este módulo también se puede implementar fácilmente para agregar nuevos nodos)

La implementación de la arquitectura distribuida anterior satisface las necesidades del proyecto. Además, para algunos datos almacenados en caché más importantes, puede configurar algunos nodos de Redis por separado y establecer prioridades específicas. Además, para el diseño de interfaces de caché, también se pueden implementar interfaces básicas y algunas interfaces lógicas especiales según las necesidades. Para operaciones relacionadas con cas, algunas operaciones de transacción se pueden implementar a través de su mecanismo de vigilancia.

Declaración: Todos los blogs sirven como soporte técnico y descripción del marco. El marco está orientado a empresas y es una arquitectura empresarial distribuida de Internet a gran escala implementada en clústeres. Linux se presentará más adelante.