內(nèi)容目錄:
工作中經(jīng)常會遇到爭搶共享資源的場景,比如用戶搶購秒殺商品,如果不對商品庫存進行保護,可能會造成超賣的情況。超賣現(xiàn)象在售賣火車票的場景下更加明顯,兩個人購買到同一天同一輛列車,相同座位的情況是不允許出現(xiàn)的。交易系統(tǒng)中的退款同樣如此,由于網(wǎng)絡(luò)延遲和重復(fù)提交極端時間差的情況下,可能會造成同一個用戶重復(fù)的退款請求。以上無論是超賣,還是重復(fù)退款,都是沒有對需要保護的資源或業(yè)務(wù)進行完善的保護而造成的,從設(shè)計方面一定要避免這種情況的發(fā)生。
本文以退款交易場景入手,引入分布式鎖,嘗試分析分布式鎖需要考慮關(guān)注點,包括以下內(nèi)容:
鎖的引入和局限性
分布式鎖的三要素
分布式鎖進階
獲取鎖操作的原子性
鎖與保護共享資源的數(shù)據(jù)一致性
分布式鎖的性能
可重入
公平鎖和非公平鎖
分布式鎖的容錯,使用分布式鎖時注意考慮哪些問題