Classe: Mongo::ServerSelector::Base
- Herda:
-
Objeto
- Objeto
- Mongo::ServerSelector::Base
- Definido em:
- lib/mongo/server_selector/base.rb
Visão geral
Subclasses conhecidas diretas
Mais próximo, Primário, PrimaryPreferred, Secundário, SecundárioPreferred
Recolhimento do Resumo do atributo de instância
-
#hedge ⇒ Hash | nil
Somente leitura
obsoleto
Obsoleto.
As leituras distribuídas estão obsoletas no MongoDB Server 8.0 e serão removidas em uma versão futura.
-
#max_staleness ⇒ Integer
Somente leitura
Max_staleness O atraso de replicação, em segundos, que um secundário pode sofrer e ainda ser elegível para uma leitura.
-
#opções ➤ Hash
Somente leitura
Opções As opções.
-
#tag_sets ➤ Array
Somente leitura
Tag_sets Os conjuntos de tags usados para selecionar servidores.
Recolhimento do Resumo do método de instância
-
#==(outro) ➤ verdadeiro, falso
Verifique a igualdade de dois seletores de servidor .
-
#candidatos(cluster, despriorizado = []) ➤ Array<Server>
privado
Retorna servidores de tipos aceitáveis do cluster.
-
#initialize(options = nil) ⇒ Base
construtor
privado
Inicialize o seletor de servidor.
-
#inspecionar ➤ string
Inspecione o seletor de servidor.
-
#local_threshold ➤ Flutuante
obsoleto
Obsoleto.
Essa configuração agora é retirada das opções de cluster quando um servidor é selecionado. Será removido na versão 3.0.
- #local_threshold_with_cluster(cluster) ➤ Objeto privado
-
#select_server(cluster, ping = nil, session = nil, write_aggregation: false, depriorized: [], timeout: nil) ➤ Mongo::Server
Selecione um servidor no cluster especificado, levando em conta a fixação do mongos para a sessão especificada.
-
#server_selection_timeout ➤ Flutuante
obsoleto
Obsoleto.
Essa configuração agora é retirada das opções de cluster quando um servidor é selecionado. Será removido na versão 3.0.
-
#adequado_servers(cluster, deprioritized = []) ➤ Array<Server>
privado
Retorna servidores que satisfazem o seletor de servidor do cluster.
-
#try_select_server(cluster, write_aggregation: false, despriorizado: []) ➤ ➤ Servidor | nada
privado
Tenta encontrar um servidor adequado , retorna o servidor se houver um disponível ou nulo se não houver um servidor adequado .
Detalhes do construtor
#initialize(options = nil) ⇒ Base
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.
Inicialize o seletor de servidor.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 47 def inicializar( = nada) = ? .dup : {} .excluir(:max_staleness) se [:max_staleness] == -1 @opções = @tag_sets = [:tag_sets] || [] @max_staleness = [:max_staleness] @hedge = [:hedge] validar! Método se @hedge.nada? mongo::Itens obsoletos.AVISAR( :hedge_read_preference, 'A opção de preferência de leitura distribuída está obsoleta. As leituras distribuídas são ' \ 'obsoletas no MongoDB Server 8.0 e serão removidas em uma versão futura.' ) end |
Detalhes do atributo da instância
#hedge ➤ Hash | nil (somente leitura)
As leituras distribuídas estão obsoletas no MongoDB Server 8.0 e serão removidas em uma versão futura.
Retorna hedge O documento que especifica se deve permitir leituras com hedge.
83 84 85 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 83 def sebe @hedge end |
#max_staleness ➤ inteiro (somente leitura)
Retorna max_staleness O atraso de replicação, em segundos, que um secundário pode sofrer e ainda ser elegível para uma leitura.
76 77 78 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 76 def max_staleness @max_staleness end |
#opções ➤ Hash (somente leitura)
Retorna as opções As opções.
67 68 69 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 67 def @opções end |
#tag_sets ➤ Array (somente leitura)
Retorna tag_sets Os conjuntos de tags usados para selecionar servidores.
70 71 72 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 70 def tag_sets @tag_sets end |
Detalhes do método de instância
#==(outro) ➤ true, false
Verifique a igualdade de dois seletores de servidor .
143 144 145 146 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 143 def ==(Outro) name == Outro.name && sebe == Outro.sebe && max_staleness == Outro.max_staleness && tag_sets == Outro.tag_sets end |
#candidatos(cluster, despriorizado = []) ➤ Array<Servidor>
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.
Retorna servidores de tipos aceitáveis do cluster.
Não executa validação de obsolescência, filtragem de obsolescência ou filtragem de latência.
399 400 401 402 403 404 405 406 407 408 409 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 399 def candidatos(cluster, despriorizado = []) Servidores = cluster.Servidores.rejeitar { |s| despriorizado.incluir?(s) } se cluster.único? || cluster.fragmentado? Servidores elsif cluster.replica_set? select_in_replica_set(Servidores) mais # Cluster desconhecido - sem servidores [] end end |
#inspecionar ➤ string
Inspecione o seletor de servidor.
129 130 131 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 129 def inspecionar "#<#{self.class.name}:0x#{object_id} tag_sets=#{tag_sets.inspect} max_staleness=#{max_staleness.inspect} hedge=#{hedge}>" end |
#local_threshold ➤ Flutuante
Essa configuração agora é retirada das opções de cluster quando um servidor é selecionado. Será removido na versão 3.0.
Obtenha o limite local para a seleção mais próxima em segundos.
112 113 114 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 112 def local_threshold @local_threshold ||= [:local_threshold] || ServerSelector::Local_threshold end |
#local_threshold_with_cluster(cluster) ➤ Objeto
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.
117 118 119 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 117 def local_threshold_with_cluster(cluster) [:local_threshold] || cluster.[:local_threshold] || Local_threshold end |
#select_server(cluster, ping = nil, session = nil, write_aggregation: false, depriorized: [], timeout: nil) ➤ Mongo::Server
Selecione um servidor no cluster especificado, levando em conta a fixação do mongos para a sessão especificada.
Se a sessão for fornecida e tiver um servidor fixado, esse servidor será o único servidor considerado para seleção. Se o servidor for do tipo mongos, ele será retornado imediatamente; caso contrário, as verificações de monitoramento nesse servidor são iniciadas para atualizar seu status e, se o servidor se tornar um mongos dentro do tempo limite de seleção do servidor , ele será retornado.
Se nenhuma sessão for fornecida ou se a sessão não tiver um servidor fixado , o processo normal de seleção de servidor será executado entre todos os servidores no cluster especificado que corresponderem à preferência desse objeto seletor de servidor . As verificações de monitoramento são iniciadas nos servidores do cluster até que um servidor adequado seja encontrado, até o tempo limite de seleção do servidor .
Se um servidor adequado não for encontrado dentro do tempo limite de seleção do servidor, esse método gerará o Erro::NoServerAvailable.
189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 189 def select_server( cluster, Ping = nada, session = nada, write_aggregation: false, despriorizado: [], timeout: nada ) select_server_impl(cluster, Ping, session, write_aggregation, despriorizado, timeout).toque fazer |Servidor| se Lint.habilitado? && !Servidor.pool.pronto? aumentar Erro::LintError, 'O seletor de servidor retorna um servidor com um pool que não está pronto' end end end |
#server_selection_timeout ➤ Flutuante
Essa configuração agora é retirada das opções de cluster quando um servidor é selecionado. Será removido na versão 3.0.
Obtenha o tempo limite para a seleção do servidor .
96 97 98 99 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 96 def server_selection_timeout @server_selection_timeout ||= [:server_selection_timeout] || ServerSelector::SERVER_SELECTION_TIMEOUT end |
#adequado_servers(cluster, depriorized = []) ➤ Array<Servidor>
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.
Retorna servidores que satisfazem o seletor de servidor do cluster.
420 421 422 423 424 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 420 def adequado_servidores(cluster, despriorizado = []) Resultado = adequado_servers_impl(cluster, despriorizado) Resultado = adequado_servers_impl(cluster, []) se Resultado.vazio? && despriorizado.algum? Resultado end |
#try_select_server(cluster, write_aggregation: false, despriorizado: []) ➤ ➤ Servidor | nada
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.
Tenta encontrar um servidor adequado , retorna o servidor se houver um disponível ou nulo se não houver um servidor adequado .
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 |
# Arquivo 'lib/mongo/server_selector/base.rb', linha 350 def try_select_server(cluster, write_aggregation: false, despriorizado: []) Servidores = se write_aggregation && cluster.replica_set? # 1. Verifique se todos os servidores no cluster oferecem suporte a gravações secundárias. is_write_supported = cluster.Servidores.reduzir(true) fazer |res, Servidor| res && Servidor.características.mesclar_out_on_secondary_enabled? end se is_write_supported # 2. Se todos os servidores permitirem gravações secundárias, respeitaremos a preferência de leitura. adequado_servidores(cluster, despriorizado) mais # 3. Caso contrário, voltamos ao primário para o conjunto de réplicas. [ cluster.Servidores.detectar(&:primary?) ] end mais adequado_servidores(cluster, despriorizado) end # Esta lista de servidores pode ser ordenada de forma específica # pelo seletor (por exemplo, para preferencial secundário, o primeiro #servidor pode ser secundário e o segundo servidor pode ser primário) # e devemos pegar o primeiro servidor aqui respeitando a ordem Servidor = adequado_server(Servidores) se Servidor && Lint.habilitado? && Servidor.average_round_trip_time.nada? # É possível para um servidor ter um RTT médio nulo aqui # porque o artt vem da descrição que pode ser atualizada # por um thread em background enquanto a seleção do servidor está em execução. # Atualmente, o modo lint não é um recurso público, se/quando isso # de alterações (https://jira.mongodb.org/browse/RUBY-{01576) o # requisito para que oARTT não seja nulo precisaria ser removido. aumentar Erro::LintError, "Servidor MongoDB #{server.endereço} tem nil average rtt" end Servidor end |