从0到1实现RPC | 12 限流

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

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

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

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

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

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

源码:

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

相关推荐
I · T · LUCKYBOOM1 天前
iptables防火墙
linux·运维·服务器·网络·安全
_Orch1d1 天前
详解SSL/TLS协议握手协议、记录层协议与警报协议
网络·计算机网络·安全·密码学·ssl·身份认证·对称加密
chenyuhao20241 天前
Linux网络编程:HTTP协议
linux·服务器·网络·c++·后端·http·https
duration~1 天前
IPv6 详解
网络·网络协议·ip
广东大榕树信息科技有限公司1 天前
动环监控如何有效提升机房环境管理的可靠性与响应速度?
运维·网络·物联网·国产动环监控系统·动环监控系统
zhengfei6111 天前
【POC漏洞】XXX网上阅卷系统 monitor 未授权访问
网络·安全·web安全
福尔摩斯张1 天前
Linux的pthread_self函数详解:多线程编程中的身份标识器(超详细)
linux·运维·服务器·网络·网络协议·tcp/ip·php
ArrebolJiuZhou1 天前
02arm指令集(一)——LDR,MOV,STR的使用
linux·网络·单片机
一只旭宝1 天前
Linux专题八:生产者消费者,读写者模型以及网络编程
linux·网络
代码游侠1 天前
复习——网络基础知识
网络·笔记·网络协议·算法·http