【重復處理】CRUD接口冪等性處理

保證冪等性的核心思想:通過唯一的業務單號保證冪等

  1. 非并發情況下,查詢業務單號有沒有操作過,沒有則執行操作
  2. 針對第一次執行業務時間,有大量并發情況下,整個操作過程加鎖,通過分布式鎖來加鎖
  3. Select操作:不會對業務數據有影響,天然冪等
  4. Delete操作:第一次已經刪除,第二次刪除也不會有影響
    • 根據唯一的業務號刪除,第一次刪除時間,已將數據刪除,第二次再次執行時間,由于找不到相應嘉璐,所以delete刪除的結果式0,對業務數據沒有影響,可在刪除前進行數據庫查詢
    • 刪除操作沒有唯一業務號,則要看具體的業務需求,如刪除未審核的數據,此時多次刪除,可能會有新的未審核的數據,此時如果依然需要保證冪等性,就需要使用token機制來實現
  5. Update操作:更新操作傳入數據版本號,通過樂觀鎖實現冪等性
    • 更新操作如果每次都是相同的值,那么不需要保證冪等性,因為值一樣
    • 更新的字段的值操作是變化的,那么就會有影響,此時就是通過傳入版本號來實現
    update set version=version+1, xxx=${xxx} where id = xxx and version = ${version}
    
    上述語句在mysql執行時間,是有行鎖的,是串行的,及時有多次提交,那么版本號不一致的情況下,也是無法完成update,即實現了冪等
  6. Insert操作:此時沒有唯一業務號的,使用Token保證冪等
    • 有唯一業務號的操作,例如:秒殺場景下,商品ID+用戶ID必須是唯一的通過分布式鎖,保證并發情況下只有一個請求能夠生成記錄,然后通過數據庫的唯一索引控制數據商品ID+用戶ID只能有一條記錄,保證接口冪等,業務執行完后,不進行分布式鎖釋放,讓其過期自動釋放,重拾請求在鎖失效前,獲得不到鎖,也就失敗了
    • 沒有業務號的操作,如注冊、點擊多次等,使用Token機制,保證冪等性,在進入到注冊頁時,后臺統一生成Token,返回前臺的隱藏域中。用戶提交時間,將Token一同傳入后臺使用Token作為分布式鎖的key來獲取分布式鎖,完成insert操作,執行成功后,不釋放鎖,等待過期自動釋放,拿不到分布式鎖的則無法進行操作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40675.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40675.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40675.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

時序預測 | MATLAB實現基于CNN-BiGRU卷積雙向門控循環單元的時間序列預測-遞歸預測未來(多指標評價)

時序預測 | MATLAB實現基于CNN-BiGRU卷積雙向門控循環單元的時間序列預測-遞歸預測未來(多指標評價) 目錄 時序預測 | MATLAB實現基于CNN-BiGRU卷積雙向門控循環單元的時間序列預測-遞歸預測未來(多指標評價)預測結果基本介紹程序設計參考資料 預測結果 基本介紹 MATLAB實現基于…

Dubbo基礎學習

目錄 第一章、概念介紹1.1)什么是RPC框架1.2)什么是分布式系統1.3)Dubbo概述1.3)Dubbo基本架構 第二章、服務提供者(直連)2.1)目錄結構和依賴2.2)model層2.3)service層2.4)resources…

【eNSP】交換機(vlan和vlan間通信)

【eNSP】交換機(vlan和vlan間通信) 原理術語過程 實驗根據圖片連接模塊配置設備名稱和IP地址配置交換機交換機鏈路指定sw1配置sw2配置 設置網關交換機互聯實驗設置查看設置結果 ospf配置 原理 HUB集線器:它的作用可以簡單的理解為將一些機器…

【算法系列篇】雙指針

文章目錄 前言什么是雙指針算法1.移動零1.1 題目要求1.2 做題思路1.3 Java代碼實現 2.復寫零2.1 題目要求2.2 做題思路2.3 Java代碼實現 3.快樂數3.1 題目要求3.2 做題思路3.3 Java代碼實現 4.盛最多水的容器4.1 題目要求4.2 做題思路4.3 Java代碼實現 5.有效三角形的個數5.1 題…

k8s 自身原理 4

前面咱們分享了 mater 和 worker 節點里面都有哪些組件,他們又是各自主要負責的工作是什么,現在我們心里應該都有數了吧 master 節點: etcd 存儲資源配置,ApiServer 提供 RESTful Api 用于交互,scheduler 用于調度 p…

VS2019 + Qt : setToolTip的提示內容出現亂碼

VS2019 Qt : setToolTip的提示內容出現亂碼 在使用setToolTip()時, setToolTip(QString("asd你好!");標簽提示只有英文是對的,中文是亂碼! 應該是編碼出了問題。默認情況下,Qt使用的是UTF-8編碼&#xf…

踩坑經驗:JavaScript 中的 for...of 和 for...in 循環

在 JavaScript 編程中,for...of 和 for...in 是常用的循環語法,但它們在使用時可能會引發一些意想不到的問題。本文將分享我在使用這兩種循環時所遇到的坑和經驗。 兩者的區別: 適用對象類型: for…of:主要用于遍歷可…

數據結構-帶頭雙向循環鏈表的實現

前言 帶頭雙向循環鏈表是一種重要的數據結構,它的結構是很完美的,它彌補了單鏈表的許多不足,讓我們一起來了解一下它是如何實現的吧! 1.節點的結構 它的節點中存儲著數據和兩個指針,一個指針_prev用來記錄前一個節點…

Git詳解及使用

Git簡介 Git 是一種分布式版本控制系統,它可以不受網絡連接的限制,加上其它眾多優點,目前已經成為程序開發人員做項目版本管理時的首選,非開發人員也可以用 Git 來做自己的文檔版本管理工具。 大概是大二的時候開始接觸和使用Gi…

云計算——ACA學習 云計算核心技術

作者簡介:一名云計算網絡運維人員、每天分享網絡與運維的技術與干貨。 座右銘:低頭趕路,敬事如儀 個人主頁:網絡豆的主頁????? 寫在前面 本系列將會持續更新云計算阿里云ACA的學習,了解云計算及網絡安全相關…

DeepSpeed加速大模型訓練

DeepSpeed是微軟推出的一個框架,可以對Pytorch的模型進行包裝,提供了加快模型的訓練速度,降低對GPU顯存的占用,以及方便進行分布式訓練等等高級特性。在這里我也對DeepSpeed進行了測試,看看是否能提高我的transformer模…

Maven 插件 maven-antrun-plugin 執行 ant 腳本

Ant 相信大家都不陌生,你可以把它理解為使用 xml 格式描述的一系列命令處理工具。它是一種基于Java的build工具。理論上來說,它有些類似于(Unix)C中的make、有些類似于基于shell命令編寫的sh腳本文件。Ant 用 Java 的類來擴展。&a…

多維時序 | MATLAB實現PSO-CNN-BiLSTM多變量時間序列預測

多維時序 | MATLAB實現PSO-CNN-BiLSTM多變量時間序列預測 目錄 多維時序 | MATLAB實現PSO-CNN-BiLSTM多變量時間序列預測基本介紹模型特點程序設計參考資料 基本介紹 本次運行測試環境MATLAB2021b,MATLAB實現PSO-CNN-BiLSTM多變量時間序列預測。代碼說明&#xff1a…

Java mail郵件開發 OA辦公系統

目錄 1 Java mail郵件開發 OA辦公系統 1.1 //用戶登錄 1.2 //用戶注冊 1.3 //根據郵箱賬號查詢用戶ID Java mail郵件開發 OA辦公系統package com.email.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement;<

POSTGRESQL 關于2023-08-14 數據庫自動啟動文章中使用KILL 來進行配置RELOAD的問題解釋...

開頭還是介紹一下群&#xff0c;如果感興趣Polardb ,mongodb ,MySQL ,Postgresql ,redis &#xff0c;SQL SERVER ,ORACLE,Oceanbase 等有問題&#xff0c;有需求都可以加群群內有各大數據庫行業大咖&#xff0c;CTO&#xff0c;可以解決你的問題。加群請加 liuaustin3微信號 &…

Oracle執行計劃

Oracle執行計劃 1. 什么是執行計劃Oracle explain使用3. Explain執行順序 1. 什么是執行計劃 執行計劃是一條查詢語句在Oracle中的執行過程或訪問路徑的描述。 執行計劃描述了SQL引擎為執行SQL語句進行的操作&#xff1b;分析SQL語句相關的性能問題或僅僅質疑查詢優化器的決定…

蔚來李斌賣手機:安卓系統,蘋果售價,一年一發

?作者 | Amy 編輯 | 德新 車圈大佬的玩法真讓人尋不著套路&#xff01; 蘋果的庫克和小米的雷布斯&#xff0c;甚至是FF賈老板準備許久&#xff0c;都想分一塊新能源車的蛋糕&#xff0c;蔚來李斌卻反手進軍手機界&#xff0c;從宣布造手機到手機入網僅僅隔了一年。 近期…

說幾個常見的語法糖

目錄 面試回答 知識擴展 如何解語法糖&#xff1f; 糖塊一、swith 支持 String 與枚舉 糖塊二、泛型 糖塊三、自動裝箱與拆箱 糖塊四、枚舉 糖塊五、條件編譯 糖塊六、斷言 糖塊七、數值字面量 糖塊八、for-each 糖塊九、try-with-resource 可能遇到的坑 泛型 自…

Beats:安裝及配置 Metricbeat (一)- 8.x

在我之前的文章&#xff1a; Beats&#xff1a;Beats 入門教程 &#xff08;一&#xff09;Beats&#xff1a;Beats 入門教程 &#xff08;二&#xff09; 我詳細描述了如何在 Elastic Stack 7.x 安裝及配置 Beats。在那里的安裝&#xff0c;它通常不帶有安全及 Elasticsearc…

MapReduce介紹

目錄 ?一、什么是MapReduce 二、MapReduce 的設計思想 2.1 分而治之 2.2 構建抽象模型&#xff1a;Map和Reduce 2.3 隱藏系統層細節 三、MapReduce 的框架原理 3.1 MRv1工作原理 3.1.1 MRv1架構工作原理圖 3.1.1.1 流程說明 3.1.1.1.1 作業的提交 3.1.1.1.2 作業的初始化 3…