从0到1实现RPC | 12 限流

  1. 在服务提供者provider端添加限流逻辑

限流:指定时间内请求数超过指定阈值时就抛出异常。

在ProviderInvoker的调用过程中,添加限流逻辑:

  • 使用滑动窗口SlidingTimeWindow统计30s的请求数;
  • 每个服务service对应一个滑动窗口;
  • 对限流模块使用同步锁;
  • 判断请求数是否超过阈值,如果是则抛出异常;
  • 记录请求次数。
  1. 添加测试案例

循环请求指定服务,每秒请求一次,限流配置参数为30s内超过20个请求就会被限流。

观察日志,在30s内连续请求20次后第21次的请求就被限流了。

源码:

https://github.com/midnight2104/midnight-rpc/tree/lesson12

相关推荐
云飞云共享云桌面23 分钟前
不用批量采购工作站|液压设备制造,SolidWorks 多人共享服务器方案
运维·服务器·网络·数据库·制造
pt104325 分钟前
Cisco Splunk for AI Operations:数据处理原理与安全分析
运维·网络·自动化
xixiaoyunya33 分钟前
异地备份保管:从概念到落地的完整技术路径
网络·安全
xiaoye-duck35 分钟前
《Linux 网络编程》深入理解 TCP 协议(三):TCP 报头六大标志位详解
linux·网络·tcp
华允物联-HUAIOT1 小时前
什么是工业路由器?和普通家用路由器的区别
网络·智能路由器
为思念酝酿的痛1 小时前
应用层协议HTTPS
网络·网络协议·http·https
小程序设计1 小时前
基于某数据管理系统的目标遍历漏洞成因与防御设计技术与实现
运维·网络
Sylvia33.1 小时前
板球实时数据接入实战:从Frames模型到多赛制适配
java·python·websocket·网络协议·架构
anxiao_m1 小时前
局域网文件传输工具有哪些?4款主流工具实测对比测评
大数据·网络·数据库
IPdodo_1 小时前
curl 如何测试代理 IP?HTTP、SOCKS5 与认证参数示例
前端·网络·python·https·网络调试