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

Ampliado por:
Topología
Incluido en:
Topología
Definido en:
lib/mongo/cluster/topology.rb,
lib/mongo/cluster/topology.rb,
lib/mongo/cluster/topology/base.rb,
lib/mongo/cluster/topology/single.rb,
lib/mongo/cluster/topology/sharded.rb,
lib/mongo/cluster/topology/unknown.rb,
lib/mongo/cluster/topology/load_balanced.rb,
lib/mongo/cluster/topology/no_replica_set_options.rb,
lib/mongo/cluster/topology/replica_set_no_primary.rb,
lib/mongo/cluster/topology/replica_set_with_primary.rb

Overview

Define el comportamiento para obtener servidores.

Las topologías se asocian con sus clústeres; por ejemplo, una topología ReplicaSet contiene el nombre del conjunto 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 en el espacio de nombres

Modules: NoReplicaSetOptions Clases: Base, LoadBalanced, ReplicaSetNoPrimary, ReplicaSetWithPrimary, Fragmentado, Único, 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: Balance de carga,
  conjunto_de_réplicas: Conjunto de réplicas no primario,
  fragmentado: Fragmentado,
}.freeze

Colapso del resumen del método de instancia

Detalles del método de instancia

#inicial(clúster, monitoreo, opciones) ⇒ 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.

Obtenga la topología del clúster inicial para las opciones proporcionadas.

Ejemplos:

Obtenga la topología del clúster inicial.

Topology.initial(topology: :replica_set)

Parámetros:

  • clúster (Grupo) -

    El cluster.

  • vigilancia (Monitoreo)

    El seguimiento.

  • opciones (Hash)

    Las opciones del cluster.

Opciones Hash(opciones):

  • :conexión directa (true | false)

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

  • :conectar (Símbolo)

    Obsoleto: use la opción :direct_connection en lugar de esta opción. El método de conexión a usar. Esto obliga al clúster a comportarse de la forma especificada en lugar de la detección automática. Uno de los siguientes: :direct, :replica_set, :sharded o :load_balanced. Si :connect se establece en :load_balanced, el controlador se comportará como si el servidor fuera un balanceador de carga, incluso si no está conectado a uno.

  • :balanceo de carga (true | false)

    Si se espera conectarse a un balanceador de carga.

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

    El nombre del conjunto de réplicas al que se conectará. Los servidores que no estén en este conjunto serán ignorados.

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/cluster/topology.rb', línea 90

def inicial(clúster, vigilancia, opciones)
  Conectar = opciones[:conectar]&.a_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, "Opcionesde topología en conflicto: direct_connection=true yload_balanced=true"
    end
    Single
  elsif opciones[:conexión directa] == false && Conectar && Conectar == :directo
    propagar ArgumentError, "Opcionesde topología en conflicto: direct_connection=false y connect=#{connect }"
  elsif Conectar && Conectar != :balanceo de carga
    Si opciones[:balanceo de carga]
      propagar ArgumentError, "Opcionesde topología en conflicto: connect=#{options[:connect ].inspect} y load_balanced=true"
    end
    opciones.Fetch(opciones[:conectar].a_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
    Balance de carga
  else
    Desconocido
  end
  # Las opciones aquí son opciones de cliente/clúster/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, vigilancia, clúster)
end