从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
秋田君12 小时前
QT_网络编程体系
网络·arm开发·qt
黄焖鸡能干四碗12 小时前
信息安全保障方案(Word文件)
大数据·网络·人工智能·架构·区块链
我星期八休息13 小时前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
RisunJan13 小时前
Linux命令-sysctl(运行时修改内核参数)
linux·网络·智能路由器
A_humble_scholar13 小时前
Linux 网络基础(三)下的 HTTP 核心详解:从请求响应到状态管
linux·网络·http
Lucis__13 小时前
如何实现长连接通信机制?Websocket的最佳实践
网络·websocket·网络协议
winfreedoms14 小时前
VMware 桥接模式无法联网:从 DHCPDISCOVER 到静态 IP 的完整排障实战
网络协议·tcp/ip·ubuntu·桥接模式·vmware·嵌入式学习
JAVA面经实录91714 小时前
网络编程基础(Java Web/分布式前置·完整版)(十一)
java·前端·网络
xfhuangfu1 天前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
記億揺晃着的那天1 天前
NAS 内网域名访问为什么需要浏览器授权
网络·nginx·js·nas