从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
2301_801673014 小时前
8.19笔记
网络·安全
三坛海会大神5558 小时前
计算机网络参考模型与子网划分
网络·计算机网络
云卓SKYDROID8 小时前
无人机激光测距技术应用与挑战
网络·无人机·吊舱·高科技·云卓科技
张醒言13 小时前
Protocol Buffers 中 optional 关键字的发展史
后端·rpc·protobuf
iナナ13 小时前
传输层协议——UDP和TCP
网络·网络协议·tcp/ip·udp
舒一笑14 小时前
Mac 上安装并使用 frpc(FRP 内网穿透客户端)指南
后端·网络协议·程序员
华强笔记15 小时前
Linux内存管理系统性总结
linux·运维·网络
iY_n17 小时前
Linux网络基础
linux·网络·arm开发
EggrollOrz17 小时前
网络编程day3
网络
想睡hhh18 小时前
网络基础——Socket编程预备
网络