php业务的适用场景,根据业务场景寻找合适解决方案(PHP)?
系統(tǒng)環(huán)境:
Linux
PHP 7.3
ThinkPHP 6
先說一下業(yè)務(wù)場景:
訂單創(chuàng)建成功之后,每一筆訂單都需要進(jìn)行統(tǒng)計及其他業(yè)務(wù)處理。
如何及時發(fā)現(xiàn)處理失敗的訂單,然后進(jìn)行補(bǔ)單處理。
訂單所產(chǎn)生傭金的處理。
要解決以上問題,最簡單的辦法就是通過腳本定時去掃表處理。
但是掃表存在一些問題:
長時間與數(shù)據(jù)庫保持連接進(jìn)行查詢操作,消耗服務(wù)器資源。
在數(shù)據(jù)量較大或者延時較高的情況下,不能及時處理完,會影響其他業(yè)務(wù)。
想請教一下,這個場景適合用什么方案去解決?
回答
1.訂單創(chuàng)建成功之后,每一筆訂單都需要進(jìn)行統(tǒng)計及其他業(yè)務(wù)處理。
A:使用隊列異步處理。及時性不高的話,可以使用延遲隊列
2.如何及時發(fā)現(xiàn)處理失敗的訂單,然后進(jìn)行補(bǔ)單處理。
A:在邏輯層處理失敗的時候,可以起一個隊列去補(bǔ)單,如果需要強(qiáng)制保證成功,可以加ACK機(jī)制。如果要保證及時性,可以多加進(jìn)程處理隊列。
隊列就是專門干這個事情的
1.不建議由系統(tǒng)掃描處理,業(yè)務(wù)流程控制不好會容易引發(fā)并發(fā)問題,導(dǎo)致傭金多返庫存多扣。。
2.最好是能直觀的反饋出來,這里報錯了,并由技術(shù)去進(jìn)行處理。。否則的話,下次或者下下次還是會出現(xiàn)問題,有可能導(dǎo)致數(shù)據(jù)錯亂成為一團(tuán)亂麻,反而更難維護(hù)。。
3.不要想著靠程序去處理自身的bug,如果有程序不依靠人類去處理bug的一天,那將是人工智能取代人類的一天。。
消息隊列,redis rabbitmq kafka 都是成熟的隊列
總結(jié)
以上是生活随笔為你收集整理的php业务的适用场景,根据业务场景寻找合适解决方案(PHP)?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql rr 更新失败_RR 级别下
- 下一篇: 对象工厂PHP,php – 域对象工厂是