场景描述
在生产环境中,随着业务规模的增长,MongoDB 的部署架构通常会由副本集演进为分片集群。在管理不同架构的数据库接入与路由时,通常需要关注以下情况:
流量分配与负载均衡: 分片集群默认的负载均衡(LB)采用基于源 IP Hash 的策略。当客户端 IP 数量较少时(如少量应用服务器发起高并发请求),流量可能会集中路由至部分 Mongos 节点,导致节点间负载不均。
节点扩缩容与连接配置维护: 在对分片集群的 Mongos 节点进行扩缩容后,若应用端未及时同步更新连接串中的节点地址列表,新加入的节点将无法承接业务流量。
主从切换与拓扑感知: 当 Primary 节点发生切换时,若应用端未能及时感知拓扑架构的变化,持续向原主节点发送写请求,将导致写入操作失败。
连接方式总览
针对上述连接挑战,腾讯云 MongoDB 为分片集群分别提供了多种连接方式。不同方式在负载均衡策略、节点自动发现、运维复杂度等方面各有侧重,下表按推荐优先级进行汇总。
分片集群连接方式
分片集群因 Mongos 节点扩缩容较为常见,SRV 的自动发现能力优势突出,因此是分片集群的首选方案。LB 负载均衡地址在生产环境中客户端 IP 较多时表现良好,可满足绝大多数业务场景的需求。
优先级 | 连接方式 | 协议格式 | 核心优势 |
⭐⭐⭐ 推荐 | SRV 连接 | `mongodb+srv://` | 自动发现 Mongos 节点,扩缩容无需改连接串,驱动级负载均衡 |
⭐⭐ 次选 | LB 负载均衡地址(默认) | `mongodb://` | 接入简单,单 VIP 屏蔽后端拓扑,绝大多数生产场景均适用 |
⭐ 补充 | 连接所有 Mongos | `mongodb://` | 精准控制流量分配,适用于 LB 负载不均的特殊场景 |
方式一:SRV 连接(分片集群首选)
SRV 连接通过 DNS 自动发现机制与 MongoDB 驱动的原生路由能力,实现灵活的节点接入与请求级负载均衡。在分片集群场景中,Mongos 节点扩缩容时驱动可自动感知变化,无需修改连接串、无需重启应用,在灵活性方面是分片集群的优选方案。副本集的节点拓扑一般保持稳定(Primary、Secondary、Hidden 节点数量固定),不涉及频繁的节点增减操作,使用控制台默认连接串即可满足需求。SRV 连接可作为副本集的可选方案,在连接串简洁性方面有一定优势。
连接原理
应用程序通过 mongodb+srv:// 协议连接时,驱动向 DNS 服务器发起 SRV 记录查询,动态获取当前集群中所有 Mongos 节点的地址列表。当集群进行扩缩容时,DNS 记录自动更新,驱动在下一次 DNS 刷新时(通常60秒内)即可感知并连接新节点,无需重启应用。
说明:
驱动程序与所有存活的 Mongos 节点建立连接池,并在客户端按请求维度进行轮询分发,改善了传统网络 LB 基于源 IP Hash 带来的单点瓶颈。同时,MongoDB 官方驱动原生支持会话追踪,能够将 getMore 游标扫描和分布式事务的所有操作路由至同一个 Mongos 节点,在保证一致性的前提下实现负载均衡。

开通 SRV 连接模式

业务应用
某游戏公司分片集群部署了8个 Mongos 节点,运营活动期间流量突增需紧急扩容至16个 Mongos。使用传统连接串的方式需要在应用配置中手动添加8个新节点地址,涉及20+微服务的配置变更和滚动重启,整个过程耗时2小时。改用 SRV 连接后,新增的 Mongos 节点被 DNS 自动解析,驱动在下一次 DNS 刷新时(通常60秒内)自动发现新节点,业务无感知、无需重启,扩容时间从2小时缩短至5分钟。
方式二:LB 负载均衡地址(分片集群默认连接)
腾讯云 MongoDB 分片集群实例默认提供负载均衡(LB)地址,通过单一 VIP 屏蔽后端多 Mongos 节点拓扑,接入简单、运维成本低,适合作为分片集群的默认连接方案。
连接原理
应用程序通过负载均衡服务提供的虚拟 IP(VIP)接入数据库,从而屏蔽了后端多个 Mongos 节点的真实内网地址(RSIP)。在请求分发上,负载均衡采用源 IP Hash 路由策略,确保来自同一客户端 IP 的请求始终被转发至固定的 Mongos 节点,以此满足 getMore 游标扫描及分布式事务对状态一致性的要求。同时,若后端 Mongos 节点发生变更(如故障替换),负载均衡将自动动态更新 VIP 与 RSIP 的映射关系。此时,应用层无需调整任何连接配置,即可实现底层节点切换对业务的完全无感知。
说明:
负载均衡(LB)地址当前仅适用于分片集群架构。针对副本集架构,建议采用控制台提供的默认连接串(已包含全量节点地址)或 SRV 连接方式接入。此外,在客户端 IP 数量较少的场景下,若出现 Mongos 节点负载不均的现象,建议优先升级至 SRV 连接模式,或直接配置全量 Mongos 节点地址进行连接,以优化请求分发逻辑。

获取连接方式

业务应用
以某 电商平台为例,因其底层业务系统的数据库驱动版本较旧,无法解析 mongodb+srv:// 协议,故不适用 SRV 连接模式。在此类场景下,采用负载均衡(LB)提供的 VIP 地址接入分片集群成为标准的替代方案。应用层仅需维护单一的 VIP 配置,即可实现对整个集群的透明访问;当 Mongos 节点进行变更或出现异常时,后端会自动完成故障节点的隔离与流量切换,无需应用端介入即可保障业务的连续性。
方式三:连接所有 Mongos 访问地址
分片集群支持开通 Mongos 访问,为每个 Mongos 节点分配一个由共享 VIP 与独立 VPORT 构成的固定地址。当某个 Mongos 节点发生故障时,系统将自动为其绑定新的 Mongos 进程,VIP 和 VPORT 保持不变,保障连接稳定性。
连接原理
系统为 Mongos 节点分配固定的虚拟 IP 与端口。底层机制实时探测节点状态,一旦发生故障,系统秒级自动将访问地址切换至健康节点。对外入口始终保持静态,上层应用无需修改配置即可实现透明自愈,保障了业务连接的持续稳定。
说明:
如果您在连接串中配置了所有 Mongos 节点,当调整实例中的 Mongos 节点数后,需要在应用侧同步更新连接串。

开启 Mongos 访问地址
连接方式对比与选择
腾讯云 MongoDB 针对分片集群各方式在接入复杂度、负载均衡效果、运维灵活性等方面各有侧重。以下通过对比表格,从多个决策维度进行横向比较,并给出对应的选择建议,帮助您快速确定适合当前业务场景的连接方案。
决策维度 | SRV 连接 | LB 地址 | 连接所有 Mongos |
接入复杂度 | 低:一条短连接串 | 低:单 VIP | 中:需列出所有节点 |
节点变更时 | 无需改连接串 | 无需改连接串 | ⚠️ 必须更新连接串 |
均衡策略 | 驱动级均衡(连接级) | 源 IP Hash | 驱动级均衡(连接级) |
客户端 IP 少时 | ✅ 均衡 | ⚠️ 可能不均衡 | ✅ 均衡 |
连接数特征 | 连接数放大(连接所有 Mongos) | 连接数不放大 | 连接数放大(连接所有 Mongos) |
相关文档
开启外网访问