readPreference maxStalenessSeconds
Os membros do conjunto de réplicas podem ficar para trás em relação ao primário devido ao congestionamento da rede, baixa taxa de transferência de disco, operações de longa duração etc. A opção de preferência de leitura maxStalenessSeconds
especificar um atraso de replicação ou "obsoleto" para leituras de secundários. Quando a desatualização estimada de um secundário excede maxStalenessSeconds
, o cliente para de usá-lo para operações de leitura.
Importante
A opção de preferência de leitura maxStalenessSeconds
é destinada a aplicativos que leem de arquivos secundários e desejam evitar a leitura de um secundário que está muito atrasado na replicação das gravações primárias. Por exemplo, uma secundária pode parar de replicar devido a uma interrupção de rede entre si e a primária. Nesse caso, o cliente deve parar de ler o secundário até que um administrador resolva a interrupção e o secundário seja recuperado.
Observação
A partir da versão 4.2, o MongoDB introduz um mecanismo de controle de fluxo para controlar a taxa na qual o primário aplica suas gravações com o objetivo de manter o atraso majority
committed
abaixo de um valor máximo especificado.
Você pode especificar maxStalenessSeconds
com os seguintes modos de preferência de leitura:
A obstrução máxima não é compatível com o modo primary
e só se aplica ao selecionar um membro secundário de um conjunto para uma operação de leitura.
Ao selecionar um servidor para uma operação de leitura com maxStalenessSeconds
, os clientes estimam a desatualização de cada secundário comparando a última gravação do secundário com a do primário. Em seguida, o cliente direcionará a operação de leitura para um secundário cujo atraso estimado é menor ou igual a maxStalenessSeconds
.
Se não houver um primário, o cliente usa o secundário com a gravação mais recente para comparar.
Por padrão, não há desatualização máxima e os clientes não considerarão o atraso do secundário ao escolher para onde direcionar uma operação de leitura.
Você deve especificar um valor de maxStalenessSeconds
de 90 segundos ou mais: especificar um valor menor de maxStalenessSeconds
aumentará um erro. Os clientes estimam a obsolescência dos secundários verificando periodicamente a data de gravação mais recente de cada membro do conjunto de réplicas. Como essas verificações não são frequentes, a estimativa de obsolescência é aproximada. Assim, os clientes não podem impor um valor de maxStalenessSeconds
de menos de 90 segundos.