模块:Mongo::Cluster::Topology
- 扩展方式:
- 拓扑结构
- 包含在:
- 拓扑结构
- 定义于:
- lib/ Mongo/ 集群/
拓扑结构、lib/ Mongo/
集群/
拓扑结构、lib/ Mongo/ 集群/ 拓扑结构/base.rb、lib/ Mongo/ 集群/ 拓扑结构/single.rb、lib/
Mongo/ 集群/拓扑结构/分片的.rb,lib/ Mongo/ 集群/ 拓扑结构/unknown.rb,lib/
Mongo/ 集群/ 拓扑结构/load_balanced.rb,lib/
Mongo/ 集群/ 拓扑结构/no_replica_set_options.rb,lib/ Mongo/ 集群/
拓扑结构/ replica_set_no_primary.rb、lib/ Mongo/ 集群/ 拓扑结构/replica_set_with_primary.rb
Overview
定义获取服务器的行为。
拓扑结构与其集群相关联,示例,ReplicaSet拓扑结构包含副本集名称。 因此,一个拓扑结构对象不能与多个集群对象一起使用。
同时,尽管拓扑对象的构造函数可能建议,但拓扑对象对集群中的特定服务器一无所知。 这尤其意味着,如果应用程序想要跟踪副本集中的服务器更改,则拓扑更改事件需要应用程序自行维护集群引用。
在命名空间下定义
模块: NoReplicaSetOptions 类: Base 、 LoadBalanced 、 ReplicaSetNoPrimary 、 ReplicaSetWithPrimary 、 Sharded 、 Single 、 Unknown
常量摘要折叠
- OPTIONS =
此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。
用于选择服务器的各种拓扑结构。
{ 直接: Single, load_balanced: LoadBalanced, replica_set: ReplicaSetNoPrimary, 分片的: 分片, }.冻结
实例方法摘要折叠
-
#initial (cluster, Monitoring, options) ⇒ ReplicaSet, ...
private
获取所提供选项的初始集群拓扑。
实例方法详细信息
#initial (集群, 监控, options) ⇒ ReplicaSet , ...
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
获取所提供选项的初始集群拓扑。
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 'lib/ Mongo/ 集群/ 拓扑结构.rb', line 90 def 初始(集群, 监控, ) 连接 = [:connect]&。to_sym cls = if [:direct_connection] if 连接 && 连接 != :direct 提高 ArgumentError, "冲突的拓扑结构选项:direct_connection=true 和 connect= #{ connect } " end if [:load_balanced] 提高 ArgumentError, "冲突的拓扑选项:direct_connection=true 和 load_balanced=true " end Single elsif [:direct_connection] == false && 连接 && 连接 == :direct 提高 ArgumentError, "冲突的拓扑选项:direct_connection=false 和 connect= #{ connect } " elsif 连接 && 连接 != :load_balanced if [:load_balanced] 提高 ArgumentError, " Conflicting 拓扑结构 options: connect= #{options[:connect].inspect} and load_balanced =true " end 选项.获取([:connect].to_sym) elsif .键?(:replica_set) || .键?(:replica_set_name) if [:load_balanced] 提高 ArgumentError, "冲突的拓扑结构选项:replica_set/replica_set_name 和 load_balanced=true " end ReplicaSetNoPrimary elsif [:load_balanced] || 连接 == :load_balanced LoadBalanced else 未知 end # 此处的选项是客户端/集群/服务器选项。 # 特别是,副本集名称键与 #拓扑结构。 # 如果给出了 replica_set_name(可能由驱动程序内部指定), # 使用该密钥。 # 否则(例如 从客户端传递的选项), # 将 replica_set 移动到 replica_set_name。 if (cls <= ReplicaSetNoPrimary || cls == Single) && ![:replica_set_name] = .dup [:replica_set_name] = .删除(:replica_set) end cls.new(, 监控, 集群) end |