更新时间:2022-04-29 GMT+08:00
分享

读写分离实例

本章节主要介绍DCS服务从服务端实现的读写分离实例和从客户端实现读写分离的主备实例,读写分离主要适用于读高并发、写请求较少的业务场景,解决高并发的性能问题,节约运维成本。

服务端读写分离和客户端读写分离功能,仅在部分Region支持,具体请以控制台显示为准。

  • Redis 4.0/5.0版本的读写分离实例(服务端读写分离),默认为从服务端侧实现的读写分离,通过Proxy节点识别用户读写请求,如果是写请求,则转发给主节点,如果是读请求,则转发给备节点,不需要用户在客户端做任何配置。
  • Redis 4.0/5.0版本的主备实例(客户端读写分离),默认支持从客户端实现读写分离,实例提供读写域名和只读域名给用户,客户端需要判断用户读写请求,如果是写请求,则将请求发送给读写域名,如果是读请求,则将请求发送给只读域名,从而实现读写分离。

服务端读写分离

图1 读写分离实例

实例示意图说明:

  • 终端节点服务

    终端节点服务,主要是将Redis缓存实例配置为VPC终端节点支持的服务,用户可以直接通过终端节点服务的地址访问。

    Redis读写分离实例提供的IP地址和域名,即为终端节点服务的地址。

  • ELB

    弹性负载均衡服务器,采用集群高可用方式,支持多可用区部署。

  • Proxy

    代理服务器集群。通过Proxy节点识别用户读写请求,如果是写请求,则转发给主节点,如果是读请求,则转发给备节点,不需要用户在客户端做任何配置。

  • Sentinel集群

    监控主备节点状态,当主节点出现故障或异常时,进行主备倒换,保证服务不中断。

  • 主备实例

    读写分离实例,后端是一个主备实例,包含了主和备两个节点。默认开启数据持久化功能,同时保持节点间数据同步。

    主备节点支持跨可用区部署。

客户端读写分离

Redis 4.0和Redis 5.0主备实例支持读写分离,架构设计如图2所示。

图2 Redis 4.0和Redis 5.0主备实例示意图

图说明如下:

  1. Redis 4.0和Redis 5.0主备读写分离实例,分别提供读写域名和只读域名,客户端需要判断用户读写请求,将请求发送到对应域名,连接主节点或备节点。

    读写域名和只读域名,可通过控制台的实例详情页面获取。

  2. Redis 4.0和Redis 5.0主备实例支持使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。

    Sentinel对用户不可见,仅在服务内部中使用。

  3. 只读节点和读写节点规格一致,用户创建主备实例时,默认包含一个主节点和一个备节点。
主备读写分离实例使用限制:
  1. 主备读写分离实例的读请求会发送到从节点,从节点从主节点同步数据会有一定的时延。

    请确保业务侧不依赖主从同步的时延,如果对主从同步时延有依赖的场景,不适用读写分离实例,请考虑普通主备或集群。

  2. 主备读写分离实例适用于写少读多的场景,如果写流量过大,可能导致主从断连,或断连后主从同步失败,导致读请求性能下降。

    写流量大的场景请考虑普通主备或集群 。

  3. 从节点故障后,需要一定的时间从主节点全量同步数据,同步数据期间,从节点不对外提供服务,此时实例读请求性能会下降。

    推荐使用<32G内存规格的实例,内存规格越小,主从全量同步数据时间越少,同步断链时间越短。

分享:

    相关文档

    相关产品

close