Overview
本节介绍Ruby驱动程序中可用的MongoDB连接和身份验证选项。您可以使用连接 URI(也称为连接字符串)或向 Mongo::Client 构造函数传递参数来配置连接。
使用连接 URI
如果将连接 URI 传递给 Mongo::Client 构造函数,则可以将连接选项作为 <name>=<value> 对包含在字符串中。在以下示例中,连接 URI 包含值为 60000 的 connectTimeoutMS 选项和值为 true 的 tls 选项:
uri = "mongodb://<hostname>:<port>/?connectTimeoutMS=60000&tls=true"client = Mongo::Client.new(uri)使用 Mongo::Client
您可以将连接选项作为参数传递给 Mongo::Client 构造函数,而不是将它们包含在连接 URI 中。以这种方式配置连接时,可以更轻松地在运行时更改设置并在编译期间捕获错误。以下示例演示如何使用 Mongo::Client 构造函数设立连接选项:
uri = "mongodb://<hostname>:<port>"client = Mongo::Client.new(uri, connect_timeout: 60000, ssl: true)连接选项
以下部分描述了Ruby驱动程序中可用的连接选项。
网络压缩
连接选项 | 说明 |
|---|---|
:compressors | 要使用的潜在压缩器列表,按优先顺序排列。驱动程序会选择服务器也支持的第一个压缩器。目前,驱动程序仅支持 |
:zlib_compression_level | 如果使用压缩,则使用的zlib压缩级别。此选项接受 |
超时
连接选项 | 说明 |
|---|---|
:connect_timeout | 在提出异常之前等待建立套接字连接的秒数。此超时也用于 SRV DNS 记录解析。 |
:timeout_ms | 在引发异常之前等待操作执行的毫秒数。 |
服务器选择
连接选项 | 说明 |
|---|---|
:load_balanced | 是否预计连接到负载均衡器。 |
:server_monitoring_mode | 要使用的服务器监控协议。当此选项设置为 数据类型: |
:server_selection_timeout | 驱动程序在抛出异常之前等待服务器选择成功的最长时间(以秒为单位)。 |
有关服务器选择的更多信息,请参阅服务器选择指南。
身份验证
连接选项 | 说明 |
|---|---|
:auth_mech | Ruby 驱动程序用于验证应用程序的机制。 |
:auth_mech_properties | 针对身份验证机制的选项。此选项并非所有身份验证机制都需要。 |
:auth_source | 要认证的数据库。 |
: user | 用于身份验证的用户名。如果此选项包含在连接 URL 中,则必须对其进行 百分比编码。 |
:password | 用于身份验证的密码。如果此选项包含在连接 URL 中,则必须对其进行 百分比编码。 |
读取和写入操作
连接选项 | 说明 |
|---|---|
:replica_set | 指定要连接的副本集的名称。 |
:direct_connection | 是否直接连接到指定的主机 |
:enable_overload_retargeting | 驱动程序是否会降低返回超负载错误的服务器的优先级,从而降低在同一个超负载服务器上重试的可能性。 |
:max_adaptive_retries | 当驱动程序遇到超负载错误时尝试的最大重试次数。 |
:read | 读取偏好(read preference)选项。有关读取偏好(read preference)的更多信息,请参阅 MongoDB Server 手册中的读取偏好。 |
:read_concern | 指定读关注(read concern)选项。有关详细信息,请参阅 MongoDB Server 手册中的读关注(read concern)。 |
:write_concern | 指定客户端的写关注(write concern)。有关写关注(write concern)的更多信息,请参阅MongoDB Server手册中的写关注。 |
:local_threshold | 副本集节点资格的延迟窗口,以秒为单位。如果节点的往返网络探测(ping)时间超过最快服务器的往返网络探测(ping)时间加上此值,则该服务器没有资格被选中。 |
连接池
连接选项 | 说明 |
|---|---|
:max_pool_size | 连接池维护的并发连接最大数。如果某个服务器的在用连接数达到指定值,则对该服务器的下一个请求将等待,直到出现可用连接。将此选项设置为 |
:max_connecting | 每个池可以同时建立的最大连接数。 |
:min_pool_size | 连接池维护的并发连接最小数。 |
:max_idle_time | 连接在连接池中可以保持空闲状态的最大秒数。 |
有关连接池的更多信息,请参阅 连接池指南。
注意
智能工作负载管理 (IWM) 中的负载削减
如果带有 SystemOverloadedError 或 RetryableError 标签的错误导致您的应用程序出现故障或出现在您的应用程序日志中,则说明您的集群上可能已启用负载削减 (Load Shedding),并且您的驱动程序可能未升级到支持该功能的版本。我们建议将您的 MongoDB Ruby 驱动程序升级到 2.24 或更高版本。如果您在升级后仍然看到这些错误,可以通过服务器端更改(例如查看您的负载削减配置)或通过应用程序端更改(例如实现自定义错误处理或客户端请求限制)来解决这些错误。根据您的情况,应用程序端更改可能是更可取或必要的。
负载削减 (Load Shedding) 是 IWM 的一项功能,有助于在持续过载期间通过拒绝多余的操作来管理服务器负载。此功能适用于 MongoDB 9.0 及更高版本。
API 文档
有关Ruby驱动程序的 Mongo::Client 选项的更多信息,请参阅 Mongo::客户端 的API文档。