华为三面,如何设计一个红包系统来满足春节期间千亿级红包的收发问题?
如何设计一个红包系统来满足春节期间千亿级红包的收发问题?
本题为开放性问题,无标准答案,主要可以从以下几个不同的点对不同背景的面试人员进行考察:
业务:
面试人员是否对抢红包的业务场景的需求有足够的了解,如果没有的话,是否有足够的沟通能力从面试官那里获取需要满足的业务场景的信息(比如金额方面不能有任何差错;比如对于并发量的要求等等)
🎉业务场景可以从平常的微信红包举例,考虑到并发量和突发量,前端设计上有哪些可以减少并发量?这里后台技术就用到了削峰填谷神器–MQ。
从用户体验上设计抢红包的人先后抢到的感受,红包金额的随机性?
先计算每份金额,还是实时计算抢到红包人的金额?
底层存储:
需要存哪些数据?用什么样的存储系统 / 数据库来落盘数据?数据存储的格式是怎么样的?数据库的 schema 怎么设计?底层存储如何拆分、如何架构导致其可以处理高并发请求?
🎉数据库可以考虑mysql等关系型数据库,也可以考虑NoSql,落库时机考虑异步落库。注意数据库选型的相关问题。
缓存:
缓存应该如何设计来提高系统的性能?如果使用分布式缓存?
🎉缓存可以使用redis,但是redis数据存哪些数据需要考虑。比如提前计算好红包金额存入缓存,抢红包直接从缓存读取。
缓存高可用?部署方案区别?
缓存是否会穿透?
同步 VS 异步:
所有的操作都需要同步执行吗?有没有操作可以异步执行来减少对于用户的响应延迟?如果有的话怎么实现异步操作(比如消息队列)。
🎉落库和操作日志等可以异步完成。 选用什么消息队列?
不同的MQ区别和优劣对比。
高可用:
上述列出的组件之一如果宕机了怎么办?缓存被击穿了怎么办?怎么保证系统的高可用?系统怎么 failover?
🎉高可用可以选用集群,但是要设计怎么保证集群切换后的数据准确性?
系统运行的性能和业务指标监控也是考察点。
测试与部署:
如何压测整个系统?系统如何灰度?如何上线?
🎉 压测工具和压测用例选择。掌握多少灰度测试方案?
AB测试、蓝绿发布、金丝雀测试?
上线和应急。
如果你对这题有什么见解,欢迎在评论区讨论。
我是Pandas,专注Java编程实用技术分享,公众号《
Java实用技术手册
》和B站均有视频解说,欢迎来玩。 如果你觉得这篇文章有用,别忘了点赞+关注,一起进步!
- 点赞
- 收藏
- 关注作者
评论(0)