国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當(dāng)前位置:首頁 > 科技  > 軟件

一個注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

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

場景

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

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

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

因?yàn)橛惺聞?wù)的隔離性,step1這個階段對住院號的校驗(yàn)肯定是存在問題的,在高并發(fā)的場景下無法保證這里的校驗(yàn)一定準(zhǔn)確。UxF28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)這個接口的并發(fā)并不高,在碼猿慢病云管理系統(tǒng)中一般不會出現(xiàn)這種問題,那么什么時(shí)候會出現(xiàn)呢?UxF28資訊網(wǎng)——每日最新資訊28at.com

醫(yī)院中大部分是內(nèi)網(wǎng)+外網(wǎng),如果由于網(wǎng)絡(luò)的抖動,系統(tǒng)請求響應(yīng)的時(shí)間延遲,這樣會導(dǎo)致醫(yī)護(hù)操作時(shí)會出現(xiàn)重復(fù)點(diǎn)擊的情況,比如1秒中之內(nèi)由于第一次點(diǎn)添加患者這個按鈕沒反應(yīng),往往護(hù)士都會重復(fù)點(diǎn)擊,這種情況下是會出現(xiàn)問題。UxF28資訊網(wǎng)——每日最新資訊28at.com

這里我們就暫且不談對單個接口的冪等優(yōu)化了,要想一個方案全局解決這個問題,在碼猿慢病云管理系統(tǒng)中其實(shí)只要保證這種并發(fā)不高的接口在一定時(shí)間段內(nèi)保證冪等即可,比如5秒之內(nèi),這樣在5秒之內(nèi)護(hù)士重復(fù)點(diǎn)擊就沒事。UxF28資訊網(wǎng)——每日最新資訊28at.com

解決方案

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

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

只需要將該注解標(biāo)注在新增、修改、刪除接口上就能保證在默認(rèn)的5秒之內(nèi)接口冪等。UxF28資訊網(wǎng)——每日最新資訊28at.com

比如新增住院患者這個接口:UxF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

那么原理是什么?其實(shí)很簡單,先來說下原理,再介紹具體的實(shí)現(xiàn):UxF28資訊網(wǎng)——每日最新資訊28at.com

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

上述6個步驟中其實(shí)只有一點(diǎn)比較難實(shí)現(xiàn)的,其他的都是基本操作,就是獲取這個請求參數(shù),下面將詳細(xì)介紹一下如何獲取這個請求參數(shù)。UxF28資訊網(wǎng)——每日最新資訊28at.com

獲取請求參數(shù)

對于form-data的入?yún)⒅恍枰{(diào)用HttpServletRequest的API讀取,但是對于@RequestBody標(biāo)注的入?yún)⑹峭ㄟ^IO流讀取數(shù)據(jù),且IO流只能被讀取一次,如果在AOP中讀取了,那么在接口層面的入?yún)⒆x取肯定是有問題,報(bào)錯如下:UxF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

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

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

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

這段代碼并不難,很好懂。UxF28資訊網(wǎng)——每日最新資訊28at.com

首先在構(gòu)造 RepeatedlyRequestWrapper 的時(shí)候,就通過 IO 流將數(shù)據(jù)讀取出來并存入到一個 byte 數(shù)組中,然后重寫 getReader 和 getInputStream 方法,在這兩個讀取 IO 流的方法中,都從 byte 數(shù)組中返回 IO 流數(shù)據(jù)出來,這樣就實(shí)現(xiàn)了反復(fù)讀取了。UxF28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

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

這樣就可以配置后就可以在程序中反復(fù)讀取參數(shù)了!UxF28資訊網(wǎng)——每日最新資訊28at.com

防重注解實(shí)現(xiàn)

解決了參數(shù)讀取的問題,下面就可以輕松實(shí)現(xiàn)這個防重注解了,首先定義注解com.code.ape.codeape.common.security.annotation.RepeatSubmit:UxF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

接下來直接用AOP實(shí)現(xiàn),com.code.ape.codeape.common.security.component.CodeapeRepeatSubmitAspect代碼如下:UxF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片UxF28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)就是將request判斷下是否是經(jīng)過過濾器封裝后的HttpRequestWrapper對象,如果是的話則是@RequestBody入?yún)ⅲ苯訌腎O流中讀取。UxF28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

本節(jié)內(nèi)容介紹了防重注解@RepeatSubmit的實(shí)現(xiàn)原理,后續(xù)開發(fā)中只需要在非查詢接口中添加這個注解就能保證在一定時(shí)間內(nèi)防止重復(fù)提交。UxF28資訊網(wǎng)——每日最新資訊28at.com

碼猿慢病云管理系統(tǒng)已經(jīng)在星球中陸續(xù)更新,目前更新內(nèi)容如下:UxF28資訊網(wǎng)——每日最新資訊28at.com

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

UxF28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-146-0.html一個注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 從零到英雄:高并發(fā)與性能優(yōu)化的神奇之旅

下一篇: WebRTC.Net庫開發(fā)進(jìn)階,教你實(shí)現(xiàn)屏幕共享和多路復(fù)用!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
久久精品国产99| 精品va天堂亚洲国产| 国产综合色视频| 国产午夜亚洲精品理论片色戒| 亚洲视频中文| 日韩主播视频在线| 久久综合网色—综合色88| 精品999网站| 黄网站免费久久| 亚洲欧美日韩一区| 制服丝袜日韩国产| 国产日韩欧美在线播放不卡| 久久99日本精品| 亚洲精品一二三| 久久久亚洲综合| 一本到高清视频免费精品| 国产精品18久久久久久vr| 国产欧美视频一区二区三区| 久久综合一区| 影音先锋久久久| 日日夜夜精品视频天天综合网| 成人三级伦理片| 国产精品久久久久久久第一福利 | 欧美成人亚洲| 久久福利视频一区二区| 亚洲综合小说图片| 国产三级精品在线| 精品国产3级a| 日韩午夜av一区| 欧美体内she精视频| 午夜在线视频一区二区区别| 91麻豆国产福利精品| 豆国产96在线|亚洲| 韩国女主播成人在线| 日韩黄色在线观看| 中文字幕在线免费不卡| 国产清纯在线一区二区www| 日韩午夜电影av| 久久久7777| 欧美亚洲日本一区| 欧美中文字幕一区二区三区| 在线观看日韩精品| 91久久奴性调教| 欧美精品日韩精品| 精品日本一线二线三线不卡| 26uuu精品一区二区三区四区在线| 午夜一区二区三区不卡视频| 在线区一区二视频| 欧美一个色资源| 26uuu国产一区二区三区| 久久精品人人做人人综合 | 97成人超碰视| 亚洲人体偷拍| 欧美日韩一二三区| 国产精品视频观看| 亚洲gay无套男同| 国产盗摄一区二区三区| 午夜精品久久| 在线欧美日韩精品| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩精品一区在线| 夜夜嗨av一区二区三区中文字幕 | 亚洲精品看片| 日韩女同互慰一区二区| 成人欧美一区二区三区| 国产一区二区在线观看视频| 黄色另类av| 精品国产一区二区三区av性色| 中文字幕在线不卡| 国产精品自产自拍| 国产视频久久| 91精品午夜视频| 亚洲国产中文字幕| 久久久久久免费网| 亚洲男人电影天堂| 欧美午夜在线视频| 日韩欧美亚洲一区二区| 毛片基地黄久久久久久天堂| www.一区二区| 欧美一级生活片| 亚洲午夜激情网站| 国产精品久久久久久模特| 久久久www成人免费毛片麻豆 | 亚洲欧洲av一区二区三区久久| 国产美女主播视频一区| 91黄色小视频| 国产精品色噜噜| 午夜天堂精品久久久久| 久久人人超碰精品| 午夜精品短视频| 国产精品久久一级| 亚洲精品乱码| 亚洲一区在线视频观看| 99re热精品| 亚洲va欧美va天堂v国产综合| 久久国产成人| 国产一区免费电影| 久久久久久久久久久99999| 国产福利91精品| 久久久精品影视| 亚洲精品四区| 日韩黄色在线观看| 欧美电影免费提供在线观看| 午夜国产精品视频| 丝瓜av网站精品一区二区| 欧美精品三级日韩久久| 欧美一区二区三区四区在线观看地址| 久久亚区不卡日本| 99精品欧美一区二区三区| 久久国产综合精品| 日本一区二区视频在线观看| 亚洲欧美高清| 丁香天五香天堂综合| 久久蜜桃香蕉精品一区二区三区| 国产 日韩 欧美大片| 国产女人aaa级久久久级| 午夜亚洲福利在线老司机| 成人国产精品免费观看视频| 亚洲欧美aⅴ...| 精品国产sm最大网站免费看| 午夜亚洲福利在线老司机| 午夜久久资源| 婷婷国产v国产偷v亚洲高清| 国产偷国产偷精品高清尤物| 在线这里只有精品| 日韩亚洲国产精品| 欧美精品一区在线| 日韩精品一区第一页| 亚洲国产精品毛片| 成熟亚洲日本毛茸茸凸凹| 亚洲va中文字幕| 国产午夜久久久久| 精品国产麻豆免费人成网站| 欧美日产国产精品| 一本一本大道香蕉久在线精品 | 欧美久久久久久久久中文字幕| 久久久久久国产精品一区| 美女图片一区二区| 欧美精品三级日韩久久| 久久久久久麻豆| 亚洲一区免费视频| 紧缚奴在线一区二区三区| 99国产精品久| 91久久视频| 欧美精品久久久久久久久老牛影院| 欧美乱熟臀69xxxxxx| 久久精品男人的天堂| 午夜精品福利在线| 日韩高清在线电影| 99re热这里只有精品视频| 在线亚洲国产精品网站| 欧美一区二区三区视频免费播放 | 成人福利视频在线看| 国产婷婷精品| 亚洲精品一区二区在线观看| 亚洲高清不卡在线| 波多野结衣在线一区| 亚洲一区在线免费| 欧美激情在线看| 久久99精品国产麻豆婷婷| 亚洲黄色大片| 国产日韩欧美综合一区| 久久99久久久欧美国产| 亚洲一区二区三区四区五区午夜| 日韩一区二区电影网| 免费在线观看精品| 一级成人国产| 亚洲欧美另类久久久精品 | 成人黄色小视频在线观看| 久久久精品动漫| 午夜电影一区二区| 国产乱码精品| 亚洲制服丝袜在线| 亚洲福利专区| 亚洲精品美国一| 亚洲影视综合| 亚洲成av人片一区二区| 国产农村妇女毛片精品久久莱园子| 国产拍欧美日韩视频二区| 99久久精品国产导航| 欧美精品一区二区三区蜜桃| 丁香一区二区三区| 久久久精品欧美丰满| 欧美日韩伊人| 亚洲精品国产高清久久伦理二区| 欧美日韩精品免费看| 亚洲精品五月天| 久久久久久亚洲精品杨幂换脸| 日韩高清电影一区| 日韩欧美一区二区免费| 欧美永久精品| 亚洲视频在线一区观看| 欧美亚洲专区| 国产91色综合久久免费分享| 久久综合国产精品| 亚洲日本欧美在线| 国产激情精品久久久第一区二区| 久久久不卡网国产精品二区| aa国产精品| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 |