高手之路 分布式鎖設計與實踐

2021-10-02 16:23:57 字數 689 閱讀 9297

mq訊息冪等性

在使用者對商品下單後,訂單狀態為待支付,在某一時刻使用者正在對該訂單做支付操作,商家對該訂單進行改價操作

存在問題

單點問題

官方建議

問題本質:分布式鎖是cp模型,redis集群是ap模型通過cp模型解決

儲存層產品對比-

redis

zookeeper

etcd

一致性演算法

無paxos

raft

capap

cpcp/ap

高可用主從

n+1可用

n+1可用

介面型別

客戶端客戶端

實現setnx

createephemeral

restful api

資料高可靠

分布式client+etcd

cas更新鎖租約

cas刪除鎖

提供客戶端

作業:使用etcd實現分布式鎖,提供簡易客戶端

特殊場景二:鎖沒有按照預期續租

特殊場景三:etcd內部協調發生問題

分布式 分布式鎖

本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...

Redis分布式鎖的實踐

首先說一下場景,不根據實際場景講的技術都是吹流弊,沒人反對吧,咳咳 醫院 需要盡量高效的顯示最新的資料,根據不同的科室設定不同的快取時間,因為科室的熱門程度也不一樣嘛,這裡本次只分享我學習的一些心得.思路 號源的快取是30分鐘,然後在第25的時候,如果還有患者訪問某個部門的號源,就開啟一條非同步執行...

ZooKeeper分布式鎖簡單實踐

zookeeper分布式鎖簡單實踐 在分布式解決方案中,zookeeper是乙個分布式協調工具。當多個jvm客戶端,同時在zookeeper上建立相同的乙個臨時節點,因為臨時節點路徑是保證唯一,只要誰能夠建立節點成功,誰就能夠獲取到鎖。沒有建立成功節點,就會進行等待,當釋放鎖的時候,採用事件通知給客...