Módulo: Mongo::Clúster::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 no saben nada sobre servidores específicos en un clúster, a pesar de lo que su constructor pueda sugerir. Lo que significa, en particular, que los eventos de cambio de topología requieren que la aplicación mantenga referencias de clúster por sí misma si desea rastrear cambios de servidor dentro de un set de réplicas.

Desde:

  • 2.0.0

Definido bajo Namespace

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

Resumen de constantes colapsar

OPCIONES =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

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

Desde:

  • 2.0.0

{
  directo: Single,
  balanceo_de_carga: loadBalanced,
  replica_set: ReplicaSetSinPrincipal,
  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 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.

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 clúster.

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 fuerza al clúster a comportarse de la manera especificada en lugar de descubrirse automáticamente. Uno de :direct, :replica_set, :particionado, :load_balanced. Si :connect está configurado de :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



89
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
130
131
132
133
# Archivo 'lib/mongo/clúster/topología.rb', línea 89

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 de topología 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_replicas)
          si opciones[:balanceo de carga]
            propagar ArgumentError,
                  'Opciones de topología en conflicto: replica_set/replica_set_name y load_balanced=true'
          end

          ReplicaSetSinPrincipal
        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 hacerlo el driver internamente),
  # use esa clave.
  # De lo contrario (por ejemplo, opciones transmitidas del cliente),
  # mover replica_set a replica_set_name.
  si (cls <= ReplicaSetSinPrincipal || cls == Single) && !opciones[nombre_del_conjunto_de_replicas]
    opciones = opciones.dup
    opciones[nombre_del_conjunto_de_replicas] = opciones.borrar(Conjunto de réplicas)
  end
  cls.Nuevo(opciones, Monitoring, clúster)
end