连接方式决策指南

最近更新时间:2026-04-17 08:59:01

我的收藏

场景描述

在生产环境中,随着业务规模的增长,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 连接模式

MongoDB 实例版本为4.0及以上,在 MongoDB 控制台 的实例详情中,定位至网络配置区域,单击开通 SRV 连接模式即可启用该连接方式。具体操作,请参见 开通 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 控制台 实例详情页面的网络配置区域,访问地址下便可以获取到 LB 方式的连接地址。


业务应用

以某 电商平台为例,因其底层业务系统的数据库驱动版本较旧,无法解析 mongodb+srv:// 协议,故不适用 SRV 连接模式。在此类场景下,采用负载均衡(LB)提供的 VIP 地址接入分片集群成为标准的替代方案。应用层仅需维护单一的 VIP 配置,即可实现对整个集群的透明访问;当 Mongos 节点进行变更或出现异常时,后端会自动完成故障节点的隔离与流量切换,无需应用端介入即可保障业务的连续性。

方式三:连接所有 Mongos 访问地址

分片集群支持开通 Mongos 访问,为每个 Mongos 节点分配一个由共享 VIP 与独立 VPORT 构成的固定地址。当某个 Mongos 节点发生故障时,系统将自动为其绑定新的 Mongos 进程,VIP 和 VPORT 保持不变,保障连接稳定性。

连接原理

系统为 Mongos 节点分配固定的虚拟 IP 与端口。底层机制实时探测节点状态,一旦发生故障,系统秒级自动将访问地址切换至健康节点。对外入口始终保持静态,上层应用无需修改配置即可实现透明自愈,保障了业务连接的持续稳定。
说明:
如果您在连接串中配置了所有 Mongos 节点,当调整实例中的 Mongos 节点数后,需要在应用侧同步更新连接串。


开启 Mongos 访问地址

MongoDB 控制台 选择分片实例,进入实例详情 > 节点管理 > Mongos 节点页签,单击开通 Mongos 访问地址。具体操作,请参见 开通 Mongos 访问地址

连接方式对比与选择

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

相关文档