首页 > 其他分享 >zuul实现限流

zuul实现限流

时间:2024-02-08 10:24:56浏览次数:32  
标签:令牌 zuul 请求 实现 url 粒度 限流 key

zuul限流

限流算法

  • 漏桶: leakey bucket,原理:桶的下方的小孔会以一个相对恒定的速率漏水,而不管入桶的水流量,这样就达到了控制出水口的流量
  • 令牌桶: token bucket,原理:以相对恒定的速率向桶中加入令牌,请求来时于桶中取令牌,取到了就放行,没能取到令牌的请求则丢弃

限流粒度

粗粒度
  • 网关限流
  • 单个服务
细粒度
  • user: 认证用户或者匿名,针对某个用户粒度进行限流
  • origin: 客户机的IP,针对请求客户机的IP进行限流
  • url: 特定url,针对请求的url粒度进行限流
  • serviceId: 特定服务,针对某个服务的id粒度进行限流

实现

从单个服务的角度实现限流,原理:利用redis键过期的自动删除的特性。以url为key,如果key不存在,创建key,并设置键过期时间,相同请求过来就对这个key进行计数,使用redis.incr原子方法,当请求超过limit时,则不让请求api。

1.定义注解:

 

2.定义切面

 

 

3.redis配置:

 

 

4.api服务:

 

5.工具类:

 

6.maven依赖:

 

标签:令牌,zuul,请求,实现,url,粒度,限流,key
From: https://www.cnblogs.com/muxilaoshi/p/18011619

相关文章

  • el-image实现在el-table-column中展示多张图片,且能够大图循环预览
    效果:能在表格中展示且点击需要查看的即可放大查看,多组图片放大时可左右切换  核心代码:注意:workPhoto是图片地址的数组通过v-for来遍历每个列表的图片地址数组,结合:src="item"把每个图片展示在表格里,展示图片的大小样式用style来设定通过:perview-src-list="getImgList(s......
  • 表单验证功能的实现
     Form组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将Form-Item的 prop 属性设置为需校验的字段名即可。校验规则参见 async-validator<el-form:model="ruleForm":rules="rules">     <el-form-itemlabel="账号" placeholder="......
  • QPSK simulink实现
    调制部分总体框架各模块参数升余弦滚降滤波器滚降系数为1单双极性变换各阶段波形BufferDemuxRaisedCosineTransmitFilterQPSK信号功率谱密度解调部分经过AWGN信道后,假设已经进行了载波同步部分模块参数载波模块PulseGenerator由于经过了串并转换......
  • 使用pyhon实现 2的N次方列表
    pyhon代码defprint_powers_of_two(N):foriinrange(1,N+1):result=2**iprint(f"2的{i}次方={result}")N=int(input("请输入一个整数N:"))print_powers_of_two(N)32次方请输入一个整数N:322的1次方=22的2次方=42的3次方=82的4次方=......
  • Python实现软件设计模式9:组合模式 Composite Pattern
    动机如何将容器和叶子进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器和叶子?典型案例如:文件系统,在树形目录结构中,包含文件和文件夹两类不同的元素;在文件夹中可以继续包含文件或子文件夹,在文件中不能再包含子文件或者子文件夹。概念组合多个对象形成树形......
  • RedissonRedLock写一个加锁方式,实现自动延时、程序停止就停止延时
    要使用Redisson的RedLock实现加锁,并实现自动延时以及在程序停止时停止延时,你可以按照以下示例代码进行操作:importorg.redisson.Redisson;importorg.redisson.api.RLock;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importjava.util.con......
  • 【Flink入门修炼】1-3 Flink WordCount 入门实现
    本篇文章将带大家运行Flink最简单的程序WordCount。先实践后理论,对其基本输入输出、编程代码有初步了解,后续篇章再对Flink的各种概念和架构进行介绍。下面将从创建项目开始,介绍如何创建出一个Flink项目;然后从DataStream流处理和FlinkSQL执行两种方式来带大家学习Word......
  • Go语言精进之路读书笔记第15条——了解string实现原理并高效使用
    15.1Go语言的字符串类型在Go语言中,无论是字符串常量、字符串变量还是代码中出现的字符串字面量,它们的类型都被统一设置为string特点string类型的数据是不可变的对string进行切片化后,Go编译器会为切片变量重新分配底层存储而不是共用string的底层存储string的底层的数据存......
  • Go语言精进之路读书笔记第14条——了解map实现原理并高效使用
    14.1什么是mapmap对value的类型没有限制,但是对key的类型有严格要求:key的类型应该严格定义了作为“==”和“!=”两个操作符的操作数时的行为,因此func、map、slice、chan不能作为map的key类型。map类型不支持“零值可用”,未显式赋初值的map类型变量的零值为nil。对处于零值状态的......
  • 详解golang实现一个带时效的环形队列
    1.需求mysql执行时间超过100ms以上打warn日志,但是一分钟以内这种warn日志超过10条就需要告警。所以需求就是获得一分钟以内mysql的warn的个数。2.分析为什么使用环形队列而不使用slice?因为队列长度固定,所以可以一开始就分配好空间,不用自动扩容,环形的目的就是不用改变数组的值,只用移......