看到 转:八年 phper 的高级工程师面试之路 里面的题目
6、有 100 万个奖品,每个人可以中奖 3 次,先到先得,怎么控制并发,不能发超,并保证完全的先到先得模式
答:百万奖品在打乱后预先 insert 到数据库,所有中奖操作,均只能 update,不能 insert。进来抽奖的用户使用 memcahe 原子加锁,实现抽奖次数自增,当抽奖次数到达 3 时,返回不中奖。
再问:预先插入需要很多资源,如果奖品数量上了 1 亿怎么办?
答:使用 redis 队列存储请求,跑守护进程异步发奖,产生的问题是用户无法实时看到中奖情况。
再问:这样肯定不行。
想问下,怎么解决,哪些书籍会讲解到这方面的知识
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.