从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
CoreTK_EMC6 小时前
机器人信号线缆屏蔽:解决伺服干扰、通讯异常的工程落地思路
网络·机器人·芯通康·机器人信号线缆屏蔽·工业机器人线缆 emc·机器人接地屏蔽·ethercat 通讯干扰
张宇Joaquin8 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
鲨鱼辣钊10 小时前
FastAPI进阶_Day21_WebSocket实时通讯实战
websocket·网络协议·fastapi
Brilliantwxx11 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
白狐_79811 小时前
408 计算机网络|TCP 可靠传输:ACK、重传、RTT、RTO
网络·tcp/ip·计算机网络
深念Y11 小时前
Lenovo XiaoXinAir 14 — 性能模式切换
前端·网络
Casual12 小时前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php
2401_8685347812 小时前
第7章 网络环境规划:综合篇考点梳理
网络·安全
mengge.cloud12 小时前
网络技术基础小白教程
linux·服务器·网络·云计算
2501_9151063213 小时前
安卓抓包软件2026,免证书抓包 应用层抓包 代理抓包全解析
网络协议·计算机网络·网络安全·ios·adb·https·udp