为了扩展主从节点的读请求能力,云数据库MongoDB提供具备独立连接地址的只读节点,适合独立系统直连访问,以减轻大量读请求给主从节点造成的压力。
在有大量读请求的应用场景下,数据库的主从节点可能难以承受读取压力,甚至对业务造成影响。为了分担主从节点的读取压力,您可以根据业务需求创建一个或多个只读节点,来满足大量的数据读取需求,增加应用的吞吐量。
只读节点架构
只读节点(ReadOnly)的特点如下:
只读节点(ReadOnly)通过操作日志(Oplog)从延迟最低的主节点(Primary)或从节点(Secondary)同步数据,应用于有大量读请求的场景,以减轻主节点(Primary)和从节点(Secondary)的访问压力。
只读节点(ReadOnly)具有独立的连接地址,适合分析程序(如Analysis Server)直连访问,与已有主从节点的连接互不干扰。
两个或以上只读节点(ReadOnly)可以使用ReadOnly ConnectionStringURI实现读请求负载均衡。
只读节点与从节点的区别
节点 | 说明 | 适用场景 |
只读节点(ReadOnly) |
| 两个或以上只读节点可以使用ReadOnly ConnectionStringURI实现读请求负载均衡,适用于从现有实例中读取大量数据的业务场景,如BI分析、大数据分析等。 |
从节点(Secondary) |
| 主从节点可以使用ConnectionStringURI实现读写分离,适用于读多写少的并发场景,从而在性能扩展的同时,避免节点故障对业务带来的影响。 |
功能优势
您可以根据业务需求随时更改只读节点个数,节省业务成本。
只读节点具有独立的连接地址,适合独立系统及应用直连访问,与已有主从节点的连接互不干扰。
只读节点与主从节点采用一致规格,自动从延迟最低的主节点或从节点同步数据,免去维护的烦恼。
独立的只读节点提供只读服务,不占用主节点的资源。增减只读节点的操作,不会对主从节点的业务构成干扰,也不会中断主从节点的连接访问。
云数据库MongoDB副本集实例提供统一的地址(ReadOnly ConnectionStringURI)连接所有只读节点,您只需添加只读节点的个数即可扩展数据库的处理能力,应用程序无需做任何修改。
说明关于ReadOnly ConnectionStringURI地址的更多信息,请参见副本集实例连接说明。
功能限制
目前仅云数据库MongoDB副本集实例和分片集群实例支持只读节点。
只读节点仅供读请求访问,不参与主从节点选举。
一个副本集实例可以添加最多5个只读节点。
一个分片集群实例中的每个Shard可以添加最多5个只读节点。
只读节点与主节点或从节点之间的数据复制方式为异步复制,正常情况下存在毫秒级的延迟,在主节点写入压力大的时候可能出现秒级的延迟。
价格
单个只读节点的价格等同于副本集实例或者分片集群实例Shard中单个节点的价格。