ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

亿级流量电商详情页系统实战-25.亿级流量商品详情页的多级缓存架构介绍

2021-02-05 10:06:30  阅读:124  来源: 互联网

标签:缓存 访问 redis 流量 nginx 详情页 本地 亿级 数据


1.前言

很多人以为,有了redis缓存,就可以支持对高并发的业务场景了。其实做复杂的缓存,如支撑电商复杂的场景下的高并发的缓存,遇到的问题是非常非常之多,绝对不是说简单的访问一下redis就可以了。

2.介绍

  • 时效性要求高的,如商品价格/库存等,采取相关的服务系统每次发生了变更的时候,直接采取数据库和redis缓存双写的方案,这样缓存的时效性最高。

  • 时效性要求不高的数据,如商品的基本信息(名称、颜色、版本、规格参数,等等),采取MQ异步通知的方式,写一个数据缓存生产服务,监听MQ消息,然后异步拉取服务的数据,更新本地缓存+redis缓存。

  • 对于热数据的高并发访问,一般来说,商品的购买总是有热点的,比如每天购买iphone、nike、海尔等知名品牌的东西的人,总是比较多的, 一般采用三级缓存:nginx本地缓存+redis分布式缓存+tomcat堆缓存的多级缓存架构。

    (1) nginx+lua脚本做页面动态生成的工作,每次请求过来,优先从nginx本地缓存中提取各种数据,结合页面模板,生成需要的页面

    (2) 如果nginx本地缓存过期了,那么就从nginx到redis中去拉取数据,更新到nginx本地

    (3) 如果redis中已被LRU算法清理掉了,那么就从nginx走http接口到后端的服务中拉取数据,数据缓存生产服务中,在本地ehcache缓存中找,如果也被LRU清理掉了,那么就重新发送请求到源头的服务中去拉取数据,然后再次更新ehcache缓存+redis缓存,并返回数据给nginx,nginx缓存到本地

3.多级缓存架构中每一层的意义

  • nginx本地缓存
    抗的是热数据的高并发访问,一般来说,商品的购买总是有热点的,比如每天购买iphone、nike、海尔等知名品牌的东西的人,总是比较多的。这些热数据,利用nginx本地缓存,由于经常被访问,所以可以被锁定在nginx的本地缓存内。大量的热数据的访问,就是经常会访问的那些数据,就会被保留在nginx本地缓存内,那么对这些热数据的大量访问,就直接走nginx就可以了。那么大量的访问,直接就可以走到nginx就行了,不需要走后续的各种网络开销了

  • redis分布式大规模缓存
    抗的是很高的离散访问,支撑海量的数据,高并发的访问,高可用的服务。redis缓存最大量的数据,最完整的数据和缓存,1T+数据; 支撑高并发的访问,QPS最高到几十万; 可用性,非常好,提供非常稳定的服务。
    (1) nginx本地内存有限,也就能cache住部分热数据,除了各种iphone、nike等热数据,其他相对不那么热的数据,可能流量会经常走到redis那里
    (2) 利用redis cluster的多master写入,横向扩容,1T+以上海量数据支持,几十万的读写QPS,99.99%高可用性,那么就可以抗住大量的离散访问请求

  • ehcache本地内存缓存
    主要是抗redis大规模灾难的,如果redis出现了大规模的宕机,导致nginx大量流量直接涌入数据生产服务,那么最后的本地缓存至少可以再抗一下,不至于让数据库直接裸奔,同时也可以抗住redis没有cache住的最后那少量的部分缓存

标签:缓存,访问,redis,流量,nginx,详情页,本地,亿级,数据
来源: https://blog.csdn.net/weixin_42868638/article/details/113654258

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有