“PolarDB-X产品解决了我们社交场景中的圈子日记查询功能,每天用户在小打卡数十万的兴趣圈子中活跃,发布数百万条打卡日记,非常适合PolarDB-X的分库分表场景,降低了响应时间,提高了并发查询能力,利用异构索引表满足了我们多维度查询的需求,最近的全局二级索引解决了异构索引表数据延迟的问题。”这是来自小打卡的客户感言。
“再小的爱好都有同好”
小打卡是国内知名的兴趣社群平台,在这里,能快速发现你感兴趣的圈子;加入圈子,有达人带你玩转各种兴趣,有同好一起分享,一起成长。2017年8月公司成立至今,小打卡上已服务六千多万用户,聚集绘画、瑜伽、健身、手帐、摄影、亲子、阅读、潮玩等数百万个兴趣圈子,每天有数百万用户活跃在小打卡上,围绕各类兴趣和学习产生数百万条内容和数百万次互动。
业务挑战
基于小打卡的业务场景,面临着三个主要挑战:
-
数百万个圈子的打卡日记数据量大,客户有十亿级数据的高性能存储诉求。
-
百万级活跃用户,有高并发读写诉求,同时需要在十亿级数据存储情况下读写性能平稳。
-
圈子打卡日记业务在根据圈子做水平拆分表之后有多维度查询诉求,通过用户维度查询打卡日记。
PolarDB-X+RDS MySQL的分布式数据库解决方案
针对上述业务痛点,我们通过PolarDB-X+RDS MySQL的分布式数据库解决方案支持客户核心业务圈子打卡日记,采用PolarDB-X的水平拆分给客户提供海量数据存储能力,利用平滑扩容能力提供计算和存储的平滑扩展,可支持到百亿级数据存储和读写。
通过PolarDB-X水平拆分后,数据库业务由多个RDS MySQL承载,单个RDS业务读写压力大幅度下降,出现性能异常的时候,只影响部分用户使用,同时由于单个物理表数据量小,性能异常对系统可用性影响较小。PolarDB-X通过多个RDS MySQL承载高并发写,可支撑百亿级数据10万TPS、百万QPS的稳定读写承载。
数据库表拆分后多维度查询诉求是分布式数据库中间件的一个痛点,不按拆分键查询的SQL不能下推导致查询出现全表扫描,PolarDB-X支持全局索引,通过全局索引可以完美解决多维查询的痛点。
小打卡技术架构图
海量数据存储和扩展能力,保障核心业务稳定性与高性能
小打卡当前圈子打卡日记有10亿以上数据,每年亿级增量,基于PolarDB-X+RDS的分布式数据库解决方案给客户提供了海量数据存储和数据存储扩展能力,解决了客户的10亿级数据在单机数据库的存储瓶颈。
小打卡有几百万活跃用户,业务发展较快,高并发读是小打卡的数据库强需求,在单机RDS的情况下由于单表数据量大,会出现读性能瓶颈导致APP卡顿或者崩溃。基于PolarDB-X+RDS的分布式数据库解决方案在将表拆分成小的物理表后能提供海量数据平稳高并发读能力,保证了客户核心业务的稳定性和高性能。
小打卡的圈子打卡日记通过圈子做拆分,同时用户有看自己圈子日记的诉求,全局索引能力给小打卡客户提供了基于圈子和用户两个维度的高性能查询能力,解决了多维查询的需求。