目录

从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
network_tester23 分钟前
是德科技E5080B网络分析仪深度评测:5G/车载雷达测试实战指南
网络·科技·测试工具·5g·硬件架构·信号处理·射频工程
长流小哥39 分钟前
Linux网络协议栈深度解析:从数据封装到子网划分的底层架构
linux·网络协议·架构
乐维_lwops1 小时前
IT监控平台(进阶篇):IT资源一键发现功能解析
网络·资源监控·it监控平台
匀泪1 小时前
HCIP(OSPF )(2)
网络
春_2 小时前
IP范围转IP掩码
java·服务器·网络·tcp/ip
恒拓高科WorkPlus2 小时前
内部聊天软件,BeeWorks-安全的企业内部通讯软件
大数据·网络·安全
码上飞扬2 小时前
深入理解 VMware 虚拟机网络模式:为虚拟化管理铺平道路
网络·vmware·虚拟机
科技小E2 小时前
视频设备轨迹回放平台EasyCVR打造水库大坝智慧安防视频监控智能分析方案
大数据·网络·人工智能·音视频·安防监控
hahaha60164 小时前
ARINC818协议-持续
网络·fpga开发
Zz_waiting.4 小时前
网络原理 - 初识网络 1
网络