Los controladores de MongoDB utilizan un algoritmo de selección de servidor para elegir qué miembro del conjunto de réplicas utilizar o, cuando se conecta a varios
mongosinstancias, qué instancia mongos utilizar.
La selección del servidor se produce una vez por operación.
Nota
Las transacciones que contienen operaciones de lectura deben usar la preferencia de primary lectura. Todas las operaciones de una transacción deben dirigirse al mismo miembro.
La selección del servidor se realiza una vez por operación y se rige por la preferencia de lectura y la configuración localThresholdMS para determinar la elegibilidad de los miembros para las lecturas. La preferencia de lectura se reevalúa para cada operación.
Modo de preferencia de lectura | |
|---|
| El conductor selecciona el primario.
|
| El controlador reúne una lista de miembros secundarios elegibles. LosmaxStalenessSeconds y los conjuntos de etiquetas especificados en la preferencia de lectura pueden restringir aún más la elegibilidad de los miembros. Si la lista de miembros elegibles no está vacía, el controlador determina cuál es el más cercano (es decir, el miembro con el menor tiempo promedio de ida y vuelta en la red) y calcula una ventana de latencia sumando el tiempo promedio de ida y vuelta de este servidor más cercano y el localThresholdMS. El controlador utiliza esta ventana de latencia para reducir la lista de miembros elegibles a aquellos que se encuentran dentro de ella. De esta lista de miembros elegibles que se encuentran dentro de la ventana de latencia, el conductor elige al azar un miembro elegible.
|
| El controlador reúne una lista de miembros elegibles (principales y secundarios). maxStalenessSeconds y los conjuntos de etiquetas especificados en la preferencia de lectura pueden limitar aún más la elegibilidad de los miembros. Si la lista de miembros elegibles no está vacía, el controlador determina cuál es el más cercano (es decir, el miembro con el menor tiempo promedio de ida y vuelta en la red) y calcula una ventana de latencia sumando el tiempo promedio de ida y vuelta de este servidor más cercano y el valor localThresholdMS []. El controlador utiliza esta ventana de latencia para reducir la lista de miembros elegibles a aquellos que se encuentran dentro de ella. De esta lista de miembros elegibles que se encuentran dentro de la ventana de latencia, el conductor elige al azar un miembro elegible.
|
| Si el principal está disponible, el conductor lo selecciona. Si el servidor principal no está disponible, la selección del servidor sigue el proceso de la preferencia de lectura secondary para seleccionar un miembro secundario elegible.
|
| Después del proceso de selección del servidor para la preferencia de lectura secondary, si una lista de miembros secundarios elegibles no está vacía, el controlador elige un miembro secundario elegible. De lo contrario, si la lista está vacía, el controlador selecciona la principal.
|
Si hay más de una instanciamongosen la lista de conexiones, el controlador determina cuálmongoses la más cercana (es decir, el miembro con el menor tiempo promedio de ida y vuelta en la red) y calcula la ventana de latencia sumando el tiempo promedio de ida y vuelta de esta instanciamongosmás cercana y la localThresholdMS. El controlador equilibrará la carga aleatoriamente entre lasmongosinstancias que se encuentren dentro de la ventana de latencia.
En los clústeres fragmentados con fragmentos de conjuntosmongos de réplicas, aplica la preferencia de lectura al leer desde los fragmentos. La selección del servidor se rige por la preferencia de lectura replication.localPingThresholdMs y la configuración de. La preferencia de lectura se reevalúa en cada operación.
Modo de preferencia de lectura | |
|---|
| El selecciona el mongos primario.
|
| mongos reúne una lista de miembros secundarios elegibles. maxStalenessSeconds y los conjuntos de etiquetas especificados en la preferencia de lectura pueden restringir aún más la elegibilidad de los miembros.
Si la lista de miembros elegibles no está vacía,mongos determina cuál es el miembro elegible más cercano (es decir, el miembro con el menor tiempo promedio de ida y vuelta en la red) y calcula una ventana de latencia sumando el tiempo promedio de ida y vuelta de este servidor más cercano y replication.localPingThresholdMs (o --localThreshold la opción de línea de comandos). utiliza esta ventana de latencia para reducir la lista de miembros elegibles a aquellos que se encuentran dentro de mongos ella. De esta lista de miembros elegibles que se encuentran dentro de la ventana de latencia, elige aleatoriamente un miembro mongos elegible.
|
| mongos reúne una lista de miembros elegibles (principales y secundarios). maxStalenessSeconds y los conjuntos de etiquetas especificados en la preferencia de lectura pueden limitar aún más la elegibilidad de los miembros.
Si la lista de miembros elegibles no está vacía,mongos determina cuál es el miembro elegible más cercano (es decir, el miembro con el menor tiempo promedio de ida y vuelta en la red) y calcula una ventana de latencia sumando el tiempo promedio de ida y vuelta de este servidor más cercano y replication.localPingThresholdMs (o --localThreshold la opción de línea de comandos) mongos utiliza esta ventana de latencia para reducir la lista de miembros elegibles a aquellos que se encuentran dentro de ella. De esta lista de miembros elegibles que se encuentran dentro de la ventana de latencia, elige aleatoriamente un miembro mongos elegible.
|
| Si el principal está disponible, selecciona elmongos principal. Si el servidor principal no está disponible, la selección del servidor sigue el proceso para la preferencia de lectura secondary.
|
| Tras el proceso de selección del servidor para la preferencia de lectura secondary, si la lista de miembros secundarios elegibles no está vacía, mongos elige un secundario eligible. Si la lista de miembros secundarios elegibles está vacía, selecciona elmongos primario.
|