Answers
我觉得这里有三个问题,1.公平,2.商品卖光,3.缓解系统压力。
公平如何保证:
- 先到先得:先来的自然要让他们进来(秒杀开始前的一律挡掉),10个商品的秒杀,秒杀开始后先来的100(经验值)个挨个进入mq,之后的挡住。然后对100挨个返回交易界面,填写信息确认。
- 防止机器人:返回的交易界面,自然要填写验证码。
商品卖光:
- 刚才说的100个,是10个商品的10倍,保证这些用户能够消费这10个商品。(当然可以利用历史数据做优化)
缓解系统压力:
- 保证前两个的前提下。当然你可以直接放1w个用户进来,但没必要。
- 只有100个用户了,对数据库的压力也就小了。用户收到交易页面后,手快的,先得。在处理他们交易的时候当然是要加锁的。 我觉得加锁有两个方法,一个是对总量n加锁,交易的时候其他用户不能改,交易完减1,另一个是对于10个变量分别加锁,这样会快一点。
自己的一点想法~~