當前位置:吉日网官网 - 傳統美德 - 分布式開發中如何解決搶鎖並發現象

分布式開發中如何解決搶鎖並發現象

在系統開發過程中,經常會遇到數據重復插入、重復更新、消息重傳等問題。因為應用系統的復雜邏輯和網絡交互的不確定性,這種現象會反復出現,但有些邏輯需要具備冪等特性,否則後果會更嚴重,比如重復創建訂單,這壹次帶來的問題非同壹般。

什麽是系統的冪等性

冪等是數據中的壹個概念,意思是n次變換的結果與1次變換的結果相同。

如何在高並發系統中保證冪等性?

1.詢問

查詢API可以說是天然冪等的,因為妳查詢壹次兩次,對於系統來說沒有數據變化,所以查詢壹次和查詢多次是壹樣的。

2.MVCC計劃

多版本並發控制,帶條件更新,帶條件更新,這也是設計系統時樂觀鎖的合理選擇,會通過版本或其他條件進行樂觀鎖,保證在並發的情況下及時更新不會出現太大問題。

例如:updatetable _ xxxsetname = # name #,version = version+1 where version = # version #,或者update table _ xxxset quality = quality-# su B- quality # where quality-# su B- quality # > = 0 .

3.分開重復的表格

如果涉及到很多去重的地方,比如ERP系統中有各種業務單據,每個業務單據都需要去重。此時,可以單獨創建壹個去重表,在插入數據時,利用數據庫唯壹的索引特性,插入去重表以保證唯壹的邏輯。

4.分布式鎖

讓我們以插入數據為例。如果是分布式系統,很難建立唯壹的索引。例如,無法確定唯壹字段。這時就可以引入分布式鎖了。通過第三方系統,可以在業務系統中插入或更新數據,獲得分布式鎖,然後釋放鎖。這其實就是多線程並發鎖的思想,是分布式系統中的解決方案。

刪除數據

刪除數據,只有第壹次刪除才是真正的操作數據,第二次甚至第三次刪除直接返回成功,這樣就保證了冪等性。

6.插入數據的唯壹索引

業務主鍵可以約束插入數據的唯壹性。例如,在特定的業務場景中,唯壹性肯定是由三個字段決定的。然後,可以將唯壹的索引添加到數據庫表中進行標記。

這裏有壹個場景,API級別的冪等元,比如如何控制數據的重復提交。在這裏,您可以為提交數據的表單或客戶端軟件添加唯壹標記,然後服務器將根據此UUID刪除重復項,這樣您就可以更好地實現API級別的唯壹標記。

7.冪等狀態機

在設計與文檔相關的業務,或者與任務相關的業務時,壹定會涉及到狀態機,即業務文檔上有壹個狀態,不同情況下狀態會發生變化。壹般有壹個有限狀態機。此時,如果狀態機已經處於下壹個狀態,理論上不可能改變上壹個狀態。在這種情況下,保證了有限狀態機的冪等性。

以上是高並發系統中數據冪等解的數據整理,以後繼續補充相關知識。感謝您對本站的支持!

  • 上一篇:如何成為deus ex的專業人士?
  • 下一篇:嬰兒補鈣有什麽好處和壞處?
  • copyright 2024吉日网官网