Módulo: Mongo::Cluster::Topologia

Estendido por:
topologia
Incluído em:
topologia
Definido em:
build/ruby-driver-v2.19/lib/mongo/cluster/topology.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/base.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/single.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/sharded.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/unknown.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/load_balanced.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/no_replica_set_options.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/replica_set_no_primary.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/replica_set_with_primary.rb

Visão geral

Define o comportamento para obter servidores.

As topologias estão associadas aos seus clusters — por exemplo, uma topologia ReplicaSet contém o nome do conjunto de réplicas. Um objeto de topologia , portanto, não pode ser usado com vários objetos de cluster.

Ao mesmo tempo, os objetos de topologia não sabe nada sobre servidores específicos em um cluster, apesar do que seu construtor possa sugerir. O que significa, em particular, que os eventos de alteração de topologia exigem que o aplicativo mantenha as referências do cluster por conta própria se quiser rastrear as alterações do servidor em um conjunto de réplicas.

Desde:

  • 2.0.0

Definido sob namespace

Módulos: NoReplicaSetOptions Classes: Base, LoadBalanced, ReplicaSetNoPrimary, ReplicaSetWithPrimary, Sharded, Único, Desconhecido

Colapsode resumo constante

OPÇÕES =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

As várias topologias para seleção do servidor.

Desde:

  • 2.0.0

{
  direto: Single,
  load_balanced: loadBalanced,
  replica_set: ReplicaSetNoPrimary,
  fragmentado: Fragmentado,
}.congelar

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#inicial(cluster, monitoramento, opções) ➤ ReplicaSet, ...

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Obtenha a topologia inicial do cluster para as opções fornecidas.

Exemplos:

Obtenha a topologia inicial do cluster.

Topology.initial(topology: :replica_set)

Parâmetros:

  • cluster (Cluster)

    O cluster.

  • Monitoramento (Monitoramento)

    O monitoramento.

  • opções (Hash)

    As opções do cluster.

Hash de opções (opções):

  • :direct_connection (verdadeiro | falso)

    Se deve se conectar diretamente à semente especificada, ignorando a descoberta da topologia. Exatamente uma semente deve ser fornecida.

  • :connect (Símbolo)

    Obsoleto - use a opção :direct_connection em vez desta opção. O método de conexão a ser usado. Isso força o cluster a se comportar da maneira especificada em vez de fazer a descoberta automaticamente. Um dos :direct, :replica_set, :sharded, :load_balanced. Se :connect estiver definido como :load_balanced, o driver se comportará como se o servidor fosse um balancer de carga, mesmo que não esteja conectado a um balancer de carga.

  • :load_balanced (verdadeiro | falso)

    Se deve esperar para se conectar a um balancer de carga.

  • :replica_set (Símbolo)

    O nome do conjunto de réplicas ao qual se conectar. Os servidores que não estejam neste conjunto de réplicas serão ignorados.

Retorna:

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
# File 'build/ruby-driver-v2.19/lib/mongo/cluster/topology.rb', linha 90

def inicial(cluster, Monitoramento, opções)
  Conecte = opções[:connect]&.to_sym
  cls = se opções[:direct_connection]
    se Conecte && Conecte != :direct
      aumentar ArgumentError, "Opções de topologia conflitantes: direct_connection=true e connect=#{connect}"
    end
    se opções[:load_balanced]
      aumentar ArgumentError, "Opções de topologia conflitantes: direct_connection=true e load_balanced=true"
    end
    Single
  elsif opções[:direct_connection] == false && Conecte && Conecte == :direct
    aumentar ArgumentError, "Opções de topologia conflitantes: direct_connection=false e connect=#{connect}"
  elsif Conecte && Conecte != :load_balanced
    se opções[:load_balanced]
      aumentar ArgumentError, "Opções de topologia conflitantes: connect=#{opções[:connect].inspeccione} e load_balanced=true"
    end
    Opções.buscar(opções[:connect].to_sym)
  elsif opções.chave?(:replica_set) || opções.chave?(:replica_set_name)
    se opções[:load_balanced]
      aumentar ArgumentError, "Opções de topologia conflitantes: replica_set/replica_set_name e load_balanced=true"
    end
    ReplicaSetNoPrimary
  elsif opções[:load_balanced] || Conecte == :load_balanced
    loadBalanced
  mais
    Desconhecido
  end
  # As opções aqui são opções de cliente/cluster/servidor.
  # Em particular, a chave de nome do conjunto de réplicas é diferente para
  # topologia.
  # Se replica_set_name for fornecido (como pode ser internamente pelo driver),
  # use essa chave.
  # Caso contrário (por exemplo opções passadas do cliente),
  # move replica_set para replica_set_name.
  se (cls <= ReplicaSetNoPrimary || cls == Single) && !opções[:replica_set_name]
    opções = opções.dup
    opções[:replica_set_name] = opções.excluir(:replica_set)
  end
  cls.Novo(opções, Monitoramento, cluster)
end