基于Redis+Lua实现分布式限流组件

2021-11-23 12:38:38 浏览数 (1)

背景介绍

业务背景

1、随着业务的快速发展,对接的第三方合作机构越来越多,对外提供服务API访问量成倍增加,导致服务器压力也不断增加,而服务器资源是有限的,当请求量达到设计的极限时,如果不采取措施,轻则导致服务响应时间变长,重则可能造成整个系统瘫痪。

生产环境背景

1、账单日批量业务接口访问量暴增,特别是某个时间段

2、业务方调用接口的速度未知,QPS可能达到400/s,600/s,或者更高

3、对外服务API性能上限是 QPS 300/s

4、已经出现服务不可用,应用崩溃的事故

需求分析

1、鉴于业务方对接口的调用频率未知,而我方的接口服务有上限,为保证服务的可用性,业务层需要对接口调用方的流量进行限制—–接口限流。

2、尽量少改或者不改造已有功能:少侵入或者0侵入式开发。

3、扩展方便,集成简单,开发速率高,使用简单。

设计思路

主流思路
  • 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务

0 人点赞