从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
Tim风声(网络工程师)2 小时前
不同射频对应不同mac地址(查找无线用户连接AP信息)
服务器·网络·tcp/ip·智能路由器·无线ap
索迪迈科技5 小时前
网络请求库——Axios库深度解析
前端·网络·vue.js·北京百思可瑞教育·百思可瑞教育
grrrr_16 小时前
【工具类】Nuclei YAML POC 编写以及批量检测
网络·安全·web安全
慢慢沉8 小时前
UDP与TCP的区别
网络协议·tcp/ip·udp
青 .8 小时前
数据结构---二叉搜索树的实现
c语言·网络·数据结构·算法·链表
AORO20258 小时前
三防手机的三防是指什么?推荐一款实用机型
网络·5g·智能手机·制造·信息与通信
鲸屿19510 小时前
Ansible之playbook
服务器·网络·ansible
绝世剑仙纪宁11 小时前
TCP 三次握手、四次挥手
网络·网络协议·tcp/ip
索迪迈科技11 小时前
HTTP中Payload的含义解析
网络·网络协议·http
时空潮汐12 小时前
我用神卓 NAT 公网 IP 盒子搭建《我的世界》联机的经历
网络·网络协议·tcp/ip