从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
酣大智8 分钟前
三层交换机与路由器的区别
网络·路由器·交换机
忧云21 分钟前
HTTP抓包工具:安装配置与使用教程
网络协议·网络抓包工具·http抓包
一个儒雅随和的男子37 分钟前
sentinel底层原理剖析以及实战优化
java·网络·sentinel
正经教主1 小时前
【docker基础】第六课:Web应用与数据库容器部署
网络·docker·容器
Full Stack Developme1 小时前
计算机加密与解密的历史
运维·服务器·网络·云计算
Mr -老鬼1 小时前
EasyClick 入门指南:HTTP 网络请求与 API 对接实战
网络·网络协议·http·自动化·#easyclick
IPDEEP全球代理1 小时前
静态住宅ip哪家好?2026年静态住宅ip测评
运维·服务器·网络
上海云盾第一敬业销售1 小时前
WAF架构解析与实战经验分享
网络协议·web安全·架构
liulilittle1 小时前
删除 Inflight Bounds:为什么 KCC 放弃了 BDP 钳位
linux·网络·tcp/ip·计算机网络·信息与通信·tcp·通信
云飞云共享云桌面2 小时前
面向机械研发:双服务器架构搭配云飞云运行 SolidWorks 方案详解
运维·服务器·前端·网络·架构·制造