在系統開發過程中,經常遇到資料重複插入、重複更新、訊息重發傳送等等問題,因為應用系統的複雜邏輯以及網路互動存在的不確定性,會導致這一重複現象,但是有些邏輯是需要有冪等特性的,否則造成的後果會比較嚴重,例如訂單重複建立,這時候帶來的問題可是非同一般啊。
冪等是資料中得乙個概念,表示n次變換和1次變換的結果相同。
高併發的系統如何保證冪等性
查詢的api,可以說是天然的冪等性,因為你查詢一次和查詢兩次,對於系統來講,沒有任何資料的變更,所以,查詢一次和查詢多次一樣的。
多版本併發控制,update with condition,更新帶條件,這也是在系統設計的時候,合理的選擇樂觀鎖,通過version或者其他條件,來做樂觀鎖,這樣保證更新及時在併發的情況下,也不會有太大的問題。 例如update table_*** set name=#name#,version=version+1 where version=#version# ,或者是 update table_*** set quality=quality-#subquality# where quality-#subquality# >= 0 。
如果涉及到的去重的地方特別多,例如erp系統中有各種各樣的業務單據,每一種業務單據都需要去重,這時候,可以單獨搞一張去重表,在插入資料的時候,插入去重表,利用資料庫的唯一索引特性,保證唯一的邏輯。
分布式鎖
還是拿插入資料的例子,如果是分布是系統,構建唯一索引比較困難,例如唯一性的字段沒法確定,這時候可以引入分布式鎖,通過第三方的系統,在業務系統插入資料或者更新資料,獲取分布式鎖,然後做操作,之後釋放鎖,這樣其實是把多執行緒併發的鎖的思路,引入多多個系統,也就是分布式系統中得解決思路。
高併發系統資料冪等性
在系統開發過程中,經常遇到資料重複插入 重複更新 訊息重發傳送等等問題,因為應用系統的複雜邏輯以及網路互動存在的不確定性,會導致這一重複現象,但是有些邏輯是需要有冪等特性的,否則造成的後果會比較嚴重,例如訂單重複建立,這時候帶來的問題可是非同一般啊。一 系統的冪等性 冪等是資料中得乙個概念,表示n次...
高併發系統資料冪等性
在系統開發過程中,經常遇到資料重複插入 重複更新 訊息重發傳送等等問題,因為應用系統的複雜邏輯以及網路互動存在的不確定性,會導致這一重複現象,但是有些邏輯是需要有冪等特性的,否則造成的後果會比較嚴重,例如訂單重複建立,這時候帶來的問題可是非同一般啊。一 系統的冪等性 冪等是資料中得乙個概念,表示n次...
高併發系統資料冪等的技術嘗試
高併發系統資料冪等的技術嘗試 前言 在系統開發過程中,經常遇到資料重複插入 重複更新 訊息重發傳送等等問題,因為應用系統的複雜邏輯以及網路互動存在的不確定性,會導致這一重複現象,但是有些邏輯是需要有冪等特性的,否則造成的後果會比較嚴重,例如訂單重複建立,這時候帶來的問題可是非同一般啊。什麼是系統的冪...