从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
zxanz133 分钟前
免费 SSL 证书的隐性成本:续期压力、稳定性与商业风险评估
网络·网络协议·ssl
weixin_4173968334 分钟前
酒店IPTV怎么和PMS对接?能实现哪些联动
网络·技术·网络运维·酒店iptv·组播排查
zzu123zsw35 分钟前
面对多 RPC 扇入超时崩溃:深入 asyncTool 核心 DAG 编排与线程池隔离防护
java·网络·spring boot·网络协议·rpc·并发编程
福娃筱欢35 分钟前
金仓数据库配置SSL双向认证
数据库·网络协议·ssl
桌管小李1 小时前
终端安全一体化实战:AI 审计、行为分析、零信任、防拍照与远程运维全解析
运维·服务器·网络·人工智能·windows·安全·macos
K成长日志1 小时前
BLE Host层L2CAP -- 状态机
物联网·网络协议·无线通信·蓝牙·iot·ble
星恒讯工业路由器1 小时前
工业网关固件升级:远程OTA支持与防变砖机制详解
网络·物联网·工业网关·固件升级·远程ota·防变砖机制·双系统备份
打工仔折腾 AI2 小时前
Linux 网络编程:从零掌握 TCP Socket 编程与 C++ 实战落地
linux·网络·人工智能·后端·python·tcp/ip·性能优化
Yiran_G2 小时前
ZigBee通信正常,数据却是错的?嵌入式开发中的数据链路排查
网络·嵌入式硬件·物联网·智能家居
honsor2 小时前
ModbusTCP、SNMP、HTTP 怎么选?以太网温湿度变送器协议选型实战
网络·物联网·网络协议·tcp/ip·http