从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
筼筜1 小时前
【系统架构设计师】通信系统架构设计理论与实践
网络
小程序设计2 小时前
基于IPv6的校园网设计与过渡技术仿真
网络·安全
Lynne3094 小时前
工业网络,到底该集中还是自治?
网络·架构·数据
鱼月半6 小时前
两台电脑直连网络不通怎么办?
linux·网络协议
光电笑映7 小时前
网络通信基础:从协议分层到 Socket 编程预备
linux·运维·服务器·网络
mengge.cloud8 小时前
0917Docker 小白实验教程(理论+实操)
linux·服务器·网络·docker
Thomas.Sir10 小时前
第13课:PyTorch|经典CNN网络模型从零复现【从LeNet到VGG的逐行实现】
网络·pytorch·cnn
en.en..10 小时前
网络分层封装 与 TCP粘包的因果关系
网络·单片机·嵌入式硬件
IMPYLH11 小时前
HTML 的 <slot> 元素
前端·网络·html
星恒讯工业路由器12 小时前
“铸链计划”第三批启动,工业5G产品从“有”到“优”的淘汰赛开始了
网络·物联网·智能路由器·工业物联网·铸链计划·工业5g·工业路由器选型