微信紅包池以及庫存設計思考

2021-10-01 09:18:31 字數 1475 閱讀 2724

庫存設計:

乙個商品主表 ------------    

100條庫存記錄,每各庫存記錄49個庫存;額外一條保障庫存記錄有100個庫存100個  一共101條庫存記錄;共5000庫存

如何實現下單功能:

1 如何實現減庫存

2 如何確保快速獲取到庫存個數大於0的庫存記錄並實現減庫存

3 如何保障5000庫存均被消費  

寫請求直接到庫        讀請求走快取,實時性延遲處理    新增商品確保每個stock有一定的數量,比如下限100,如果小於100可能衍生成為普通庫存記錄【1條記錄】

market

id product_id            stock  label

1                 12       0

1                 22       0

1                 32       0

1                 0        0

1                 0        0

1                 1        0

1                 12       0

1                 45       0

1                 21       1 // 表示優先順序較低的庫存,防止併發都到了某一條庫存記錄,導致存在庫存但減庫存失敗            

如何減庫存?

減庫存領域幹減庫存這個事情,如何設計?

data = select * from market where stock > 0 and label = 0 and product_id =1 limit 0,1

if data!=null

success = update market set stock = stock - 1 where stock >= 1 and id = ?

if success

return

else

ok = update market set stock = stock - 1 where stock >= 1 and label = 1  and id = ?

if ok:

return 

else:

throw new exception("庫存不足")

else:                            

ok = update market set stock = stock - 1 where stock >= 1 and label = 1  and id = ?

if ok:

return 

else:

throw new exception("庫存不足")

下單成功後,將請求減少命令非同步發給redis  【造成現象,使用者看到庫存下單提示庫存沒有】

微信紅包系統設計 優化

中小 分享到 qq空間 人人網豆瓣網 開心網更多 0講師 jeri 核心功能 目標 搖 搖的流暢 快 搶的要快 爽 拆的爽 穩 能分享出去 系統難點 1.中國運營商網路環境複雜,覆蓋面廣,春節期間網路吃緊,容易出現網路故障 2.在尖峰搖時如何避免服務雪崩 3.在服務資源有限時,如何提供柔性服務 4....

微信紅包的設計實現

拆紅包高併發讀 併發寫網路流量峰值 對賬降級 故障恢復 拆紅包有預拆包和實時拆包2種策略 預拆包的策略在發紅包時將金額m的紅包拆分成n份,將分配好的結果放入記憶體佇列或者cache,通過incr操作在使用者搶紅包時分配預算好的紅包slot,預算的策略可以避免對共享資源的操作,減少了鎖競爭,服務本身是...

微信搶紅包架構設計

實時性 為什麼明明搶到紅包,點開後發現沒有?答 2014年的紅包一點開就知道金額,分兩次操作,先搶到金額,然後再轉賬。2015年的紅包的拆和搶是分離的,需要點兩次,因此會出現搶到紅包了,但點開後告知紅包已經被領完的狀況。進入到第乙個頁面不代表搶到,只表示當時紅包還有。分配 紅包裡的金額怎麼算?為什麼...