每秒十万QPS的社交APP 如何优化GC性能提升3倍
1、案例背景
本案例的背景是一个有高峰期每秒十万QPS的社交APP,这是我曾经帮助一个朋友的公司处理过的一个JVM优化的案例。
大家都知道,其实现在社交APP有很多种,不光是大家熟悉的微信、QQ之类的,还有很多细分领域的明星社交APP,诸如陌生人社交,基于地理位置的社交,等等。
其实很多明星创业社交APP产品,也有每日数百万的日活用户,尤其在晚上高峰期的时候,APP的QPS也是很高的。
附带一句,可能有的同学不知道QPS是什么,其实英文全称就是“Query Per Second”,也就是每秒钟的查询数量,大致可以理解为是APP每秒钟的访问数量。
对于这个APP而言,流量最大的是哪个功能模块?
不知道大家有没有玩儿过陌生人社交类的APP,在这种APP中操作最多的就是浏览某个陌生人的个人页面。
一般这类APP都会通过各种方式来给你推荐一些周边的陌生人,然后你可能会看到一些感兴趣的人,就会进入他/她的个人主页去看一看。个人主页里可能就包含了那个人的一些自我介绍,照片之类的东西。
所以这类APP,在晚上高峰期,流量最大的一个模块,其实就是个人主页模块
会有大量的活跃用户在一个集中的时间段内频繁的访问各种个人主页数据,而且这类数据的量还通常很大,要包含很多的信息,通常一个个人主页的数据甚至可能有几MB。
随便给大家举个例子,一个个人主页里,可能有这个人每天发的一些心情、感悟之类的东西
那么一旦要把这个个人主页加载出来,必然会加载出来这个人最近N多天发的一些心情感悟之类的文字,这个文字的量还是比较多的。
所以我们大致可以认为,一次个人主页的查询,就会加载出来比如5MB的数据。
而且一般在高峰期内,有可能一些活跃用户他可能会连续不断的去点击他感兴趣的人的个人主页,比如连续1个小时都在不停的点击。
所以其实这类社交APP他的高峰期QPS时很高的。在当时的场景中,这个社交APP流量最大的个人主页模块高峰期最多每秒会有10万+的QPS。
当然在底层存储中,这些个人主页数据一定是基于缓存来存放的,也就是基于Redis缓存来查询这些个人主页数据。
所以,综合我们分析出来的这个背景,我们在这里可以用下面一幅图来让大家
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
