从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
聚铭网络13 小时前
聚铭网络荣获《一种分层架构的安全运营平台的数据保护方法及系统》发明专利
网络·安全·架构
xlq2232213 小时前
63.tcp可靠性
网络·网络协议·tcp/ip
Geometry Fu13 小时前
《物联网安全》第6章 入侵检测技术
网络·物联网·安全·ips·入侵检测·ids
TechWayfarer13 小时前
IP精准定位服务接入实战:广告投放如何用位置数据做定向策略
python·网络协议·tcp/ip·flask
切糕师学AI13 小时前
深度解密现代零信任 Full-Mesh 安全网络:架构演进、NAT 穿透原理与企业私有网络实践
网络·安全·架构
24zhgjx-fuhao13 小时前
IBGP和EBGP
网络·智能路由器
稳联技术老娜13 小时前
Profinet从转DeviceNet主网关在1500PLC与那智机器人通信应用纪实
网络·机器人
智慧光迅AINOPOL13 小时前
全光网与PON网络区别对比分析
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
shuxiaohua13 小时前
一次现网问题定位-websocket断连问题
网络·websocket·网络协议
handler0113 小时前
【Linux 网络】:poll/epoll 底层机制与 Reactor 并发模型
linux·运维·服务器·网络·c++·多路转接·多路复用