【Prefacio】
Cuando los datos alcanzan cierta cantidad, la base de datos se convierte en el cuello de botella de todo el sistema, y la estrategia de optimización generalmente se adopta como separación de lectura y escritura, y la base de datos realiza la separación de lectura y escritura dividiendo la base de datos principal de la base de datos (operación de solicitud de escritura desde la base de datos principal, operación de solicitud de lectura desde la base de datos);
【Ideas para resolver retrasos de datos】
1. El principio de sincronización maestro-esclavo (aquí tomamos como ejemplo el MySQL más popular)
Aquí tienes un diagrama esquemático de una sincronización clásica de datos maestro-esclavo de MySQL mediante binlog:
2. ¿Cómo surgen los problemas?
1. A partir del esquema anterior, no es difícil encontrar que la sincronización maestro-esclavo tiene cierto retardo, que afecta al tamaño del retardo:
(1) El tamaño del retardo depende de la cantidad de datos generados desde la última sincronización hasta el presente
(2) La situación actual de la red entre servidores
(3) La presión del propio servidor maestro-esclavo (CPU, memoria, E/S, etc.)
2. Dado que el servicio de base de datos suele estar en la intranet, y el servidor tendrá una configuración superior (más que la necesidad real) al comprarlo, la sincronización es básicamente muy rápida, generalmente en milisegundos;
3. En escenarios empresariales generales, la latencia de milisegundos puede ignorarse;
4. Existen casos generales y especiales, y algunas situaciones especiales requieren una diferencia de milisegundo en tiempo real. Aquí tienes soluciones comunes para estas situaciones especiales.
3. Soluciones de latencia de datos:
1. Esquema 1: Escribir el programa doble (escribir la base de datos principal y leer la base de datos al mismo tiempo)
2. Esquema 2: Lee el programa para consultar la base de datos principal
3. Esquema 3: Escribir la base de datos principal y escribir la caché (establecer un tiempo de caducidad determinado, generalmente ligeramente superior al retraso máximo de sincronización de la base de datos), leer el programa, leer la caché y leer la base de datos esclava
4. Ventajas y desventajas de los tres programas:
1. Esquema 1: La doble escritura consumirá cierta cantidad de rendimiento, lo cual es relativamente sencillo de implementar y no es adecuado para escenarios de escritura concurrente de alto nivel;
2. Esquema 2: El programa de lectura afectará al rendimiento de la biblioteca principal, que es relativamente sencilla de implementar y no es adecuada para escenarios de lectura concurrente alta.
3. Esquema 3: En la mayoría de los casos, la lectura y la escritura consumen más rendimiento de escritura, lo cual es más complejo de implementar y es adecuado tanto para lecturas y escrituras concurrentes altas (las lecturas y escrituras en caché son muy rápidas);
【Resumen】
1. La implementación es importante, pero más importante es la idea;
2. Muchos principios e ideas subyacentes son universales Texto original en:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|