求问一个面试场景题
场景题:滴滴一天会有5kw订单,这些订单存在数据库中,每条记录存有时间、司机信息和金额,如何实时计算每一个司机近三十天的流水。 我的想法:可以考虑到按司机id分表,但是如果表随着时间慢慢过于大了怎么处理呢,是吧比较旧的数据做迁移冷热分离吗?还是就开个新表?另外就是怎么加快计算速度,比如司机30天内的单量可能很大,做前缀和计算or新开一个存司机累计流水的表?
全部评论
我有一个想法
在存入数据库的时候先放到redis里,再给每个数据添加司机的标签,这样每次实时查司机流水时,只需要在redis里找对应的司机标签,之后将本月账单累和。或者存到redis里的时候每次都进行累和,只保存他本月以有流水。
订单实时状态:redis 存储三种映射数据:订单 id->订单实时状态 司机 id->司机当前活跃订单id 用户 id->用户当前活跃订单 id。 这些数据都只存储活跃订单,设置过期时间,并在下一次访问时检查过期数据。 订单结束 30 分钟后转为冷订单。
kafka加flink解决,老数据离线计算
校友~
相关推荐
01-04 20:58
淮北师范大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
查看4道真题和解析