节点角色说明
不论是副本集实例还是集群版实例,底层都是使用多副本的方式存储数据。多个副本组成一个副本集,正常来说包含 1 个 primary 节点,1 个 hidden 节点,1个或者多个 secondary 节点。
Primary 节点承担数据写入请求,secondary 和 hidden 节点通过 oplog 日志更新数据。
默认情况下,用户的读写请求都会发送到 primary 节点处理,此时整体性能受限于 primary 节点的资源。
用户可以通过下面的方法调整配置参数,将读请求发送给 secondary 节点。通过读写分离,可以很大程度上提升系统的性能。
使用只读节点提升读性能
文档数据库服务支持用户添加只读节点来提升读能力。只读节点实时同步最新数据并提供读访问,另外由于只读节点不会被选举,因此及时发生主从切换,只读节点也不会成为 primary 节点。
用户可以在控制台上添加只读节点,添加成功后,按照控制台给出的 URL 连接进行访问。
通过设置 readPreference 去读指定节点
文档数据库服务在开通时,默认就是 1 个primary,1 个 secondary 和 1 个 hidden 节点的架构。用户可以在连接上文档数据库服务实例之后,通过指定 readPreference 来配置读策略。目前 readPreference 支持的策略有:
- primary:默认规则,所有读请求发到primary 节点。
- primaryPreferred:优先读 primary 节点,如果 primary 节点不可达,则请求 secondary 节点。
- secondary:所有读请求发送到 secondary 节点。
- secondaryPreferred:优先读 secondary 节点,如果 secondary 不可达,则请求 primary 节点。
- nearest:客户端探测每个节点的网络记录,并将读请求均匀发送到最近的可达节点上。默认情况下,如果 2 个节点于客户端的网络距离差距不超过 15ms, 则认为是“一样近”。