# 034. redis 阶段性总结:1T 以上海量数据+10 万以上 QPS 高并发+ 99.99% 高可用

# 讲解 redis 是为了什么?

本课程主题:高并发、亿级流量、高性能、海量数据的场景,电商网站的商品详情页系统的缓存架构

商品详情页系统,大型电商网站,会有很多部分组成,但是支撑高并发、亿级流量的,主要就是其中的大型的缓存架构,在这个大型的缓存架构中,redis 是最最基础的一层

高并发,缓存架构中除了 redis,还有其他的组成部分,但是 redis 至关重要,因为大量的离散请求,随机请求

  • 离散请求:各种你未知的用户过来的请求,上千万用户过来访问,每个用户访问 10 次;
  • 集中式请求:1 个用户过来,一天访问 1 亿次

大量的离散请求场景下,支撑商品展示的最重要的,就是 redis cluster,去抗住每天上亿的请求流量,支撑高并发的访问

redis cluster 在整个缓存架构中,如何跟其他几个部分搭配起来组成一个大型的缓存系统,后面再讲

# 讲解的 redis 可以实现什么效果?

我之前一直在 redis 的各个知识点的讲解之前都强调一下,我们要讲解的每个知识点,要解决的问题是什么?

比如 持久化、复制(主从架构)、哨兵(高可用,主备切换)、redis cluster(海量数据+横向扩容+高可用/主备切换)

  • 持久化:高可用的一部分

    在发生 redis 集群灾难的情况下(比如说部分 master + slave 全部死掉了),如何快速进行数据恢复,快速实现服务可用,才能实现整个系统的高可用

  • 复制:主从架构

    master -> slave 复制,读写分离的架构,写 master,读 slave,横向扩容 slave 支撑更高的读吞吐,

    主要解决读高并发,10万,20万,30万,上百万,QPS,横向扩容

  • 哨兵:高可用

    结合主从架构使用,在 master 故障的时候,快速将 slave 切换成 master,实现快速的灾难恢复,实现高可用性

  • redis cluster:

    多 master 读写、数据分布式的存储、横向扩容、水平扩容、快速支撑高达的数据量 + 更高的读写 QPS、自动进行 master -> slave 的主备切换,高可用

这几块知识讲解完之后,就明白了:是让底层的缓存系统(redis),实现能够任意水平扩容,支撑海量数据(1T+,几十 T,10G * 600 redis = 6T),支撑很高的读写 QPS(redis 单机在几万 QPS,10 台,几十万 QPS),高可用性(给我们每个 redis 实例都做好 AOF+RDB 的备份策略+容灾策略,slave -> master 主备切换)

最终实现:1T+ 海量数据、10 万+ 读写 QPS、99.99% 高可用性

# redis 的第一套企业级的架构

如果你的数据量不大,单 master 就可以容纳,一般来说你的缓存的总量在 10G 以内就可以,那么建议按照以下架构去部署 redis

  • redis 持久化
  • 备份方案
  • 容灾方案
  • replication(主从 + 读写分离)
  • sentinal(哨兵集群,3 个节点,高可用性)

这套方案可以支撑:

  • 数据量在 10G 以内
  • 写 QPS 在几万左右
  • 读 QPS 可以上 10 万以上(随你的需求,水平扩容 slave 节点就可以)
  • 可用性在 99.99%

# redis 的第二套企业级架构

如果你的数据量很大,比如我们课程的 topic,大型电商网站的商品详情页的架构(对标那些国内排名前三的大电商网站,如 *宝,*东,*宁易购),数据量是很大的,需要支撑海量数据

那么就建议使用 redis cluster,多 master 分布式存储数据,水平扩容,

  • 数据量 1T+ 以上没问题,只要扩容 master 即可
  • 上 10万 的读写 QPS,99.99% 高可用性

TIP

redis cluster 读写分离支持不太好,readonly 才能去 slave 上读, 所以只需要横向扩容 master 即可

支撑 99.99% 可用性,也没问题,slave -> master的主备切换,冗余 slave 去进一步提升可用性的方案(每个 master 挂一个 slave,但是整个集群再加个 3 个 slave 冗余一下)

我们课程里,两套架构都讲解了,后续的业务系统的开发,主要是基于 redis cluster 去做

从架构的角度,我们的 redis 是可以做到的,水平扩容,只要机器足够,到 1T 数据量,50 万读写 QPS,99.99%

# 我们现在课程讲解的项目进展到哪里了?

我们要做后续的业务系统的开发,redis 的架构部署好是第一件事情,也是非常重要的,也是你作为一个架构师而言,在对系统进行设计的时候,你必须要考虑到底层的 redis 的并发、性能、能支撑的数据量、可用性

redis:水平扩容,海量数据,上 10 万的读写 QPS,99.99% 高可用性

从架构的角度,我们的 redis 是可以做到的,水平扩容,只要机器足够,到 1T 数据量,50 万读写 QPS,99.99%

正式开始做大型电商网站的商品详情页系统,大规模的缓存架构设计