电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java使用Semaphore對單接口進行限流

瀏覽:22日期:2022-08-08 18:07:40
目錄一、實戰說明1.1 效果說明1.2 核心知識點二、 環境搭建三、限流演示3.1 并發請求工具3.2 效果示例圖一、實戰說明1.1 效果說明

本篇主要講如何使用Semaphore對單接口進行限流,例如有如下場景a. A系統的有a接口主要給B系統調用,現在希望對B系統進行限流,例如處理峰值在100,超過100的請求快速失敗b. 接口作為總閘入口,希望限制所有外來訪問,例如某個房間只能同時100個玩家在線,只有前面的處理完后面的才能繼續請求c. 其他類型場景,也就是資源固定的情況下需要輪流使用資源的可以采用Semaphore

不適用場景a. 由于是針對總入口進行限流,所以不能根據IP或者token等進行限流,適用場景比較固定b. 后續的博客中會介紹如何使用其他的針對IP/Token級別的限流,例如AOP+Redis+Lua進行限流

優點主要有a. 相比針對IP級別的限流,Semaphore實現相對簡單,對上述場景能快速實現限流效果

實現難度:3顆星

1.2 核心知識點

主要使用以下技術點a. springbootb. juc包中的Semaphore(tryAcquire、release方法)

Semaphore主要說明a. Semaphore中可以通過tryAcquire和acquire獲取到一個許可證(默認),通過release釋放許可證b. 兩個獲取許可證的主要區別就是前者是非阻塞而后者阻塞,如果我們要實現快速失敗的效果,就必須使用非阻塞獲取許可證方法注意點a. 一定要確保release方法被調用,例如放到finally中,否則許可證得不到釋放,將會導致接口被全部陷死,無法接收請求

二、 環境搭建

環境使用idea+spring initializr創建新建springboot web項目

Java使用Semaphore對單接口進行限流

Java使用Semaphore對單接口進行限流

Java使用Semaphore對單接口進行限流

包目錄說明

Java使用Semaphore對單接口進行限流

新建SemaphoreController,請求路徑為limita. 注意點已經代碼注釋說明

package com.codecoord.semaphore.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.Semaphore;/** * 限流側測試 * * @author tianxincode@163.com * @since 2020-08-06 */@RestControllerpublic class SemaphoreController { /** * 最大信號量,例如此處3,生成環境可以做成可配置項,通過注入方式進行注入 */ private static final int MAX_SEMAPHORE = 3; /** * Semaphore主限流,全局就行 */ private static final Semaphore SEMAPHORE = new Semaphore(MAX_SEMAPHORE); @RequestMapping('/limit') public String limit() {// 01.使用非阻塞tryAcquire,如果獲取不到就快速返回失敗if (!SEMAPHORE.tryAcquire()) { return '請求頻率超過限制:' + MAX_SEMAPHORE;}// 02. 如果能進入到這里,說明一定獲取到了許可證/// todo 可能的參數校驗,注意如果參數校驗不通過,一定要調用release方法/*if (valid(xxx)) { SEMAPHORE.release();}*/try { // 03. 模擬業務處理,假如需要1s Thread.sleep(1000); return '業務處理成功';} catch (InterruptedException e) { // 錯誤處理 return '業務處理失敗';} finally { // 04. 一定要釋放,否則導致接口假死無法處理請求 SEMAPHORE.release();} }}三、限流演示3.1 并發請求工具

并發請求將基于apache-jmeter-5.2.1進行測試,jmeter的使用相對簡單,請讀者自行百度

此處線程組的線程數量為10個,真實環境中根據需要調整配置大小

Java使用Semaphore對單接口進行限流

Java使用Semaphore對單接口進行限流

3.2 效果示例圖

啟動測試,可以看到處理成功的只有三個,剩下7個全部失敗a. 請求成功

Java使用Semaphore對單接口進行限流

b. 請求失敗

Java使用Semaphore對單接口進行限流

到此這篇關于Java使用Semaphore對單接口進行限流的文章就介紹到這了,更多相關Java 單接口限流內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技| 小型气象站_车载气象站_便携气象站-山东风途物联网 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 分子蒸馏设备(短程分子蒸馏装置)_上海达丰仪器 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 氧化铁红厂家-淄博宗昂化工 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 武汉宣传片制作-视频拍摄-企业宣传片公司-武汉红年影视 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 超声波清洗机-超声波清洗设备定制生产厂家 - 深圳市冠博科技实业有限公司 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | Q361F全焊接球阀,200X减压稳压阀,ZJHP气动单座调节阀-上海戎钛 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 衬塑管道_衬四氟管道厂家-淄博恒固化工设备有限公司 | 新型游乐设备,360大摆锤游乐设备「诚信厂家」-山东方鑫游乐设备 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 管家婆-管家婆软件-管家婆辉煌-管家婆进销存-管家婆工贸ERP | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 信阳市建筑勘察设计研究院有限公司 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 |