每日一博 | 社区收藏缓存设计重构实战
原创 Sky 得物技术 一、背景 社区收藏业务是一个典型的读多写少的场景,社区各种核心Feeds流都需要依赖用户是否收藏的数据判断,早期缓存设计时由于流量不是很大,未体现出明显的问题,近期通过监控平台等相关手段发现了相关的一些问题,因此我们针对这些问题对缓存做了重构设计,以保障收藏业务的性能和稳定性。 二、问题分析定位 2.1 接口RT偏大 通过监控平台查看「判断是否收藏接口」的RT在最高在8ms左右,该接口的主要作用是判断指定单个用户是否已收藏一批内容,其实如果缓存命中率高的话,接口RT就应该趋近于Redis的RT水平,也就是1-2ms左右。 (图中有单根尖刺,这个具体问题要具体分析优化,我们这里主要阐述整体水平的优化) 2.2 Redis&MySQL访问QPS偏高 通过监控平台可以看到从上游服务过来的收藏查询QPS相对访问Redis缓存的QPS放大了15倍,并且MySQL查询的最高QPS占上游访问量接近37%,这说明缓存并没有很高的命中率,导致回表查询的概率还是很大。 QPS访问量见下图: Redis访问量 MySQL访问量 基于以上分析我们现在有了明确的优化切入点,接下...

