優惠券如何避免超兌 引入分布式鎖

2021-10-09 16:25:49 字數 711 閱讀 5059

會員辦理月卡或簽到累積的積分,可以在指定時間段內兌換商場優惠券,由於數量有限,時間有限,兌換操作相當集中,如果按正常流程處理的話,肯定會出現超兌的情況。比如只有 5000 張券,結果兌換出 8000 張,這對商場來說是一筆經濟損失。

為防止超兌,自然做法是按總量乙個接乙個兌換,至到兌換完,但多併發的情況下如何保證還乙個乙個兌換呢?自然而然就會想到鎖上面來。提及鎖,你腦海是不是出現了一堆關於鎖的場景:死鎖、互斥鎖、樂觀鎖、悲觀鎖等等,本節介紹分布式鎖,它主要應用於分布式系統下面,單體應用基本不會涉及。

常見的實現方法分布式鎖可以基於資料庫、redis、zookeeper 等第三方工具來實現,各種不同實現方式需要引入第三方,截止目前 mysql 及 redis 已經引入到實戰中,為降低系統複雜度,我們想辦法基於這兩個機制進行分布式鎖實現。

採用資料庫實現分布式鎖,還記得前面《分布式定時任務》章節嗎?裡面就用到分布式鎖。為保證指定時刻下多例項定時任務的執行,優先通過 shedlock 的方式獲取鎖,鎖產生在公共儲存庫中,生成一條新記錄來告訴其它集群中其它例項,我正在執行,其它例項獲取到這個狀態後,自動跳過不再執行,來保證同一時刻只有乙個任務在執行。

採用 redis 實現分布式鎖。redis 提供了 setnx 指令,保證同一時刻內只有乙個請求針對同一 key 進行 setnx 操作,鑑於 redis 是單執行緒模式,依舊是先到先得,晚到不得,通過這個操作可以實現排它性的操作。

但此做法存在漏洞,操作 key 後,指令發起方

京東優惠券如何測試

一 驗證優惠券功能正常 冒煙測試 後台新增正確優惠券,審批通過,前端使用者領取並成功抵扣付款。二 發布優惠券 1 基本資訊 1 優惠券名稱 必須項,限制15字 有效等價類 1 15 1,15 前端功能。驗證顯示正確,友好,好看 無效等價類 小於1 0 大於15 16 為空 報錯友好,和諧用語 特殊邊...

優惠券實現 易維雲如何玩轉優惠券的分享裂變

如今,想玩轉分享裂變是離不開優惠福利的,送優惠券就是一種方式,那麼優惠券都有哪些特點?據建站abc了解,優惠券的本質就是商家通過折扣 滿減 抵扣等形式給使用者提供的一種優惠福利,然後通過利用使用者 佔到便宜 的心理進行營銷裂變,優惠券常見的特點有如下幾點 一 吸引新人下單 二 建立品牌口碑 對於商家...

css繪製卡券優惠券 如何使用css建立乙個優惠券

需求場景 新增優惠券類目,展示使用者的優惠券 常見的設計樣式如下圖,核心為半圓 分步拆解 網上有幾種方案 一種是boder clip的形式,裁剪出4個小半圓角,拼湊在一起 一種是radial gradient徑向漸變,相對上一種需要考慮其相容性 一種是使用背景,特點是載入稍慢,體驗比css差,相容性...