从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
懂点Tech4 分钟前
ctfshow MISC入门图片篇(信息附加):misc11解题思路
网络
charliejohn22 分钟前
计算机考研 408 网络 Http协议综合题
网络
小小龙学IT41 分钟前
Go 语言 gRPC(grpc-go)深度解析
rpc·架构·golang·go
fei_sun1 小时前
RIB、FIB、MAC 、ARP 表
服务器·网络·macos
pt10431 小时前
CML网络仿真入门-6(结):Cisco Modeling Labs 示例拓扑
服务器·网络
sjg200104141 小时前
websocket基本使用
网络·websocket
梦帮科技2 小时前
端侧编译原理:TVM / MLIR 计算图模式匹配、算子融合与显存生命周期复用
网络·人工智能·深度学习·神经网络·自然语言处理·cnn·mlir
dadaobusi2 小时前
学习: libfabric 2.0
网络
xiaoye-duck2 小时前
《Linux 网络编程》深入理解 epoll(下):epoll 实战开发与 LT/ET 触发模式深度剖析
linux·网络
小鹿的周先生3 小时前
第18章-MCP
服务器·网络·人工智能