.

经典案例分析

传统主从版、集群版Redis,在面对读多写少的场景时,要么力不从心,要么发生资源浪费

产品定义

云数据库Redis版读写分离版是什么:

为满足读多写少的业务场景,最大化节约用户成本,阿里云Redis推出了读写分离版本,为用户提供透明、高可用、高性能、高灵活的读写分离服务。阿里云Redis读写分离版最高支持10万写QPS,60万读QPS。

架构解读

读写分离版本采取链式复制架构 ,可以通过扩展只读实例个数使整体实例性能线性增长;同时依赖于阿里云Apsaracache 针对Redis复制流程的特定优化,可以最大程度的提升线性复制的系统稳定性。

应用和云数据库Redis读写分离版建立连接,Proxy会自动识别客户端发起的读写请求类型,按照权重作负载均衡,将请求转发到不同的数据节点中,写请求转发给主节点,读操作转发给相应的只读节点。

备节点作为热备节点不对外提供服务。只读节点承担读请求,Proxy按权重(目前权重由系统分配,暂时不支持自定义)将读写请求转发到主节点或者某个只读节点上。

HA系统自动监控各节点的健康状态,异常时发起主备切换或重搭只读节点,并更新相应的路由及权重信息。

点击此处,了解详细架构解读>>

读写分离特点

透明全兼容

用户只需要购买读写分离规格的实例,直接使用任何客户端即可直接使用,业务不用做任何修改就可以开始享受读写分离服务带来的巨大性能提升,接入成本几乎为0

高可用

HA监控所有DB节点的健康状态,proxy也实时感知每个readonly slave的状态。保证节点异常恢复,proxy和HA一起做到尽量减少业务对后端异常的感知,提高服务可用性

高性能

单主规格提供了最大60W读qps,10万写QPS,最大带宽192MByte,连接数最大60000,在完全兼容所有Redis命令的情况下突破单机的性能限制

节约成本

避免了读多写少场景中使用集群版本时,分片节点的资源浪费,成本节约30%以上

读写分离实战应用

秒杀的特征:

秒杀活动对稀缺或者特价的商品进行定时,定量售卖,吸引成大量的消费者进行抢购,但又只有少部分消费者可以下单成功。因此,秒杀活动将在较短时间内产生比平时大数十倍,上百倍的页面访问流量和下单请求流量。

秒杀的特征:

· 秒杀前:用户不断刷新商品详情页,页面请求达到瞬时峰值。
· 秒杀开始:用户点击秒杀按钮,下单请求达到瞬时峰值。
· 秒杀后:一部分成功下单的用户不断刷新订单或者产生退单操作,大部分用户继续

云数据库Redis版在电商秒杀系统中的解决方案 点击此处查看详细解决方案>>

1.秒杀的关键步骤:

利用阿里云读写分离Redis缓存拦截流量,CDN是第一级流量拦截,第二级流量拦截使用读写分离的阿里云Redis。在这一阶段主要读取数据,读写分离Redis能支持高大60万以上QPS,完全支持需求。

2.秒杀的订单处理:

利用主从版Redis缓存加速库存扣量并实现异步下单入库,使用阿里云主从版Redis来进行库存扣量,避免直接访问数据库,扣量完成后,进行订单入库。当秒杀的商品是1万,甚至10万级别,那数据库锁冲突将带来很大的性能瓶颈。因此,利用消息队列组件,当秒杀服务将订单信息写入消息队列后,即可认为下单完成,避免直接操作数据库。

3.秒杀的前期准备:

利用浏览器缓存和CDN抗压静态页面流量,对秒杀商品详情页尽量静态化,除了秒杀按钮需要服务端进行动态判断,其他的静态数据可以缓存在浏览器和CDN上。保障秒杀前刷新页面导致的流量进入服务段的流量只有很小的一部分。

读写分离规格产品推荐

1G规格(1个只读节点)

最大连接数20000

最大吞吐 20MByte

220元/月

4G规格(3个只读节点)

最大连接数40000

最大吞吐 96MByte

1090元/月

8G规格(3个只读节点)

最大连接数40000

最大吞吐 96MByte

2080元/月

16G规格(5个只读节点)

最大连接数60000

最大吞吐 192MByte

5670元/月