readPreference maxStalenessSeconds
Os membros do conjunto de réplicas podem ficar para trás em relação ao principal devido a 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
permite especificar um atraso máximo 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.