一對一聊天平臺原始碼,實現冪等的8種方案
一、select+insert+主鍵/唯 一索引衝突
/** * 冪等處理 */ Rsp idempotent(Request req){ Object requestRecord =selectByBizSeq(bizSeq); if(requestRecord !=null){ //攔截是重複請求 log.info("重複請求,直接返回成功,流水號:{}",bizSeq); return rsp; } try{ insert(req); }catch(DuplicateKeyException e){ //攔截是重複請求,直接返回成功 log.info("主鍵衝突,是重複請求,直接返回成功,流水號:{}",bizSeq); return rsp; } //正常處理請求 dealRequest(req); return rsp; }
二、直接insert + 主鍵/唯 一索引衝突
/** * 冪等處理 */ Rsp idempotent(Request req){ try{ insert(req); }catch(DuplicateKeyException e){ //攔截是重複請求,直接返回成功 log.info("主鍵衝突,是重複請求,直接返回成功,流水號:{}",bizSeq); return rsp; } //正常處理請求 dealRequest(req); return rsp; }
三、狀態機冪等
update transfr_flow set status=2 where biz_seq=‘666’ and status=1;
Rsp idempotentTransfer(Request req){ String bizSeq = req.getBizSeq(); int rows= "update transfr_flow set status=2 where biz_seq=#{bizSeq} and status=2;" if(rows==1){ log.info(“更新成功,可以處理該請求”); //其他業務邏輯處理 return rsp; }else if(rows==0){ log.info(“更新不成功,不處理該請求”); //不處理,直接返回 return rsp; } log.warn("資料異常") return rsp: }
四、抽取防重表
五、 token令牌
六、 悲觀鎖(如select for update)
begin; # 1.開始事務 select * from order where order_id='666' # 查詢訂單,判斷狀態 if(status !=處理中){ //非處理中狀態,直接返回; return ; } ## 處理業務邏輯 update order set status='完成' where order_id='666' # 更新完成 commit; # 5.提交事務
begin; # 1.開始事務 select * from order where order_id='666' for update # 查詢訂單,判斷狀態,鎖住這條記錄 if(status !=處理中){ //非處理中狀態,直接返回; return ; } ## 處理業務邏輯 update order set status='完成' where order_id='666' # 更新完成 commit; # 5.提交事務
七、樂觀鎖
select order_id,version from order where order_id='666';
update order set version = version +1,status='P' where order_id='666' and version =1
八、分散式鎖
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69978258/viewspace-3002920/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建立訂單實現冪等的一點思考
- 短影片整套原始碼,如何實現冪等性校驗?原始碼
- 什麼是冪等性?四種介面冪等性方案詳解!
- 聊天平臺原始碼,聊天平臺如何獲取到音訊流原始碼音訊
- 短影片app原始碼,實現冪等設計的常見方式APP原始碼
- Android、IOS雙端一對一語音聊和一對一視訊聊APP,含原始碼AndroidiOSAPP原始碼
- MVCC的一種實現方案MVC
- 高併發的核心技術-冪等的實現方案
- 一對一直播平臺原始碼,如何實現圖片釋出原始碼
- 從原始碼來聊一聊hashmap原始碼HashMap
- 一對一交友app原始碼實現平臺搭建時會遇到的那些“坑”APP原始碼
- 聊一聊對跨平臺容器生態的理解
- 簡單聊一聊FutureTask的實現
- 聊聊如何實現一個帶冪等模板的Kafka消費者Kafka
- 介面冪等性如何實現?
- 一對一直播原始碼,實現一個簡單的登入介面原始碼
- 一種app模組化實現方案APP
- SpringBoot如何保證介面的冪等性?六種方案一次講清楚~Spring Boot
- 聊一聊非對稱加密在介面引數中的簡單實現加密
- 我為什麼看好一對一直播原始碼?快速搭建穩定運營的一對一語音聊平臺需要滿足哪些?原始碼
- 直播一對一原始碼書寫的後臺功能實在太重要了原始碼
- 聊一聊 EventBus 原始碼和設計之禪原始碼
- 一對一直播原始碼視訊聊天交友仿V聊富聊app定製開發!原始碼APP
- 如何保證介面的冪等性?常見的實現方案有哪些?
- 從如何編寫冪等Bash指令碼瞭解怎麼實現冪等函式? · Fatih Arslan指令碼函式
- 『等冪和唯一解定理(低1次冪陣列解碼篇)』陣列
- 聊天平臺原始碼,TextView部分文字變色原始碼TextView
- 介面服務中的冪等性設計和防重保證,詳細分析冪等性的幾種實現方法
- 一對一直播系統原始碼,後臺管理系統許可權控制方案原始碼
- 聊一聊Unity協程背後的實現原理Unity
- 一文講透訊息佇列RocketMQ實現消費冪等佇列MQ
- 一對一聊天原始碼,vue實現環形進度條元件原始碼Vue元件
- 新環境下的一對一直播原始碼如何實現夢想原始碼
- 聊一聊Java8 Optional,讓你的程式碼更加優雅Java
- 介面冪等性解決方案
- 『等冪和唯一解定理(唯一解陣列解碼篇)』陣列
- 服務冪等以及常用實現方式
- 小不生才,一對一交友原始碼抖音原始碼站在山頂等風來。原始碼