文档首页/ 分布式缓存服务 DCS/ 最佳实践/ 业务应用/ 使用DCS实现业务高峰期Redis自动扩充
更新时间:2025-08-07 GMT+08:00
分享

使用DCS实现业务高峰期Redis自动扩充

业务场景及痛点

在电商、游戏和社交等强实时场景中,Redis常被用作超低延迟缓存。在业务高峰期,流量会瞬间拉高缓存实例的内存占用与网络吞吐。例如,双十一当天PV与UV可飙升数十倍,Redis需撑住商品详情、购物车、秒杀库存与Session等关键接口的300kQPS+持续冲击。

在业务峰值期间的键空间迅速膨胀,单Redis缓存实例的使用内存将逼近最大内存,可能引发缓存淘汰和内存溢出(OOM)。同时海量并发导致出入网带宽打满,客户端会出现繁忙或超时。扩容Redis不及时可能会触发OOM或网络瓶颈,将直接影响订单与页面秒开率。如果使用传统方式手动扩容Redis,需要经过人工评估、变更实例规格、故障转移流程,至少耗时30min,无法响应秒级突增。且运维操作需同时理解云平台规格、Shard迁移、业务热点分布与配置调优,门槛高、易出错。

解决方案

使用分布式缓存服务(DCS)的Redis,Redis实例支持自动扩容内存规格和自动弹性调整带宽。自动扩容内存与带宽机制通过实时监控Redis实例的关键指标(如内存使用率、网络吞吐量与并发连接数)来智能判断何时触发纵向或横向扩容,有效化解流量激增带来的压力。

通过配置Redis实例规格自动扩缩容策略设置Redis实例自动弹性带宽,当内存使用率或带宽使用率达到阈值时,系统即可无缝启动实例规格升级或动态增加分片,并同步提升带宽容量,保障缓存容量与网络通道充足。内存自动扩容确保缓存不丢、数据请求不中断;带宽自动扩容则避免了网络瓶颈导致超时与响应延迟。两个功能联合作战,使Redis在高并发冲击下依然保持高可用、低延迟,同时最大化资源利用与成本效率,是支撑现代大流量业务(如双十一、电商秒杀、游戏开服)的核心保障机制。

约束与限制

  • Redis实例在规格扩缩容过程中会出现1~2次30秒内的连接闪断以及1分钟内的只读状态。
  • Redis实例通过条件触发的方式自动扩容后,暂不支持自动缩容。自动扩容后如需缩容,请参考变更DCS实例规格手动执行规格变更。
  • Redis实例配置规格自动扩缩容策略后,如果执行实例规格变更(副本数变更除外),变更前已应用的自动扩缩容策略会自动失效。
  • 创建的Redis实例,必须满足以下条件。创建方式请参见创建DCS Redis缓存实例
    • 缓存实例状态为“运行中”。
    • 实例计费方式为按需计费,包周期计费的实例暂不支持自动扩缩容。
    • 缓存实例的版本为Redis 4.0及以上版本,且必须为基础版实例。
    • 缓存实例规格不小于4GB,否则不支持自动扩缩容。
    • 创建实例后,请提交工单联系客服申请开通“自动扩缩容”和“自动弹性调整带宽”功能(目前为受限使用)。

配置Redis实例规格自动扩缩容策略

  1. 登录分布式缓存服务管理控制台
  2. 在管理控制台左上角单击,选择实例所在的区域。
  3. 单击左侧菜单栏的“缓存管理”。
  4. 在“缓存管理”页面,单击DCS缓存实例的名称。
  5. 在缓存实例的“基本信息”栏中,单击“规格”后的“自动扩缩容”。

    图1 自动扩缩容

  6. 在弹出的“自动扩缩容”窗口,单击“新增策略”,增加自动扩缩容策略。
  7. 设置策略名称。

    策略名称的长度范围为4~64个字符。名称中只能包含中文、英文字母、数字、中划线、下划线、点,且必须以字母、中文或数字开头。

  8. 自动扩缩容的触发方式请选择“条件触发”,并参考表1 条件触发参数说明设置对应触发参数。

    配置条件触发策略后,当内存使用率满足设定的阈值条件时,系统会自动扩大实例规格。

    本文中参数的取值样例仅作参考,请结合用户的业务需求和实际产品规格进行选择。

    表1 条件触发参数说明

    参数

    取值样例

    参数说明

    内存平均使用率不小于

    70%

    选择触发实例扩容的内存平均使用率阈值(单位:%)。例如设置为70%时,当实例的内存使用率≥70%,会触发实例自动扩容。

    规格上限

    32GB

    设置实例扩容的规格上限(单位:GB),请选择大于实例当前规格的上限值。例如实例原规格为4GB,设置的规格上限为32GB,当触发扩容条件时,实例会扩容为8GB,扩容后如果再次触发扩容条件,会继续扩容为16GB,最大自动扩容规格不会超过32GB。

    观测窗口

    5分钟

    内存平均使用率的观测时间(单位:分钟),默认值:5。

    例如观测窗口时间设置为5分钟时,则内存平均使用率的数据取值为5分钟内的监控数据。

    静默时间

    0秒

    扩容操作的静默时间(单位:秒),默认值:0。

    当实例规格自动扩容后,如果再次监测到内存平均使用率超过阈值,实例在设置的静默时间内不会立即扩容,设置静默时间可以避免实例连续进行规格自动扩容。

  9. 单击“确定”提交新增策略。提交成功后,即可在自动扩缩容页面中查看到新增的策略。

    策略提交后如需修改策略设置的参数或删除策略,请单击对应策略右侧的“编辑”或“删除”。

  10. 在需要执行的策略后单击“应用”,确认同意该操作后单击“确认”,该策略正式生效,会显示在“已应用策略”下。

    • 如需取消生效的策略,单击已应用策略下的“取消应用”并单击“确定”,策略取消。实例应用新的策略后,旧的触发策略会被替换,不支持同时应用多条触发策略。
    • 配置并应用了Redis自动扩缩容策略后,当触发了Redis自动扩容条件时,Redis会自动进行扩容。在控制台的“后台任务”中可以查看到用户名为“auto-system”的变更规格记录,如图2所示。
      图2 自动扩缩容记录

设置Redis实例自动弹性带宽

  1. 登录分布式缓存服务管理控制台
  2. 在管理控制台左上角单击,选择实例所在的区域。
  3. 单击左侧菜单栏的“缓存管理”。
  4. 在“缓存管理”页面,单击DCS缓存实例的名称。
  5. 在缓存实例的“基本信息”栏中单击带宽后的“调整带宽”。

    图3 调整带宽

  6. 在“调整带宽”页面,选择“自动弹性带宽调整”。
  7. 开启“自动带宽扩展”并根据需要设定自动带宽扩容策略,如表2

    系统会根据您设定的自动带宽扩容策略自动执行带宽扩展,如果触发带宽扩展,单分片最高可扩展至2048Mbit/s。如果您已对实例带宽进行过手动调整,自动弹性带宽调整结果会覆盖已手动调整的结果。

    图4 设置自动带宽扩容策略
    表2 设定自动带宽扩容策略

    带宽扩容策略

    取值样例

    说明

    瞬时带宽使用率不小于

    70%

    触发带宽自动扩容的瞬时带宽使用率阈值,单位:%。

    计算公式:

    瞬时带宽使用率=瞬时使用带宽/分片带宽。该公式中的“瞬时使用带宽”取监控指标“网络瞬时输出流量”和“网络瞬时输入流量”中较大的值。

    扩容目标:

    当实例单分片的瞬时带宽使用率达到设置的阈值时,会触发该分片带宽自动扩容,扩容后瞬时带宽使用率会降低到比设置的阈值低10%。

    例如将该阈值设置为70%,则当分片的瞬时带宽使用率达到70%时,会触发该分片带宽自动扩容,扩容后的瞬时带宽使用率会降低到60%。因此,扩容后的分片带宽=瞬时使用带宽/60%。

    观测窗口

    1分钟

    带宽弹性的观测窗口,单位:分钟。默认值:1。

    例如观测窗口时间设置为1分钟时,则带宽监控数据取值为1分钟内的监控数据。

    静默时间

    0秒

    扩容操作的静默时间,单位:秒。默认值:0。

    当带宽自动扩容后,如果再次监测到瞬时带宽使用率超过阈值,实例在设置的静默时间内不会立即扩容,设置静默时间可以避免实例连续进行带宽自动扩容。

  8. 设置自动带宽扩展参数后,在“带宽调整确认”处勾选确认,再单击“确定”。

    当页面提示“自动弹性带宽策略设置成功”,设置自动弹性带宽操作完成。当触发了设置的自动调整带宽条件时,实例会自动调整带宽。用户在控制台的“后台任务”中可以查看到用户名为“system”的自动调整带宽的变更记录,如图5所示。

    图5 自动调整带宽记录

相关文档