Ip-Limit: 轻量级注解式IP限流组件(二)

author: van , ggfanwentao@gmail.com

Ip-Limit-Example: 轻量级注解式IP限流组件使用样例

项目简介

该项目为ip-limiter的使用示例项目。

ip-limiter地址: https://github.com/DDAaTao/ip-limiter

示例项目文件树

└─example├─handler│   └─BaseExceptionHandler - IpLimiter统一异常处理├─token - 令牌桶限流器相关示例/测试接口包│   ├─TokenDefaultLimiterTypeController - 默认限流样例│   └─TokenWhiteLimiterTypeController - 白名单模式限流样例├─window - 滑动窗口限流器相关示例/测试接口包│   ├─DefaultLimiterTypeController - 默认限流样例│   ├─BlackLimiterTypeController - 黑名单限流样例│   ├─WhiteLimiterTypeController - 白名单限流样例│   └─DynamicIpListController - 黑白名单动态配置样例└─IpLimiterExampleApplication -  启动类(@EnableIpLimit)

核心限流模式 - LimitType类

  • DEFAULT - 走默认限流策略,不考虑黑白名单参数
  • WHITE_LIST - 只考虑白名单策略,非白名单的请求全部回绝
  • BLACK_LIST - 只考虑黑名单策略,非黑名单请求不做限流措施
  • DEFAULT_WITH_WHITE_LIST - 在默认限流策略的基础上,白名单内的IP不做限流
  • DEFAULT_WITH_BLACK_LIST - 在默认限流策略的基础上,直接403黑名单
  • DEFAULT_WITH_WHITE_AND_BLACK_LIST - 在默认限流策略的基础上,直接403黑名单,再让白名单内的IP直接同行

快速开始

  1. 引入Ip-Limit依赖(已发布至Maven中央仓库)
  <!-- 建议使用最新版本{ip-limiter.version} --><dependency><groupId>io.github.DDAaTao</groupId><artifactId>ip-limiter</artifactId><version>1.0.3</version></dependency>
  1. 将 @EnableIpLimit 添加到 webApplication 类上,或其他可以被 Spring 扫描到的配置类上
  2. 将 @IpLimit 注解添加到想要做IP限流的方法(接口)上,根据需求动态调整参数
    在这里插入图片描述

在这里插入图片描述

  1. 可通过注入 IpLimitUtils 动态设置限流配置 - DynamicIpListController
    在这里插入图片描述

部分测试结果

性能上来讲,推荐使用滑动窗口限流

1.令牌桶限流

在这里插入图片描述

2.滑动窗口默认限流

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于OpenCV的红绿灯识别

基于OpenCV的红绿灯识别 技术背景 为了实现轻舟航天机器人实现红绿灯的识别&#xff0c;决定采用传统算法OpenCV视觉技术。 技术介绍 航天机器人的红绿灯识别主要基于传统计算机视觉技术&#xff0c;利用OpenCV算法对视频流进行处理&#xff0c;以获取红绿灯的状态信息。具…

甘特图 Dhtmlx Gantt

介绍 在一些任务计划、日程进度等场景中我们会使用到甘特图&#xff0c;Dhtmlx Gantt 对于甘特图的实现支持很友好&#xff0c;文档API介绍全面&#xff0c;虽然增强版的收费&#xff0c;但免费版的足以够用。 官网&#xff1a;https://docs.dhtmlx.com/gantt/ 安装dhtml gannt…

Android:ImageView xml方式配置selector 图片切换

1、在res/drawable目录下创建一个新的XML文件&#xff0c;比如selector_image.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"> <!-- 背景选择器 state_pre…

Linux6.16 Docker consul的容器服务更新与发现

文章目录 计算机系统5G云计算第四章 LINUX Docker consul的容器服务更新与发现一、consul 概述1.什么是服务注册与发现2.什么是consul 二、consul 部署1.consul服务器2.registrator服务器3.consul-template4.consul 多节点 计算机系统 5G云计算 第四章 LINUX Docker consul的…

react状态管理工具reduxjs/toolkit用法

安装 npm install reduxjs/toolkit 1.创建一个名为counterSlice.js的文件&#xff0c;用于处理计数器模块的状态&#xff1a; import { createSlice } from reduxjs/toolkit;const counterSlice createSlice({name: counter,initialState: {value: 0,},reducers: {increment…

PHP数组转对象和对象转数组

PHP数组转对象和对象转数组 <?php function array_to_object($arr){$obj new stdClass();foreach ($arr as $key > $val) {if (is_array($val) || is_object($val)) {$obj->$key array_to_object($val);} else {$obj->$key $val;}}return $obj; } function o…

MySQL - 1、数据库和表操作

CREATE DATABASE 创建一个名为"example_db"的数据库&#xff1a; CREATE DATABASE example_db;CREATE TABLE 创建一个名为"employees"的表&#xff0c;用于存储员工信息&#xff1a; CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),age…

项目文档管理的基本指南

项目文档是一种关键的项目管理资源&#xff0c;它可以提供清晰度&#xff0c;保证参与项目的每个人都在同一页面上&#xff0c;从而确保项目按时、按预算完成。 本文将讨论项目文档的重要性、如何在项目中使用项目文档以及选择好合适的项目文档管理软件的技巧。 什么是项目文…

分布式微服务架构下网络通信的底层实现原理

在分布式架构中&#xff0c;网络通信是底层基础&#xff0c;没有网络&#xff0c;也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作&#xff0c;共同完成一件事情。 同样&#xff0c;在大规模的系统架构中&#xff0c;应用吞吐量上不去、网络存在通信延迟、我…

IDEA常用插件与配置

目录 常用插件 1.RestfulToolkit 2.MyBatisX (dao,xml层对应) 3.GitToolBox(git对应信息) 4.CodeGlance(代码滚动轮) 5.MyBatis Log Plugin(SQL log) 6.Any-Rule(正则表达式)

DevOps-Git

DevOps-Git 版本控制软件提供完备的版本管理功能&#xff0c;用于存储&#xff0c;追踪目录&#xff08;文件夹&#xff09;和文件的修改历史。版本控制软件的最高目标是支持公司的配置管理活动&#xff0c;最终多个版本的开发和维护活动&#xff0c;即使发布软件。 git安装 h…

K8S初级入门系列之十二-计算资源管理

一、前言 K8S集群中着这各类资源&#xff0c;比如计算资源&#xff0c;API资源等&#xff0c;其中最重要的是计算资源&#xff0c;包括CPU&#xff0c;缓存&#xff0c;存储等。管理这些资源就是要在资源创建时进行约束和限制&#xff0c;在运行时监控这些资源的指标&#xff0…

回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLA…

[SQL挖掘机] - 左连接: left join

介绍: 左连接是一种多表连接方式&#xff0c;它以左侧的表为基础&#xff0c;并返回满足连接条件的匹配行以及左侧表中的所有行&#xff0c;即使右侧的表中没有匹配的行。左连接将左表的每一行与右表进行比较&#xff0c;并根据连接条件返回结果集。 左连接的工作原理如下&am…

qt root start faild

深入解析chown -r root:root命令_笔记大全_设计学院 ffmpeg第五弹&#xff1a;QtSDLffmpeg视频播放演示_txp玩Linux的博客-CSDN博客

idea中创建请求基本操作

文章目录 说明效果创建GET请求没有参数带有参数带有环境变量带有动态参数 说明 首先通过###三个井号键来分开每个请求体&#xff0c;然后请求url和header参数是紧紧挨着的&#xff0c;请求参数不管是POST的body传参还是GET的parameter传参&#xff0c;都是要换行的&#xff0c;…

OSI模型简介及socket,tcp,http三者之间的区别和原理

1.OSI模型简介&#xff08;七层网络模型&#xff09; OSI 模型(Open System Interconnection model)&#xff1a;一个由国际标准化组织提出的概念模型&#xff0c;试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。 它将计算机网络体系结构划分为七层,每…

Java设计模式之策略(Strategy)模式

策略&#xff08;Strategy&#xff09;设计模式定义了一系列算法&#xff0c;将它们封装起来&#xff0c;并且可以相互替换使用&#xff0c;从而使得算法可以独立于使用它的客户而变化。 什么是策略模式 策略&#xff08;Strategy&#xff09;设计模式是一种行为型设计模式&a…

苹果safari浏览器播放不了video标签视频

今天遇到了个神奇的问题&#xff0c;视频文件在pc端和安卓手机上播放都没问题&#xff0c;但是在ios上就是播放不了&#xff0c;大概代码如下&#xff1a; 前端代码&#xff1a; <video id"video" width"350" height"500" controls><s…

面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?

面试题-TS(八)&#xff1a;什么是装饰器&#xff08;decorators&#xff09;&#xff1f;如何在 TypeScript 中使用它们&#xff1f; 在TypeScript中&#xff0c;装饰器&#xff08;Decorators&#xff09;是一种用于增强代码功能的特殊类型声明。装饰器提供了一种在类、方法、…