麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

高并發系統數據冪等的解決方案

2024-08-31 01:04:05
字體:
來源:轉載
供稿:網友

前言

在系統開發過程中,經常遇到數據重復插入、重復更新、消息重發發送等等問題,因為應用系統的復雜邏輯以及網絡交互存在的不確定性,會導致這一重復現象,但是有些邏輯是需要有冪等特性的,否則造成的后果會比較嚴重,例如訂單重復創建,這時候帶來的問題可是非同一般啊。

什么是系統的冪等性

冪等是數據中得一個概念,表示N次變換和1次變換的結果相同。

高并發的系統如何保證冪等性?

1.查詢

查詢的API,可以說是天然的冪等性,因為你查詢一次和查詢兩次,對于系統來講,沒有任何數據的變更,所以,查詢一次和查詢多次一樣的。

2.MVCC方案

多版本并發控制,update with condition,更新帶條件,這也是在系統設計的時候,合理的選擇樂觀鎖,通過version或者其他條件,來做樂觀鎖,這樣保證更新及時在并發的情況下,也不會有太大的問題。

例如:update table_xxx set name=#name#,version=version+1 where version=#version# ,或者是 update table_xxx set quality=quality-#subQuality# where quality-#subQuality# >= 0 。

3.單獨的去重表

如果涉及到的去重的地方特別多,例如ERP系統中有各種各樣的業務單據,每一種業務單據都需要去重,這時候,可以單獨搞一張去重表,在插入數據的時候,插入去重表,利用數據庫的唯一索引特性,保證唯一的邏輯。

4.分布式鎖

還是拿插入數據的例子,如果是分布是系統,構建唯一索引比較困難,例如唯一性的字段沒法確定,這時候可以引入分布式鎖,通過第三方的系統,在業務系統插入數據或者更新數據,獲取分布式鎖,然后做操作,之后釋放鎖,這樣其實是把多線程并發的鎖的思路,引入多多個系統,也就是分布式系統中得解決思路。

5.刪除數據

刪除數據,僅僅第一次刪除是真正的操作數據,第二次甚至第三次刪除,直接返回成功,這樣保證了冪等。

6.插入數據的唯一索引

插入數據的唯一性,可以通過業務主鍵來進行約束,例如一個特定的業務場景,三個字段肯定確定唯一性,那么,可以在數據庫表添加唯一索引來進行標示。

這里有一個場景,API層面的冪等,例如提交數據,如何控制重復提交,這里可以在提交數據的form表單或者客戶端軟件,增加一個唯一標示,然后服務端,根據這個UUID來進行去重,這樣就能比較好的做到API層面的唯一標識。

7.狀態機冪等

在設計單據相關的業務,或者是任務相關的業務,肯定會涉及到狀態機,就是業務單據上面有個狀態,狀態在不同的情況下會發生變更,一般情況下存在有限狀態機,這時候,如果狀態機已經處于下一個狀態,這時候來了一個上一個狀態的變更,理論上是不能夠變更的,這樣的話,保證了有限狀態機的冪等。

以上就是高并發系統數據冪等的解決方案的資料整理,后續繼續補充相關知識,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美日韩后| 精品中文视频 | 天堂成人一区二区三区 | 亚洲综合视频网站 | 久久久经典视频 | 一区在线视频观看 | 亚洲精品久久久久久久久久 | 国产成人精品一区在线播放 | 成人性视频在线 | 久久精品小短片 | 国产三级a三级三级 | 欧美三级日本三级少妇99 | 国产69精品福利视频 | av免费av| 爱逼av | 中国免费一级毛片 | 精品一区二区三区在线观看视频 | 萌白酱福利视频在线网站 | 在线播放免费人成毛片乱码 | 久久网国产精品 | 涩涩激情网 | 毛片大全免费 | 欧美成人做爰高潮片免费视频 | 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 99精品视频久久精品视频 | 国产在线精品一区二区三区 | 一区在线不卡 | 久久爽久久爽久久av东京爽 | 综合在线一区 | 亚洲91网 | 国产一级免费视频 | 亚洲精品成人在线视频 | 国产精品视频yy9299一区 | 国产91丝袜在线熟 | 亚洲xxx在线观看 | 一区二区三区无码高清视频 | 色就操 | 国产四区| 久草干| 日韩av成人 | 国产精品啪 |