从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
chirrupy_hamal7 分钟前
如何避免 SYN 攻击?
网络·tcp
DemonAvenger30 分钟前
Go语言中的TCP编程:基础实现与最佳实践
网络协议·架构·go
怦然星动_35 分钟前
ip网络基础
网络·智能路由器
数据与人工智能律师1 小时前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
菜包eo2 小时前
二维码驱动的独立站视频集成方案
网络·python·音视频
yzx9910132 小时前
关于网络协议
网络·人工智能·python·网络协议
zsq2 小时前
【网络与系统安全】域类实施模型DTE
网络·安全·系统安全
00后程序员张4 小时前
免Mac上架实战:全平台iOS App上架流程的工具协作经验
websocket·网络协议·tcp/ip·http·网络安全·https·udp
喜欢板砖的牛马4 小时前
简述IPv4分配过程,看这一篇就够了
网络协议
old-six-programmer4 小时前
NAT 类型及 P2P 穿透
服务器·网络协议·webrtc·p2p·nat