从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
ai大模型-探索者12 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
木子欢儿12 小时前
Debian 13 + vsftpd 搭建FTP服务
linux·服务器·前端·网络·debian
达~熊迪13 小时前
IP 分配前核查:把在线状态和使用登记一起看
服务器·网络·tcp/ip
西索斯coding14 小时前
Qwen3-Max 与 Qwen-Plus:60 个真实修复任务评测方案
大数据·网络·算法·ai
瓶瓶持续学习中14 小时前
数字孪生与空间智能技术架构解析:五类厂商路线及选型方法
大数据·网络·架构
天启HTTP15 小时前
动态IP是如何自动切换的?从分配机制到轮换逻辑
网络
一只旭宝15 小时前
【网络精讲6】muduo 的组件与接口:可视化了解muduo库
网络·数据库
ReStock活库16 小时前
Zephyr异步SPI调用返回后,为什么不能立即复用发送缓冲区?
java·前端·网络
网络小江16 小时前
组网第33课:IP 地址与子网——CIDR、掩码、VLSM、网段规划与可用地址速算
网络协议·tcp/ip·子网掩码·vlsm·网络规划
山雀~16 小时前
WebSocket 断连之后:一次手机采集偶现卡死的排查与修复
网络·websocket·网络协议