从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 小时前
网络协议大全
运维·网络·网络协议·http
有浔则灵13 小时前
网络安全核心知识梳理:从OSI模型到密码技术
网络·安全·web安全
Lorin 洛林14 小时前
一文读懂 Agent Skills
前端·网络
andxe1 天前
安科士AndXe 400G QSFP-DD LR8光模块芯片架构与品控体系解析
网络·光模块·光通信
去码头整点薯条981 天前
网络实验报告10
网络
SeeYa-J1 天前
Spring IOC(Inversion of Control)
java·spring·rpc
坚定的共产主义生产设备永不宕机1 天前
路由协议OSPF进阶一篇讲全
网络
碎碎念_4921 天前
以太网技术、VLAN、STP详解
网络·stp·vlan
hbugs0011 天前
【案例分享】全网首个华三数据中心流量可视化实验,基于EVE-NG V7平台
网络·网络协议·安全·devops·eve-ng
不会C语言的男孩1 天前
第 13 章 网络与分布式系统基础
网络