Clase: Mongo::ServerSelector::Base
- Hereda:
-
Objeto
- Objeto
- Mongo::ServerSelector::Base
- Definido en:
- lib/mongo/server_selector/base.rb
Overview
Subclases conocidas directas
Más cercano, Primario, PrimarioPreferido, Secundario, SecundarioPreferido
Resumen de atributos de la instancia colapsar
-
#hedge ⇒ Hash | nil
Solo lectura
Obsoleto
Obsoleto.
Las lecturas protegidas están en desuso en MongoDB Server 8.0 y se eliminarán en una versión futura.
-
#max_staleness ⇒ Integer
Solo lectura
Max_staleness El atraso de la replicación máximo, en segundos, que una secundaria puede sufrir y aún ser elegible para una lectura.
-
#options ⇒ Hash
Solo lectura
Opciones Las opciones.
-
#tag_sets ⇒ Array
Solo lectura
Tag_sets Los conjuntos de etiquetas utilizados para seleccionar servidores.
Resumen del método de instancia colapsar
-
#==(otro) ⇒ true, false
Comprueba la igualdad de dos selectores de servidor.
-
# candidatos(clúster, depriorizados = []) ⇒arreglo<Server>
privado
Devuelve servidores de tipos aceptables desde el clúster.
-
#initialize(options = nil) ⇒ Base
constructor
privado
Inicializa el selector de servidores.
-
#inspect ⇒ string
Inspecciona el selector de servidor.
-
#local_threshold ⇒ Float
Obsoleto
Obsoleto.
Ahora se toma esta configuración de las opciones del clúster cuando se selecciona un servidor. Se eliminará en la versión 3.0.
- #local_threshold_with_clúster(clúster) ⇒ objeto privado
-
#select_server(clúster, ping = nil, session = nil, write_aggregation: false, deprioritized: [], timeout: nil) ⇒ Mongo::Servidor
Selecciona un servidor del clúster especificado, teniendo en cuenta el pinning de mongos para la sesión especificada.
-
#server_selection_timeout ⇒ Flotante
Obsoleto
Obsoleto.
Ahora se toma esta configuración de las opciones del clúster cuando se selecciona un servidor. Se eliminará en la versión 3.0.
-
#suitable_servers(clúster, deprioritized = []) ⇒ arreglo<Server>
privado
Devuelve servidores que cumplan con el selector de servidores del clúster.
-
#intentar_seleccionar_servidor(clúster, write_aggregation: falso, depriorizado: []) ⇒ Servidor | nil
privado
Intenta encontrar un servidor adecuado, devuelve el servidor si hay uno disponible o nil si no hay un servidor adecuado.
Detalles del Constructor
#initialize(options = nil) ⇒ Base
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializa el selector de servidores.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 47 def inicializar( = nulo) = ? .dup : {} .borrar(max_staleness) si [max_staleness] == -1 @options = @tag_sets = [Conjuntos de etiquetas] || [] @max_staleness = [max_staleness] @hedge = [:hedge] validate! return si @hedge.nil? mongo::Obsolescencias.advertencia( :hedge_read_preference, 'La opción de preferencia de lectura protegida está en desuso. Las lecturas protegidas están ' \ 'en desuso en MongoDB Server 8.0 y se eliminarán en una versión futura.' ) end |
Detalles de atributo de instancias
#hedge ⇒ hash | nil (solo lectura)
Las lecturas protegidas están en desuso en MongoDB Server 8.0 y se eliminarán en una versión futura.
Devuelve hedge El documento que especifica si se debe habilitar lecturas protegidas.
83 84 85 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 83 def hedge @hedge end |
#max_staleness ⇒ Integer (solo lectura)
Devuelve max_staleness El máximo atraso de la replicación, en segundos, que un secundario puede experimentar y aún ser elegible para una lectura.
76 77 78 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 76 def max_staleness @max_staleness end |
#opciones ⇒ Hash (solo lectura)
Devuelve opciones Las opciones.
67 68 69 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 67 def @options end |
#tag_sets ⇒ arreglo (solo lectura)
Devuelve tag_sets Los conjuntos de etiquetas utilizados para seleccionar servidores.
70 71 72 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 70 def tag_sets @tag_sets end |
Detalles del método de instancia
#==(otro) ⇒ true, false
Comprueba la igualdad de dos selectores de servidor.
143 144 145 146 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 143 def ==(Otros) Nombre == Otros.Nombre && hedge == Otros.hedge && max_staleness == Otros.max_staleness && tag_sets == Otros.tag_sets end |
#candidatos(clúster, despriorizados = []) ⇒ arreglo<servidor>
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve servidores de tipos aceptables desde el clúster.
No realiza validación de obsolescencia, filtrado de obsolescencia o filtrado de latencia.
399 400 401 402 403 404 405 406 407 408 409 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 399 def candidatos(clúster, rebajado de prioridad = []) servidor = clúster.servidor.rechazar { |s| rebajado de prioridad.incluir?(s) } si clúster.¿Soltero/a? || clúster.particionado? servidor elsif clúster.replica_set? select_in_replica_set(servidor) else # Clúster desconocido - sin servidores [] end end |
#inspect ⇒ String
Inspecciona el selector de servidor.
129 130 131 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 129 def inspeccionar "#<#{self.class.name}:0x#{object_id} tag_sets=#{tag_sets.inspect} max_staleness=#{max_staleness.inspect} hedge=#{hedge}>" end |
#local_threshold ⇒ Float
Ahora se toma esta configuración de las opciones del clúster cuando se selecciona un servidor. Se eliminará en la versión 3.0.
Obtenga el límite del umbral local para la selección más cercana en segundos.
112 113 114 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 112 def umbral_local @local_threshold ||= [:local_threshold] || ServerSelector::UMBRAL_LOCAL end |
#local_threshold_with_cluster(clúster) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
117 118 119 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 117 def local_threshold_with_cluster(clúster) [:local_threshold] || clúster.[:local_threshold] || UMBRAL_LOCAL end |
#select_server(clúster, ping = nil, session = nil, write_aggregation: false, deprioritized: [], timeout: nil) ⇒ Mongo::Servidor
Selecciona un servidor del clúster especificado, teniendo en cuenta el pinning de mongos para la sesión especificada.
Si la sesión está dada y tiene un servidor fijado, este servidor es el único considerado para la selección. Si el servidor es de tipo mongos, se devuelve inmediatamente; de lo contrario, se inician comprobaciones de supervisión en este servidor para actualizar su estado, y si el servidor se convierte en un mongos dentro del tiempo de espera de selección de servidor, se devuelve.
Si no se especifica una sesión o la sesión no tiene un servidor fijado, se realiza el proceso normal de selección de servidor entre todos los servidores en el clúster especificado que coincidan con la preferencia de este objeto selector de servidores. Los chequeos de supervisión se inician en los servidores del clúster hasta que se encuentra un servidor adecuado, hasta agotarse el tiempo de espera para la selección del servidor.
Si no se encuentra un servidor adecuado dentro del tiempo de espera de selección de servidor, este método arroja Error::NoServerAvailable.
189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 189 def select_server( clúster, ping = nulo, sesión = nulo, escribir_agrupacion: false, con menor prioridad: [], timeout: nulo ) select_server_impl(clúster, ping, sesión, escribir_agregación, rebajado de prioridad, tiempo de espera).tocar hacer |Server| si Lint.¿habilitado? && !Server.group.¿Listo? propagar Error::LintError, 'Selector de servidor devolviendo un servidor con un conjunto que no está listo' end end end |
#servidor_selección_tiempo_fuera ⇒ Flotante
Ahora se toma esta configuración de las opciones del clúster cuando se selecciona un servidor. Se eliminará en la versión 3.0.
Obtener el tiempo de espera para la selección del servidor.
96 97 98 99 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 96 def server_selection_timeout @server_selection_timeout ||= [:server_selection_timeout] || ServerSelector::SERVER_SELECTION_TIMEOUT end |
#servicios_apropiados(clúster, anulados = []) ⇒ arreglo<Servidor>
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve servidores que cumplan con el selector de servidores del clúster.
420 421 422 423 424 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 420 def servidores_adecuados(clúster, rebajado de prioridad = []) Resultado = adecuado_servidores_impl(clúster, rebajado de prioridad) Resultado = adecuado_servidores_impl(clúster, []) si Resultado.¿vacío? && rebajado de prioridad.any? Resultado end |
#try_select_server(cluster, write_aggregation: false, deprioritized: []) ⇒ Servidor | nil
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Intenta encontrar un servidor adecuado, devuelve el servidor si hay uno disponible o nil si no hay un servidor adecuado.
350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 |
# Archivo 'lib/mongo/server_selector/base.rb', línea 350 def try_select_server(clúster, escribir_agrupacion: false, con menor prioridad: []) servidor = si escribir_agregación && clúster.replica_set? # 1. Verifique si TODOS los servidores en el clúster admiten guardado secundario. is_write_supported = clúster.servidor.disminuir(true) hacer |res, Server| res && Server.Funcionalidades.merge_out_on_secondary_enabled? end si is_write_supported # 2. Si todos los servidores admiten escrituras secundarias, respetamos la preferencia de lectura. servidores_adecuados(clúster, rebajado de prioridad) else # 3. De lo contrario, recurrimos al primario para el set de réplicas. [ clúster.servidor.detectar(&primario/a?) ] end else servidores_adecuados(clúster, rebajado de prioridad) end # Esta lista de servidores puede ordenarse de una manera específica # por el selector (por ejemplo, para secundario preferente, el primero el servidor # puede ser secundario y el segundo servidor puede ser primario) # y deberíamos tomar el primer servidor aquí respetando el orden Server = servidor_adecuado(servidor) si Server && Lint.¿habilitado? && Server.average_round_trip_time.nil? # Es posible que un servidor tenga un RTT promedio nulo aquí # porque el ARTT proviene de una descripción que puede actualizarse # por un hilo en segundo plano mientras se ejecuta la selección del servidor. # Actualmente, el modo lint no es una funcionalidad pública, si/cuando lo sea # cambios (https://jira.mongodb.org/browse/RUBY-1576) el/la # sería necesario eliminar el requisito para que ARTT no sea nulo. propagar Error::LintError, "Servidor #{servidor.dirección} tiene rtt promedio nulo" end Server end |