Módulo: Mongo::Cluster::Topología

Ampliado por:
topología
Incluido en:
topología
Definido en:
lib/mongo/clúster/topología.rb,
lib/mongo/clúster/topología.rb,
lib/mongo/clúster/topología/base.rb,
lib/mongo/clúster/topología/single.rb,
lib/mongo/clúster/topología/particionado.rb,
lib/mongo/clúster/topología/unknown.rb,
lib/mongo/clúster/topología/load_balanced.rb,
lib/mongo/clúster/topología/no_replica_set_options.rb,
lib/mongo/clúster/topología/replica_set_no_primary.rb,
lib/mongo/clúster/topología/replica_set_with_primary.rb

Overview

Define el comportamiento para obtener servidores.

Las topologías están asociadas con sus clústeres; por ejemplo, una topología de ReplicaSet contiene el nombre del set de réplicas. Por lo tanto, un objeto de topología no puede utilizarse con varios objetos de clúster.

Al mismo tiempo, los objetos de topología desconocen los servidores específicos de un clúster, a pesar de lo que su constructor pueda sugerir. Esto significa, en particular, que los eventos de cambio de topología requieren que la aplicación mantenga referencias del clúster por sí misma si desea rastrear los cambios en los servidores dentro de un conjunto de réplicas.

Desde:

  • 2.0.0

Definido bajo Namespace

Modules: NoReplicaSetOptions Clases: Base, Con balanceo de carga, ReplicaSetNoPrimary, ReplicaSetWithPrimary, particionado, Single, Desconocido

Colapso delresumen constante

OPCIONES =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Las distintas topologías para la selección de servidores.

Desde:

  • 2.0.0

{
  directo: Single,
  carga_equilibrada: loadBalanced,
  replica_set: Conjunto de réplicas no primario,
  particionado: particionado,
}.freeze

Resumen del método de instancia colapsar

Detalles del método de instancia

#initial(clúster, supervisión, options) ⇒ ReplicaSet, ...

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtén la topología del clúster inicial para las opciones proporcionadas.

Ejemplos:

Obtener la topología inicial del clúster.

Topology.initial(topology: :replica_set)

Parámetros:

  • clúster (clúster)

    El clúster.

  • Monitoring (supervisión)

    La supervisión.

  • opciones (encriptada)

    Las opciones del cluster.

Opciones Hash (options):

  • conexión_directa (true | false)

    Si se debe conectar directamente a la semilla especificada, omitiendo el descubrimiento de topología. Se debe proporcionar exactamente una semilla.

  • :conectar (Símbolo)

    Obsoleto: utiliza la opción :direct_connection en lugar de esta opción. El método de conexión a utilizar. Esto obliga al clúster a comportarse de la manera especificada en lugar de descubrirlo automáticamente. Una de :direct, :replica_set, :particionado, :load_balanced. Si :connect está configurado como :load_balanced, el controlador se comportará como si el servidor fuera un balanceador de carga, incluso si no está conectado a un balanceador de carga.

  • :balanceo de carga (true | false)

    Si se espera conectar a un balanceador de carga.

  • :conjunto de réplicas (Símbolo)

    El nombre del set de réplicas al que se desea conectar. Se ignorarán los servidores que no estén en este set de réplicas.

Devuelve:

Desde:

  • 2.0.0



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Archivo 'lib/mongo/clúster/topología.rb', línea 90

def inicial(clúster, Monitoring, opciones)
  Conectar = opciones[:conectar]&.to_sym
  cls = si opciones[conexión_directa]
    si Conectar && Conectar != :directo
      propagar ArgumentError, "Opciones de topología en conflicto: direct_connection=true y connect=#{connect}"
    end
    si opciones[:balanceo de carga]
      propagar ArgumentError, "Opciones topológicas en conflicto: direct_connection=true y load_balanced=true"
    end
    Single
  elsif opciones[conexión_directa] == false && Conectar && Conectar == :directo
    propagar ArgumentError, "Opciones de topología en conflicto: direct_connection=false y connect=#{connect}"
  elsif Conectar && Conectar != :balanceo de carga
    si opciones[:balanceo de carga]
      propagar ArgumentError, "Opciones topológicas en conflicto: connect=#{options[:connect].inspect} y load_balanced=true"
    end
    opciones.obtener(opciones[:conectar].to_sym)
  elsif opciones.key?(:conjunto de réplicas) || opciones.key?(:nombre_del_conjunto_de_réplicas)
    si opciones[:balanceo de carga]
      propagar ArgumentError, "Opcionesde topología en conflicto: replica_set/replica_set_name yload_balanced=true"
    end
    Conjunto de réplicas no primario
  elsif opciones[:balanceo de carga] || Conectar == :balanceo de carga
    loadBalanced
  else
    Desconocido
  end
  # Las opciones aquí son opciones de cliente, clúster o servidor.
  # En particular, la clave del nombre del set de réplicas es diferente para
  # topology.
  # Si se proporciona replica_set_name (como podría hacerse internamente por el controlador),
  # use esa clave.
  # De lo contrario (por ejemplo, opciones transmitidas desde el cliente),
  # mover réplica_conjunto a nombre_conjunto_réplica.
  si (cls <= Conjunto de réplicas no primario || cls == Single) && !opciones[:nombre_del_conjunto_de_réplicas]
    opciones = opciones.dup
    opciones[:nombre_del_conjunto_de_réplicas] = opciones.borrar(:conjunto de réplicas)
  end
  cls.Nuevo(opciones, Monitoring, clúster)
end