Los miembros del set de réplicas pueden quedarse detrás de la primaria debido a congestionamiento de red, bajo rendimiento de disco, operaciones prolongadas, etc. La opción de preferencia de lectura maxStalenessSeconds te permite especificar un atraso de la replicación máximo, o "obsolescencia", para las lecturas desde secundarias. Cuando la obsolescencia estimada de un nodo secundario supera maxStalenessSeconds, el cliente deja de utilizarlo 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 nodo primario aplica sus escrituras con el objetivo de mantener el desfase de majority
committed por debajo de un valor máximo especificado.
Puede especificar maxStalenessSeconds con los siguientes modos de preferencia de lectura:
El máximo de antigüedad no es compatible con el modo primary y solo se aplica cuando se selecciona un secundario de un set para una operación de lectura.
Al seleccionar un servidor para una operación de lectura con maxStalenessSeconds, los clientes estiman la antigüedad de cada secundario comparando el último guardado del secundario con el de la primaria. El cliente luego dirigirá la operación de lectura a una réplica secundaria con una latencia estimada 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.
Por defecto, no hay un nivel máximo de antigüedad y los clientes no tendrán en cuenta el rezago de un secundario al decidir hacia dónde dirigir una operación de lectura.
Debe especificar un valor de maxStalenessSeconds de 90 segundos o más: especificar un valor maxStalenessSeconds menor generará un error. Los clientes estiman la antigüedad de los secundarios comprobando periódicamente la fecha más reciente de guardado de cada miembro del set de réplicas. Como estos controles son poco frecuentes, la estimación de obsolescencia es tosca. Por lo tanto, los clientes no pueden aplicar un valor de maxStalenessSeconds de menos de 90 segundos.