集群实例
集群实例包含 mongos, config 和 shard 3 类节点。
其中 config 和 shard 节点都采用 3 节点副本集架构,如果某个节点发生故障,系统会自动进行高可用切换操作,选取一个正常节点继续提供服务,后台会对故障节点进行检查和修复。config 和 shard 的自动切换操作对用户来说不需要任何干预,整个过程会在 1 分钟内完成,用户请求如果出现报错可以进行重试。
每个 mongos 是独立运行的,如果节点出现故障,则该节点不可用。用户在创建实例时会分配多个 mongos 节点,因此推荐客户端使用 Connection URI 连接所有 mongos 节点,而不是单个 mongos 节点。客户端会自动对所连接的 mongos 进行探活检查,并自动将请求分散到正常的 mongos 节点上。
连接示例如下:
mongo "mongodb://<用户名>:<密码>@<IP1:Port1>,<IP2:Port2>/admin?authSource=admin"
副本集实例
一个副本集实例包含多个 mongod 节点。比如 3 节点副本集包含 1 个 Primary,1 个 Secondary 和 1 个 Hidden 节点。如果 Primary 节点故障,系统会自动选择另外正常的 Secondary 节点成为新的 Primary 节点,后台会对故障节点进行检查和恢复。
整个切换和恢复过程不需要用户干预,在此期间可能会产生 1 分钟以内的连接闪断和请求失败,用户可以对出现报错的请求进行重试。
建议客户端使用 Connection URI 连接文档数据库时,连接所有正常节点,并指定 replicaSet 参数。避免在出现单个节点故障时,影响应用的正常请求。
连接示例如下:
mongo "mongodb://<用户名>:<密码>@<IP1:Port1>,<IP2:Port2>/admin?authSource=admin&replicaSet=<setname>"
单节点实例
单节点实例仅有一个 mongod 节点供用户读写访问。如果节点发生故障,系统会对节点进行检查和恢复。但是故障期间实例不可用。
单节点实例主要是在保证数据可靠性的前提下,为用户降低使用成本。适合测试、教学等非核心业务场景。生产环境建议使用集群实例或者副本集实例,保障服务的高可用。