php 锁的使用场景,抢购秒杀的场景使用锁个人认为不太合理?
在搶購(gòu)秒殺的構(gòu)架設(shè)計(jì)中,網(wǎng)上很多都說(shuō)為了防止超賣(mài)現(xiàn)象,應(yīng)該使用鎖機(jī)制來(lái)做,只有拿到鎖的用戶才能搶購(gòu)下單;但是我覺(jué)得這個(gè)不太合理,在高并發(fā)下使用鎖,一來(lái)造成請(qǐng)求阻塞,二來(lái)會(huì)造成搶購(gòu)的不公平現(xiàn)象。
所以我覺(jué)得正確的設(shè)計(jì)應(yīng)該是
1.搶購(gòu)商品入隊(duì)列,比如:redis隊(duì)列,10個(gè)商品隊(duì)列中就有10個(gè)元素。通過(guò)pop來(lái)取,這樣避免了超賣(mài)現(xiàn)象。能取到元素說(shuō)明搶購(gòu)成功
2.由于秒殺是高并發(fā)的,所以需要異步下單處理,同樣的可以把搶單成功的用戶也加入到隊(duì)列中比如:rabbitmq消息隊(duì)列,通過(guò)消費(fèi)者來(lái)處理訂單數(shù)據(jù)的生成
不知道還有沒(méi)有更好的解決方案?
在搶購(gòu)秒殺的構(gòu)架設(shè)計(jì)中,網(wǎng)上很多都說(shuō)為了防止超賣(mài)現(xiàn)象,應(yīng)該使用鎖機(jī)制來(lái)做,只有拿到鎖的用戶才能搶購(gòu)下單;但是我覺(jué)得這個(gè)不太合理,在高并發(fā)下使用鎖,一來(lái)造成請(qǐng)求阻塞,二來(lái)會(huì)造成搶購(gòu)的不公平現(xiàn)象。
所以我覺(jué)得正確的設(shè)計(jì)應(yīng)該是
1.搶購(gòu)商品入隊(duì)列,比如:redis隊(duì)列,10個(gè)商品隊(duì)列中就有10個(gè)元素。通過(guò)pop來(lái)取,這樣避免了超賣(mài)現(xiàn)象。能取到元素說(shuō)明搶購(gòu)成功
2.由于秒殺是高并發(fā)的,所以需要異步下單處理,同樣的可以把搶單成功的用戶也加入到隊(duì)列中比如:rabbitmq消息隊(duì)列,通過(guò)消費(fèi)者來(lái)處理訂單數(shù)據(jù)的生成
不知道還有沒(méi)有更好的解決方案?
總結(jié)
以上是生活随笔為你收集整理的php 锁的使用场景,抢购秒杀的场景使用锁个人认为不太合理?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle11g迁移到12cpdb,1
- 下一篇: linux系统qt中make安装,Lin