关注
7. 100万张代金券,要把代金券发给上亿的用户,你会怎么设计这个系统?
其实就是一个库存扣减的问题,如果是为了保证库存扣减的准确性,我们设计的一个链路最好不要太长和复杂。同时也不考虑把库存放在redis里,因为redis中的异步复制和持久化机制可能会导致数据不一致的问题。所以我想的是直接操作数据库进行扣减,然后引入一个消息队列作为一个削峰的作用避免数据的访问量过高。引入消息队列的话就还需要考虑到一个消费的幂等性处理。所以整个链路应该就是用户点击领取代金卷的时候,先把用户id投递到消息队列中,然后我们后端服务器执行一个消费,消费逻辑就是开启一个数据库事务(先尝试在一张用户表中插入一条整个用户的记录——利用用户id是唯一键的特性,如果插入成功了再执行扣减库存的操作),事务提交成功了再响应用户。
缺点:整个系统处理高并发请求的时候响应会比较慢。优点:保证了库存扣减的强一致性。
其实整个取舍就是CAP理论中的C和A的取舍吧.
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 国企秋招,你投了吗? #
18211次浏览 157人参与
# 应届生第一份工作最好去大厂吗? #
23520次浏览 459人参与
# 携程求职进展汇总 #
619860次浏览 4556人参与
# 你在职场中沾染到的“坏”习惯 #
14611次浏览 119人参与
# 机械人,你最希望上岸的公司是? #
184165次浏览 1899人参与
# 拿到offer之后,可以做些什么 #
32076次浏览 192人参与
# 思朗科技求职进展汇总 #
52790次浏览 378人参与
# 海尔求职进展汇总 #
8180次浏览 35人参与
# 你会为了工作牺牲生活吗? #
43786次浏览 348人参与
# 机械只有转码才有出路吗? #
140329次浏览 1629人参与
# 通信硬件岗投递时间线 #
25754次浏览 88人参与
# 贝壳求职进展汇总 #
28582次浏览 162人参与
# 央国企投递记录 #
111852次浏览 1451人参与
# 互联网回暖,腾讯要招5000人! #
21560次浏览 584人参与
# 入职跑路最快的一次经历 #
32104次浏览 211人参与
# 机械求职避坑tips #
64874次浏览 441人参与
# 硬件开发岗知多少 #
17428次浏览 124人参与
# ___岗狗都不干,我干! #
17445次浏览 120人参与
# 为什么国企只招应届生 #
201001次浏览 1223人参与
# kpi面有什么特征 #
79169次浏览 463人参与
# 校招谈薪技巧 #
47010次浏览 675人参与
# 歌尔求职进展汇总 #
65910次浏览 352人参与