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

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

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

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

場景

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

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

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

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

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

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

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

解決方案

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

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

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

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

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

那么原理是什么?其實(shí)很簡單,先來說下原理,再介紹具體的實(shí)現(xiàn):85K28資訊網(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個(gè)步驟中其實(shí)只有一點(diǎn)比較難實(shí)現(xiàn)的,其他的都是基本操作,就是獲取這個(gè)請求參數(shù),下面將詳細(xì)介紹一下如何獲取這個(gè)請求參數(shù)。85K28資訊網(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)錯(cuò)如下:85K28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

總結(jié)

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

碼猿慢病云管理系統(tǒng)已經(jīng)在星球中陸續(xù)更新,目前更新內(nèi)容如下:85K28資訊網(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ā)平臺(tái)自動(dòng)生成業(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)限如何定一個(gè)注解自動(dòng)注入?     12 一個(gè)注解防止接口重復(fù)提交業(yè)務(wù)     01 科室管理     02 醫(yī)院管理     03 角色管理

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

本文鏈接:http://www.rrqrq.com/showinfo-26-146-0.html一個(gè)注解實(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_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
亚洲自拍偷拍欧美| 国产精品婷婷| 亚洲视频免费| 欧美变态凌虐bdsm| 免费成人在线播放| 老鸭窝91久久精品色噜噜导演| 18欧美乱大交hd1984| 欧美日韩日本国产亚洲在线| 国产欧美va欧美不卡在线| 色综合天天综合给合国产| 欧美videos大乳护士334| 国产成人av网站| 777午夜精品视频在线播放| 老司机精品视频在线| 欧美吻胸吃奶大尺度电影| 久久不见久久见免费视频1| 欧美天堂一区二区三区| 久久av资源网| 91精品国产综合久久久久| 国产精品资源网站| 日韩一区二区在线观看视频 | 亚洲一二三专区| 国产亚洲毛片在线| 亚洲成在线观看| 欧美亚洲免费在线一区| 国产精品自在欧美一区| 精品三级在线看| 欧美女人交a| 亚洲情趣在线观看| 久久国产精品久久w女人spa| 免费在线一区观看| 91精品久久久久久久91蜜桃| 成人黄色av电影| 国产欧美va欧美不卡在线| 精品96久久久久久中文字幕无| 亚洲日本在线观看| 久久综合影音| 国产一区不卡精品| 久久久777精品电影网影网| 亚洲大黄网站| 香蕉成人伊视频在线观看| 欧美三级中文字| 99久久99久久久精品齐齐| 中文字幕一区在线| 久久黄色影院| 久久91精品国产91久久小草| 欧美电影精品一区二区| 欧美日韩国产精品一区二区亚洲| 日韩理论电影院| 一本色道久久综合亚洲91 | 欧美一级午夜免费电影| 91免费看`日韩一区二区| 专区另类欧美日韩| 久久蜜桃精品| 福利一区二区在线| 国产精品国产三级国产普通话99| 麻豆成人av| 国产成人自拍高清视频在线免费播放| 国产三级精品视频| 国产毛片一区| 国产精品夜夜嗨| 亚洲欧洲99久久| 欧美亚洲精品一区| 97久久超碰精品国产| 亚洲午夜激情网页| 337p亚洲精品色噜噜狠狠| 欧美日韩国产色综合一二三四| 亚洲国产你懂的| 日韩视频一区在线观看| 精品不卡视频| 男女男精品视频| 国产人伦精品一区二区| 久久五月激情| 97久久超碰国产精品电影| 亚洲电影在线播放| 日韩免费高清视频| 国产精品婷婷| 福利电影一区二区| 亚洲一区二区三区四区在线观看 | 精品一区二区在线看| 日本一区二区高清| 在线视频一区二区三区| 午夜久久一区| 欧美a级理论片| 中文无字幕一区二区三区| 色激情天天射综合网| 99久久精品免费看| 日韩综合小视频| 国产无一区二区| 欧美视频一区在线| 亚洲视频一区| 国产高清亚洲一区| 亚洲欧美另类久久久精品 | 午夜国产精品一区| 久久久亚洲精华液精华液精华液| 久久久久久自在自线| 欧美一区三区二区在线观看| 日韩不卡一二三区| 国产人成一区二区三区影院| 在线中文字幕一区二区| 精品不卡一区二区三区| 国产成人精品亚洲日本在线桃色 | 99精品国产视频| 美腿丝袜亚洲三区| 自拍偷在线精品自拍偷无码专区 | 蜜臀av亚洲一区中文字幕| 国产精品久久久久久久久久免费看| 欧美老肥妇做.爰bbww| 一区二区三区福利| 成人av资源在线| 老司机精品视频一区二区三区| 亚洲欧美国产毛片在线| 精品久久人人做人人爱| 色呦呦网站一区| 精品二区久久| 99精品久久免费看蜜臀剧情介绍| 日本欧美韩国一区三区| 亚洲欧美日韩中文播放| 久久综合五月天婷婷伊人| 欧美系列一区二区| 国产精品日韩欧美一区二区| 99久久er热在这里只有精品15| 久久www免费人成看片高清| 亚洲一区在线免费观看| 国产欧美精品日韩区二区麻豆天美| 欧美三级午夜理伦三级中视频| 欧美一级二区| 国产综合视频| voyeur盗摄精品| 国产一区二区精品在线观看| 日本视频中文字幕一区二区三区| 自拍av一区二区三区| 国产亚洲精品bt天堂精选| 欧美一激情一区二区三区| 91久久精品一区二区三| 亚洲少妇一区| 欧美另类亚洲| 91视频观看免费| 成人免费电影视频| 国产一区二区在线视频| 麻豆一区二区三| 亚洲国产精品综合小说图片区| 亚洲欧洲精品成人久久奇米网| 久久精品亚洲国产奇米99| 欧美一二三区在线| 欧美绝品在线观看成人午夜影视| 色丁香久综合在线久综合在线观看| 99精品欧美一区二区三区| 欧美另类亚洲| 欧美久久电影| 91视频免费看| 北岛玲一区二区三区四区| 国产另类ts人妖一区二区| 激情综合色综合久久| 青青草国产精品亚洲专区无| 爽爽淫人综合网网站| 亚洲 欧美综合在线网络| 亚洲最大成人网4388xx| 亚洲精品高清视频在线观看| 18欧美亚洲精品| 国产精品福利一区二区三区| 日本一区二区三区电影| 久久精品日产第一区二区三区高清版| 精品成人a区在线观看| 欧美精品一区二区三区蜜桃| 欧美大胆一级视频| 亚洲在线国产日韩欧美| 国产综合自拍| 在线观看一区视频| 欧美阿v一级看视频| 欧美片第1页综合| 国内视频一区| 精品不卡视频| 99视频一区| 久久大逼视频| 色88888久久久久久影院按摩| 日本道精品一区二区三区| 欧美亚洲另类激情小说| 欧美特级限制片免费在线观看| 精品视频全国免费看| 欧美精品欧美精品系列| 欧美久久婷婷综合色| 91精品一区二区三区久久久久久 | 一区在线视频| 国产综合色产| 一本综合精品| 亚洲一区二区动漫| 国产在线国偷精品产拍免费yy| 九九视频精品免费| 国产白丝精品91爽爽久久| 不卡电影免费在线播放一区| 欧美淫片网站| 怡红院精品视频在线观看极品| 99精品99| 亚洲欧美成人综合| 欧美色网一区二区| 日韩欧美的一区| 国产欧美日韩视频在线观看| 亚洲欧美另类综合偷拍| 日韩有码一区二区三区|