分布式鎖不是控制併發冪等的方式

2021-09-11 09:26:08 字數 594 閱讀 4591

之前,我們**過冪等機制的實現方案,今天我們再來**下分布式鎖是不是控制併發冪等的方式? 可能由於客戶端的重複提交產生多份相同的資料,也可能因為服務端的重試機制產生多次提交。此時,單單通過防重機制是不夠的,還需要服務端的冪等機制保證唯一性。冪等機制的核心是保證資源唯一性,例如客戶端重複提交或服務端的多次重試只會產生乙份結果。支付場景、退款場景,涉及金錢的交易不能出現多次扣款等問題。事實上,查詢介面用於獲取資源,因為它只是查詢資料而不會影響到資源的變化,因此不管呼叫多少次介面,資源都不會改變,所以是它是冪等的。而新增介面是非冪等的,因為呼叫介面多次,它都將會產生資源的變化。因此,我們需要在出現重複提交時進行冪等處理。

注意的是,為了避免併發場景,我們可以通過鎖機制,例如悲觀鎖與樂觀鎖保證資料的唯一性。這裡,分布式鎖是一種經常使用的方案,它通常情況下是一種悲觀鎖的實現。但是,很多人經常把悲觀鎖、樂觀鎖、分布式鎖當作冪等機制的解決方案,這個是不正確的。併發控制只是保證臨界區資源的安全,不出現髒資料,如果併發控制,多次提交是合法的,只是業務方面不合法,所以做冪等控制 。

因此,通過分布式鎖不是控制併發冪等的方式,需要在提交記錄的時候通過冪等機制保證資料的唯一性,確保不論如何設定超時時間,都不會出現冪等控制的問題。

(完)

分布式高併發服務 冪等性

重複訊息是soa服務實現中非常常見的問題,你永遠不要指望呼叫方每次請求訊息不一樣,對於讀操作,重複訊息可能無害,可對於寫操作很可能就是災難。可以通過冪等 idempotent 模式處理重複的訊息,基本處理思路是 1 呼叫者給訊息乙個唯一請求id標識。id標識乙個工作單元,這個工作單元只應執行一次,工...

分布式 冪等性

現在你的服務提供一些外部介面呼叫,然後你這個服務又是部署在多台機器上的,然後前端在操作的時候正好呼叫了請求,假如我們的業務功能是扣款,然後在負載均衡的時候你的請求被傳送到不同的機器上,所以你需要保證的就是同樣的一次請求只能成功一次,另外的需要丟棄調。那麼如何保證分布式環境下的冪等性呢?保證冪等性主要...

冪等性 經典分布式鎖應用分析

重複提交 重複提交是在第一次請求成功的情況下,人為的進行多次操作,從而導致不滿足冪等性要求的服務多次改變資料狀態。冪等 更多使用的情況是第一次請求知道結果 比如常見的網路抖動導致連線超時 或者失敗異常情況下,發起多次請求的,其目的是多次確認第一次請求成功,卻不會因為多次請求而出現多次的狀態變化。今天...