日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
庫存扣減還有這么多方案?

昨天一篇《庫存扣多了,到底怎么整》,核心觀點是:

成都創(chuàng)新互聯(lián)公司專注于高安網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經驗。 熱誠為您提供高安營銷型網(wǎng)站建設,高安網(wǎng)站制作、高安網(wǎng)頁設計、高安網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務,打造高安網(wǎng)絡公司原創(chuàng)品牌,更為您提供高安網(wǎng)站排名全網(wǎng)營銷落地服務。

  • 用“設置庫存”替代“扣減庫存”,以保證冪等性
  • 使用CAS樂觀鎖,在“設置庫存”時加上原始庫存的比對,避免數(shù)據(jù)不一致

原以為兩個核心觀點應該是沒有疑義的,結果很多朋友說方案不好,今天交流下部分回復的方案,個人的一些看法。

留言一

是否能使用

 
 
 
 
  1. update stock set numnum=num-$count where sid=$sid and stock>=$count; 

的方式扣減庫存?

回答:這個方案無法保證冪等性,有可能出現(xiàn)重復扣減。

留言二

把庫存放到reids里,利用redis的事務性來扣減庫存。

分析:

redis是如何實現(xiàn)事務操作的?

本質也是樂觀鎖。

在redis客戶端執(zhí)行:

 
 
 
 
  1. $num = GET key 
  2. $num = $num - $count 
  3. SET key $num 

在并發(fā)量大的時候,會遇到和《庫存扣多了,到底怎么整》文章中一樣的并發(fā)一致性問題。

redis的WATCH和EXEC可以提供類似事務的機制:

  • WATCH觀察key是否被改動
  • 如果提交時key被改動,EXEC將返回null,表示事務失敗

上面保證一致性的庫存扣減可能類似于這樣執(zhí)行:

 
 
 
 
  1. WATCH key 
  2. $num = GET key 
  3. $num = $num - $count 
  4. MULTI 
  5. SET key $num 
  6. EXEC 

在WATCH之后,EXEC執(zhí)行之前,如果key的值發(fā)生變化,則EXEC會失敗。

redis的WATCH為何能夠保證事務性,本質上,它使用的就是樂觀鎖CAS機制。

大部分情況下,redis不同的客戶端會訪問不同的key,所以WATCH碰撞的概率會比較小,在秒殺的業(yè)務場景,即使使用WATCH,調用側仍然需要重試。

在CAS機制這一點上,redis和mysql相比沒有額外的優(yōu)勢。

redis的性能之所以高,還是redis內存訪問與mysql數(shù)據(jù)落盤的差異導致的。內存訪問的不足是,數(shù)據(jù)具備“易失性”,如果重啟,可能導致數(shù)據(jù)的丟失。當然redis也可以固化數(shù)據(jù),難道每次都刷盤?redis真心沒法當作mysql用。

***,redis用單線程來避免物理鎖,但mysql多線程也有多線程并發(fā)的優(yōu)勢。

回答:可以使用redis的事務性扣減庫存,但在CAS機制上比mysql沒有優(yōu)勢,高性能是因為其內存存儲的原因,帶來的副作用是數(shù)據(jù)有丟失風險,具體怎么用,還得結合業(yè)務折衷(任何脫離業(yè)務的架構設計都是耍流氓)。

留言三

支持冪等能否使用客戶端token,業(yè)務流水?

能否使用時間戳,版本號來保證一致性?

回答:可以。

留言四

能否使用隊列,在數(shù)據(jù)庫側串行執(zhí)行,降低鎖沖突?

回答:可以。

留言五

能否使用事務?

回答:容易死鎖,吞吐量很低,不建議。

留言六

能否使用分布式鎖解決,例如setnx, mc, zookeeper?

回答:可以,但吞吐量真的高么。

留言七

文章重點講了冪等性和一致性,沒有深入展開講高吞吐,利用緩存抗讀請求,利用水平擴展增加性能是提升吞吐量的根本方案。

回復:很中肯。

【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉載請聯(lián)系原作者】


本文題目:庫存扣減還有這么多方案?
網(wǎng)站路徑:http://www.5511xx.com/article/dhppdpj.html