日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

一個注解實現接口冪等,這樣才優雅!

來源: 責編: 時間:2023-08-05 11:46:08 5008觀看
導讀場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有問題嗎?誰能說有問題?一般情況下是沒什么問題

場景

碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

上述代碼有問題嗎?誰能說有問題?一般情況下是沒什么問題,但是在高并發的場景下肯定是存在問題,為什么?lbu28資訊網——每日最新資訊28at.com

因為有事務的隔離性,step1這個階段對住院號的校驗肯定是存在問題的,在高并發的場景下無法保證這里的校驗一定準確。lbu28資訊網——每日最新資訊28at.com

其實這個接口的并發并不高,在碼猿慢病云管理系統中一般不會出現這種問題,那么什么時候會出現呢?lbu28資訊網——每日最新資訊28at.com

醫院中大部分是內網+外網,如果由于網絡的抖動,系統請求響應的時間延遲,這樣會導致醫護操作時會出現重復點擊的情況,比如1秒中之內由于第一次點添加患者這個按鈕沒反應,往往護士都會重復點擊,這種情況下是會出現問題。lbu28資訊網——每日最新資訊28at.com

這里我們就暫且不談對單個接口的冪等優化了,要想一個方案全局解決這個問題,在碼猿慢病云管理系統中其實只要保證這種并發不高的接口在一定時間段內保證冪等即可,比如5秒之內,這樣在5秒之內護士重復點擊就沒事。lbu28資訊網——每日最新資訊28at.com

解決方案

在碼猿慢病云管理系統中新增了一個注解:@RepeatSubmit,代碼如下:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

只需要將該注解標注在新增、修改、刪除接口上就能保證在默認的5秒之內接口冪等。lbu28資訊網——每日最新資訊28at.com

比如新增住院患者這個接口:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

那么原理是什么?其實很簡單,先來說下原理,再介紹具體的實現:lbu28資訊網——每日最新資訊28at.com

  1. AOP攔截增強@RepeatSubmit注解
  2. 獲取請求的URL、IP地址、請求參數
  3. 將請求URL、IP地址、請求參數以一定形式轉為key
  4. 借助Redis的setNx命令將key存入Redis,且設置失效時間
  5. 如果存入成功則允許訪問,失敗則拋出異常
  6. 全局異常捕獲,輸出指定信息給客戶端

上述6個步驟中其實只有一點比較難實現的,其他的都是基本操作,就是獲取這個請求參數,下面將詳細介紹一下如何獲取這個請求參數。lbu28資訊網——每日最新資訊28at.com

獲取請求參數

對于form-data的入參只需要調用HttpServletRequest的API讀取,但是對于@RequestBody標注的入參是通過IO流讀取數據,且IO流只能被讀取一次,如果在AOP中讀取了,那么在接口層面的入參讀取肯定是有問題,報錯如下:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

解決方案也很簡單,只需要保證IO流能夠多次讀取即可,下面就來介紹一下方案。lbu28資訊網——每日最新資訊28at.com

這里我們可以利用裝飾者模式對 HttpServletRequest 的功能進行增強,具體做法也很簡單,我們重新定義一個 HttpServletRequest:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

這段代碼并不難,很好懂。lbu28資訊網——每日最新資訊28at.com

首先在構造 RepeatedlyRequestWrapper 的時候,就通過 IO 流將數據讀取出來并存入到一個 byte 數組中,然后重寫 getReader 和 getInputStream 方法,在這兩個讀取 IO 流的方法中,都從 byte 數組中返回 IO 流數據出來,這樣就實現了反復讀取了。lbu28資訊網——每日最新資訊28at.com

接下來我們定義一個過濾器,讓這個裝飾后的 Request 生效:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

判斷一下,如果請求數據類型是 JSON 的話,就把 HttpServletRequest “偷梁換柱”改為 HttpRequestWrapper,然后讓過濾器繼續往下走。lbu28資訊網——每日最新資訊28at.com

這樣就可以配置后就可以在程序中反復讀取參數了!lbu28資訊網——每日最新資訊28at.com

防重注解實現

解決了參數讀取的問題,下面就可以輕松實現這個防重注解了,首先定義注解com.code.ape.codeape.common.security.annotation.RepeatSubmit:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

接下來直接用AOP實現,com.code.ape.codeape.common.security.component.CodeapeRepeatSubmitAspect代碼如下:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

邏輯很簡單,上述已經介紹過完整的流程,這里需要注意的是參數的讀取,代碼如下:lbu28資訊網——每日最新資訊28at.com

圖片圖片lbu28資訊網——每日最新資訊28at.com

其實就是將request判斷下是否是經過過濾器封裝后的HttpRequestWrapper對象,如果是的話則是@RequestBody入參,直接從IO流中讀取。lbu28資訊網——每日最新資訊28at.com

總結

本節內容介紹了防重注解@RepeatSubmit的實現原理,后續開發中只需要在非查詢接口中添加這個注解就能保證在一定時間內防止重復提交。lbu28資訊網——每日最新資訊28at.com

碼猿慢病云管理系統已經在星球中陸續更新,目前更新內容如下:lbu28資訊網——每日最新資訊28at.com

前言     01 項目架構+業務介紹     02 三方組件介紹     03 服務端項目部署     04 前端項目部署     05 多租戶架構設計     06 醫療系統中的權限如何設計?     07 項目搭建     08 關掉驗證碼登錄     09 開發平臺自動生成業務代碼認證鑒權     01 認證登錄生成token     02 token檢驗、鑒權     03 token有效期設置     04 刷新token     05 檢查token     06 服務中如何獲取當前登錄用戶信息?     07 接口對外暴露     08 接口只允許內部調用怎么處理?     09 如何實現token中繼?     10 當前登錄用戶身份信息如何異步傳遞?     11 科室權限如何定一個注解自動注入?     12 一個注解防止接口重復提交業務     01 科室管理     02 醫院管理     03 角色管理

lbu28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-146-0.html一個注解實現接口冪等,這樣才優雅!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 從零到英雄:高并發與性能優化的神奇之旅

下一篇: WebRTC.Net庫開發進階,教你實現屏幕共享和多路復用!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
中文精品视频| 在线观看精品| 国产精品高潮视频| 国产麻豆精品视频| 国产专区综合网| 亚洲电影在线看| 在线亚洲观看| 欧美一区深夜视频| 欧美粗暴jizz性欧美20| 欧美视频免费在线| 国产在线视频欧美一区二区三区| 在线观看欧美精品| 一区二区三区产品免费精品久久75| 先锋影音久久久| 母乳一区在线观看| 国产精品日产欧美久久久久| 一区在线视频观看| 夜色激情一区二区| 久久精品综合网| 欧美日韩国产区一| 国产综合久久久久久| 99精品视频免费观看| 欧美影片第一页| 欧美全黄视频| 狠狠综合久久av一区二区老牛| 日韩亚洲精品视频| 久久精品国产成人| 欧美午夜无遮挡| 在线观看国产精品网站| 亚洲综合好骚| 欧美激情亚洲自拍| 国产综合一区二区| 亚洲亚洲精品在线观看| 猛男gaygay欧美视频| 亚洲午夜精品久久久久久浪潮| 久久香蕉国产线看观看av| 欧美视频精品在线| 亚洲国产成人午夜在线一区| 性久久久久久久久| 欧美日韩精品一区二区在线播放| 国产一区视频网站| 亚洲在线成人精品| 欧美日韩国产在线播放网站| 在线看不卡av| 久久福利精品| 国产精品麻豆成人av电影艾秋| 亚洲啪啪91| 久久一区二区三区四区| 国产欧美一级| 亚洲一区日韩在线| 欧美日韩国产成人精品| 亚洲丁香婷深爱综合| 久久国产精品久久久| 国产精品美女久久久免费| 99re6这里只有精品视频在线观看| 久久亚洲综合网| 国内久久精品| 欧美影院在线| 国产九区一区在线| 亚洲在线电影| 国产精品高潮在线| 99精品视频免费全部在线| 欧美波霸影院| 在线日韩精品视频| 久久久综合免费视频| 国产日韩在线不卡| 小黄鸭精品密入口导航| 国产精品丝袜白浆摸在线| 中文有码久久| 欧美性猛交xxxx乱大交蜜桃 | 欧美日韩精品一区二区在线播放| 亚洲国产另类久久精品| 久久影视精品| 极品少妇一区二区三区| 久久久国产精品一区二区中文| 国产精品拍天天在线| 亚洲一区日韩在线| 国产精品白丝av嫩草影院| 在线视频欧美日韩| 欧美视频在线视频| 亚洲午夜激情网页| 国产精品高精视频免费| 亚洲免费一在线| 国产精品少妇自拍| 欧美一区二区大片| 国产视频久久久久| 久久成人免费视频| 狠狠综合久久av一区二区小说| 久久久久久一区二区三区| 韩国av一区二区| 久久伊人亚洲| 亚洲精品欧洲| 欧美日韩一区二区在线视频| 亚洲少妇自拍| 国产精品欧美激情| 欧美一二三视频| 国内精品国产成人| 麻豆91精品| 亚洲大片av| 欧美激情一区二区| 在线视频一区二区| 国产精品一区二区欧美| 久久精品国产91精品亚洲| 影视先锋久久| 欧美伦理视频网站| 亚洲小说欧美另类婷婷| 国产精品免费网站在线观看| 欧美一区二区三区免费视频| 精品51国产黑色丝袜高跟鞋| 麻豆精品网站| 99国产精品久久久久久久| 欧美性猛交一区二区三区精品| 亚洲女女做受ⅹxx高潮| 国内久久精品视频| 欧美不卡高清| 亚洲一本视频| 狠狠综合久久| 欧美日韩播放| 欧美在线视频观看免费网站| 一区二区三区在线观看视频| 欧美激情在线有限公司| 亚洲欧美日韩国产成人| 极品尤物av久久免费看 | 国产欧美日韩亚洲精品| 久久久青草青青国产亚洲免观| 亚洲全黄一级网站| 国产精品久久久久久久久免费桃花| 久久精品国产一区二区三| 亚洲激情电影在线| 国产精品久久一区二区三区| 久久久噜久噜久久综合| 亚洲毛片视频| 国产一区二区欧美| 欧美精品一区二区高清在线观看| 亚洲欧美日韩精品| 亚洲国产欧美久久| 国产精品腿扒开做爽爽爽挤奶网站| 久热精品在线视频| 亚洲一区二区三区久久| 一色屋精品视频免费看| 欧美色大人视频| 久久影院午夜论| 亚洲一级黄色av| 最新成人在线| 国产区在线观看成人精品| 欧美精品七区| 久久久久久久久岛国免费| 在线午夜精品自拍| 亚洲高清三级视频| 国产美女精品人人做人人爽| 欧美精品一区二区三区久久久竹菊 | 国产精品一区二区三区久久| 欧美激情一区二区三区全黄| 欧美在线观看一区二区| 一区二区三区国产在线| 韩国av一区二区三区在线观看| 欧美三区美女| 欧美成年人视频网站| 久久超碰97中文字幕| 亚洲小视频在线观看| 亚洲激情国产精品| 激情欧美一区二区三区| 国产精品久久久久久久久| 欧美激情bt| 亚洲国产精品一区在线观看不卡 | 国产曰批免费观看久久久| 免费高清在线一区| 亚洲深夜福利网站| 国产一区二区三区在线观看免费| 欧美成人xxx| 久久精品论坛| 亚洲午夜久久久久久久久电影网| 影音先锋亚洲视频| 国产日韩欧美在线一区| 欧美天天影院| 欧美—级高清免费播放| 免费观看国产成人| 久久精品视频播放| 亚洲一区在线视频| 一个色综合导航| 91久久国产自产拍夜夜嗨| 狠色狠色综合久久| 激情综合视频| 好看的日韩av电影| 国产一区高清视频| 国产亚洲制服色| 国产亚洲人成a一在线v站| 国产精品自拍在线| 国产精品一区二区久久久久| 欧美香蕉大胸在线视频观看| 欧美日韩人人澡狠狠躁视频| 欧美啪啪成人vr| 欧美日韩一区二区三区视频| 欧美日韩极品在线观看一区| 欧美久久久久中文字幕| 欧美精品免费在线| 欧美视频一区二区三区| 欧美日韩精品伦理作品在线免费观看| 两个人的视频www国产精品| 久久婷婷av| 欧美激情亚洲一区| 欧美视频一区二区三区| 国产精品久久久久久超碰| 国产精品美女|