Los miembros del conjunto de réplicas pueden quedar rezagados respecto al resto. El servidor principal se ve afectado por congestión de red, bajo rendimiento del disco, operaciones de larga duración, etc. La opción de preferencia de lectura maxStalenessSeconds permite especificar un retardo de replicación máximo, o "obsolescencia", para las lecturas de los servidores secundarios. Cuando la obsolescencia estimada de un maxStalenessSeconds servidor secundario supera, el cliente deja de usarlo para operaciones de lectura.
Importante
La opción de preferencia de lectura maxStalenessSeconds está diseñada para aplicaciones que leen desde servidores secundarios y desean evitar leer desde un servidor secundario que se ha retrasado demasiado en la replicación de las escrituras del servidor principal. Por ejemplo, un servidor secundario podría dejar de replicar debido a una interrupción de la red entre él y el servidor principal. En ese caso, el cliente debería dejar de leer desde el servidor secundario hasta que un administrador resuelva la interrupción y el servidor secundario se ponga al día.
Nota
El control de flujo limita la velocidad a la que el servidor principal aplica sus escrituras con el objetivo de mantener el majority
committed retraso de por debajo de un valor máximo especificado.
Puede especificar maxStalenessSeconds con los siguientes modos de preferencia de lectura:
La obsolescencia máxima no es compatible con el modo primary y solo se aplica cuando se selecciona un miembro secundario de un conjunto para una operación de lectura.
Al seleccionar un servidor para una operación de lectura con maxStalenessSeconds, los clientes calculan la obsolescencia de cada servidor secundario comparando su última escritura con la del servidor principal. El cliente dirigirá la operación de lectura a un servidor secundario cuyo retraso estimado sea menor o igual a maxStalenessSeconds.
Si no hay un primario, el cliente usa el secundario con la escritura más reciente para la comparación.
De manera predeterminada, no existe un límite de obsolescencia y los clientes no considerarán el retraso de un secundario al elegir dónde dirigir una operación de lectura.
Debe especificar un valor maxStalenessSeconds de 90 segundos o más: especificar un valor maxStalenessSeconds menor generará un error. Los clientes estiman la obsolescencia de las réplicas secundarias comprobando periódicamente la última fecha de escritura de cada miembro del conjunto de réplicas. Dado que estas comprobaciones son poco frecuentes, la estimación de la obsolescencia es aproximada. Por lo tanto, los clientes no pueden imponer un valor maxStalenessSeconds inferior a 90 segundos.