php - 高并发,数据库性能波动,进程如果保证完整执行完
高洛峰
高洛峰 2017-04-11 10:11:58
0
9
281

一个竞价的需求,
用户A出价后随即VIP出价,值执行左边的这个进程时,
右边也开始出价,
如何保证VIP成功,b不成功???

类似于拍卖委托人,A出价后VIP立即由系统帮着出价(同一个进程里),但在A出价与系统出价之间会有间隙(虽然在同一个进程里但还是会有间隙存在),如果在这个间隙之间B出价了,且B出的价格与系统帮vip出价的价格相容,B的出价会显示在所有用户面前(及时性的),需求就是在这个间隙不让B出价,保证vip出完价格后,才能有人出价。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(9)
刘奇

然后B出价后也有一个vip出价?

阿神

不是出价结束后去统计一下么,难道b出完价,东西就归他了?

伊谢尔伦

这不是一个事务的概念吗?

刘奇

看你这个意思好像是只要之后有VIP出价,另外一边的就不能让他出价成功啊。VIP权利至高无上。要么做个延迟吧。要么这个就和预测未来的概念差不多。

阿神

这个应该是竞拍类需求吧,截止时间到了 再计算谁最后且价格最高 或者时间、价格一样判断vip优先就可以了

阿神

给vip的用户增加权重,普通用户比如1,vip:2,这样同样120的竞价,vip=120*2,这样价高者得

小葫芦

用redis队列, 该队列的长度约束为1.
定义队列的出入列方法:
普通用户出价定义为入列, VIP出价定义为出列.

比如对一物品进行竞拍,以该物品的唯一标识建立队列。A出价成功时,入列;VIP尚未出价,B出价入列时,检测到队列长度为1,出价入列失败。当VIP出价成功时, 出列。

洪涛

谢邀。

  1. B出价 > 校验VIP是否出价(查询VIP出价记录)

  2. 已出 > B出价成功

  3. 未出 > B出价失败

看题主的描述我的理解就是一个正常的校验逻辑。


确定VIP出价资格

  1. 分布式锁,简单直接,同时只能有1人出价,可以得到A的出价记录,计算VIP的出价资格

  2. 乐观锁在出价记录中增加一个version字段,采用compare and swap机制确定VIP出价

小葫芦

锁表
A出价成功后,锁表,此表数据无法读取。
A的业务逻辑完成,解锁。

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿