# 121. 支撑高并发与高可用的大型电商详情页系统的缓存架构课程总结

  1. 亿级流量电商网站的商品详情页系统架构

    • 面临难题:对于每天上亿流量,拥有上亿页面的大型电商网站来说,能够支撑高并发访问, 同时能够秒级让最新模板生效的商品详情页系统的架构是如何设计的?

    • 解决方案:异步多级缓存架构 + nginx 本地化缓存 + 动态模板渲染的架构

  2. redis 企业级集群架构

    • 面临难题:如何让 redis 集群支撑几十万 QPS 高并发 + 99.99% 高可用 + TB 级海量数据 + 企业级数据备份与恢复?

    • 解决方案:redis 的企业级备份恢复方案 + 复制架构 + 读写分离 + 哨兵架构 + redis cluster 集群部署

  3. 多级缓存架构设计

    • 面临难题:如何将缓存架构设计的能够支撑高性能以及高并发到极致?同时还要给缓存架构最后的一个安全保护层?

    • 解决方案:nginx 抗热点数据 + redis 抗大规模离散请求 + ehcache 抗 redis 崩溃的三级缓存架构

  4. 数据库 + 缓存双写一致性解决方案

    • 面临难题:高并发场景下,如何解决数据库与缓存双写的时候数据不一致的情况?

    • 解决方案:异步队列串行化的数据库 + 缓存双写一致性解决方案

  5. 缓存维度化拆分解决方案

    • 面临难题:如何解决大 value 缓存的全量更新效率低下问题?

    • 解决方案:商品缓存数据的维度化拆分解决方案

  6. 缓存命中率提升解决方案

    • 面临难题:如何将缓存命中率提升到极致?

    • 解决方案:双层 nginx 部署架构 + lua 脚本实现一致性 hash 流量分发策略

  7. 缓存并发重建冲突解决方案

    • 面临难题:如何解决高并发场景下,缓存重建时的分布式并发重建的冲突问题?

    • 解决方案:基于 zookeeper 分布式锁的缓存并发重建冲突解决方案

  8. 缓存预热解决方案

    • 面临难题:如何解决高并发场景下,缓存冷启动导致 MySQL 负载过高,甚至瞬间被打死的问题?

    • 解决方案:基于 storm 实时统计热数据的分布式快速缓存预热解决方案

  9. 热点缓存自动降级方案

    • 面临难题:如何解决热点缓存导致单机器负载瞬间超高?

    • 解决方案:基于 storm 的实时热点发现+毫秒级的实时热点缓存负载均衡降级

  10. 高可用分布式系统架构设计

    • 面临难题:如何解决分布式系统中的服务高可用问题?避免多层服务依赖因为少量故障导致系统崩溃?

    • 解决方案:基于 hystrix 的高可用缓存服务,资源隔离 + 限流 + 降级 + 熔断 + 超时控制

  11. 复杂的高可用分布式系统架构设计

    • 面临难题:如何针对复杂的分布式系统将其中的服务设计为高可用架构?

    • 解决方案:基于 hystrix 的容错 + 多级降级 + 手动降级 + 生产环境参数优化经验 + 可视化运维与监控

  12. 缓存雪崩解决方案

    • 面临难题:如何解决恐怖的缓存雪崩问题?避免给公司带来巨大的经济损失?

    • 解决方案:全网独家的事前 + 事中 + 事后三层次完美缓存雪崩解决方案

  13. 缓存穿透解决方案

    • 面临难题:如何解决高并发场景下的缓存穿透问题?避免给 MySQL 带来过大的压力?

    • 解决方案:缓存穿透解决方案

  14. 缓存失效解决方案

    • 面临难题:如何解决高并发场景下的缓存失效问题?避免给 redis 集群带来过大的压力?

    • 解决方案:基于随机过期时间的缓存失效解决方案

硬件规划:这里以每日上亿流量,高峰 QPS 过 1万 来大概估计下

  • nginx 部署,因为抗了大量(百分之八九十)请求,所以负载很重,使用 16 核 32G,建议给 3~5 台以上就非常充裕了,每台抗个几千 QPS

  • 缓存服务部署,4 核 8G,按照每台 QPS 支撑 500,部署个 10~20 台

  • redis 部署,每台给 8 核 16G(原因是 redis 快照机制不能给太多内存),根据数据量以及并发读写能力来看,部署 5~10 个 master,每个 master 挂一个 slave,主要是为了支撑更多数据量,1万 并发读写肯定没问题了