十亿级过滤十万级数据业务场景-事件预留&数据导出用户总数据量十亿级预留用户量级为十万级reservation只保存userId,需要在第二天导出reservation数据报表包含用户基本信息。用户基本信息存储在其他系统,需要交互式查询方案。总查询次数为10万次,总查询调用次数为(n*100000/单次查询数据量)用户信息如果已经分表,需要按照分表规则对userId进行分组,只每个查询检查一个子表。报告将在预约结束后的第二天凌晨生成。当业务人员点击导出时,报表文件已经生成,说明用户系统数据。体量1亿,用户数据已经分表。如果上游不进行预处理,将会对用户系统造成较大的性能消耗,进而影响整个系统的运行。因此,数据被上游提前分组;在业务层面,业务人员需要在次日工作时间内导出数据并进行下一步处理,数据生成时间将在T+1内完成。如果是实时导出数据,页面加载时间必然会很长,所以直接在凌晨生成文件。千万级数据统计业务场景——数据采集&性能计算基础数据每日增量千万级基础数据需要进一步加工成性能数据,每一种处理方式不同,耗时不同单位时间数据增量和时间范围不规则如果数学关系系统的性能不足,将无法处理大量数据。如果系统性能太高,会造成性能浪费。解决方案对于不规律的大容量增量数据,使用MQ进行性能削峰,各类数据均由MQ接收系统内部交互也使用MQ发送、接收、发布系统性能。定期删除过期数据,只保留统计结果。方案显示,最终的性能数据只需要在T+1日呈现,T日数据的接收和处理不需要实时呈现。对于不规则的大规模数据,当无法确定具体的接口性能时,使用MQ来避免这个问题。在性能方面,只需要保证当天的数据在同一天处理即可。万级QPS并发业务场景——抢购&秒杀用户抢购页面,需要查询个人信息用户抢购QPS峰值1万左右需要防止缓存崩溃,需要考虑大量请求进入DB节流以防止系统崩溃静态资源被放入缓存中。根据过往规则和用户活跃度,筛选出可能参与的用户,将用户信息放入缓存,配置布隆过滤器,优化查询路由。配置令牌桶。并发场景下,静态资源直接放入缓存,避免读库;根据用户的习惯,预先缓存一些用户数据,可以减轻数据库查找的压力;配合布隆过滤器判断请求的查询是否有效(即数据不存在或可能存在),优化查询路由;使用令牌桶预存限流抢购库存。
