只读节点简介
为了扩展主节点的读请求能力,DDS提供具备独立连接地址的只读节点,适合独立系统直连访问,以缓解大量读请求给主节点造成的压力。
在对数据库没有写请求,但是有大量读请求的应用场景下,数据库的主备节点可能难以承受读取压力,甚至对业务造成影响。为了分担主备节点的访问压力,您可以根据业务需求创建一个或多个只读节点,来满足大量的数据库读取需求,增加应用的吞吐量。
只读节点与备节点(Secondary)的区别
节点 |
说明 |
应用场景 |
---|---|---|
备节点 |
备节点具有高可用保障,备节点和主节点组成高可用切换的能力,即某个主节点故障时,系统会自动切换流量至备节点。相应的,在主节点故障时,每个备节点均有可能被选举为新的主节点,来执行数据写入请求。 |
主备节点可以使用高可用地址连接实现全局读写分离,适用于读多写少的并发场景。从而在性能扩展的同时,屏蔽节点故障对业务带来的影响。 |
副本集只读节点 |
副本集只读节点仅从主节点同步数据,不具备高可用保障,也不会被选举为主节点。只读节点具有独立的连接地址,适合独立系统直连访问,与已有副本集主备节点的连接互不干扰。 |
适合需要从现有实例中大量读取数据的业务场景。 |
集群只读节点 |
集群只读节点具有高可用保障,当某个只读节点故障时,系统自动将其切换至其他可用只读节点或备节点。 集群只读节点具有独立的连接地址,适合独立系统及应用直连访问,与已有主从节点的连接互不干扰。 集群实例提供统一的地址连接所有只读节点,您只需添加只读节点的个数即可扩展数据库的处理能力,应用程序无需做任何修改。 集群只读节点不参与投票选举主节点,不会被选举为主节点。 |
适合需要从现有实例中大量读取数据,需要读请求负载均衡、只读节点高可用的业务场景。 |
功能限制
- 目前仅副本集实例3.4、4.0、4.2、4.4及5.0版本和集群实例3.4版本支持挂载只读节点。
- 暂不支持创建带有只读节点的实例。
- 只读节点仅供读取请求访问,不参与主备节点选举。
- 单个副本集实例中最多可以添加5个只读节点。详情请参见添加副本集实例只读节点。
- 单个集群实例的每个shard最多可以添加5个只读节点。
- 主节点和只读节点之间的数据复制方式为异步复制,存在秒级别的延迟。
功能特点
- 可以根据业务需求随时更改只读节点个数,节省业务成本。
- 与主节点采用一致规格,自动同步主节点的数据。
- 不占用主节点的资源,增减只读节点的操作不会对主节点的业务构成干扰。
- 提供独立的连接地址,适合独立系统及应用直连访问,与已有副本集实例主备节点的连接互不干扰。副本集实例详情请参见通过Mongo Shell连接副本集实例只读节点。
- 提供只读节点系统性能监控。
计费标准
- 当前实例新增只读节点后,只读节点的虚拟机和磁盘需要额外收费。
- 单个只读节点的价格等同于副本集实例中单个节点、以及集群Shard节点中单个节点的价格。例如当前规格下,三节点副本集实例的售价为3,000元,那么单个只读节点的价格即为1,000元。