Principio de replicación maestro-esclavo de Redis
Existen dos formas de replicación de datos entre el servidor maestro y el servidor esclavo: resincronización completa y resincronización parcial.
El servidor maestro logra la sincronización creando y enviando archivos RDB y enviando comandos de escritura almacenados en buffers al servidor esclavo.
Una resincronización completa de la creación y envío de archivos RDB consume CPU, memoria y E/S de disco en el servidor maestro, así como un importante ancho de banda y tráfico de red. En aplicaciones prácticas, a veces no es necesaria una resincronización completa. Por ejemplo, cuando la conexión de red entre el servidor esclavo y el servidor maestro se desconecta por un corto tiempo, los datos inconsistentes pueden ser solo unos pocos comandos de escritura, pero en este momento son completos. La resincronización es necesaria. La copia de datos es obviamente un desperdicio de recursos. De hecho, solo necesita sincronizar los datos durante la desconexión para lograr la coherencia de los datos.
Solo se debe realizar una resincronización completa en la primera replicación o como último recurso para una replicación completa.
Para resolver las deficiencias de la resincronización completa, Redis proporciona una resincronización parcial.
La resincronización parcial consta de tres partes:
Proceso de resincronización parcial:
El servidor maestro actualiza el estado del servidor esclavo propagando comandos al servidor esclavo para Mantenga la coherencia entre el servidor maestro y el servidor esclavo. El servidor esclavo realiza la detección de latidos y la detección de pérdida de comandos enviando comandos al servidor maestro.
En la fase de propagación de comandos, el servidor esclavo envía latidos de comando al servidor maestro a una frecuencia de una vez por segundo de forma predeterminada. Esto se utiliza para detectar el estado de la conexión de red entre los servidores maestro y esclavo, y para detectar si los comandos propagados se pierden, etc.