系统名:电商系统
主要功能:
商品详情页:
一开始这个页面很简单,只包括商品的图片、介绍、规格、评价等。刚开始,这个页面打开很快,系统运行平稳可靠。
后来,页面中加了商品推荐,即在商品详情页后面显示一些推荐商品的列表。
再后来,页面中加入了最近成交情况,即显示一下某人在什么时候下单了。
接着,页面中又加入了优惠活动,即显示这个商品都可以参加哪些优惠活动。
数据量:这个系统里面有5万多条商品数据,数据量并不大
问题描述:
系统里面仅有5万多条商品数据,数据量并不大,但是每次用户浏览商品详情页时都需要几十条SQL语句,经常出现十几秒才能打开详情页的情况。
通过第三方监控工具,从国内各地监控系统几个关键路径的性能。其中一个关键路径是从首页到搜索再到商品详情页的时长,这个平均时长从刚开始的3.61秒逐渐变成后来的15.53秒。
优化方案:
把大部分商品的详情数据缓存起来,少部分的数据通过异步加载。比如,最近的成交数据通过异步加载,即用户打开商品详情页以后,再在后台加载最近的成交数据,并显示给用户。
优化结果:
分布式缓存系统上线后,商品详情页的大部分数据存到了Redis中,并且一些数据的读取改为异步请求,优化效果非常明显:
打开详情页基本只需要1秒;
而后台监控这个详情页的API(从缓存中取数据的那个API),平均响应时长变为10毫秒以内;
监控数据中,从首页到搜索再到详情页的平均时长变成了4秒左右。