分布式限流设计一:并发数限流

本文介绍了在高并发系统中,限流作为保护措施的重要性,并探讨了并发数限流与请求数限流的区别。文章重点在于设计实现对下游系统并发数的限制,通过Redis实现分布式并发计数器,利用Lua脚本保证原子性,以此限制同一时刻处理的任务数量。
摘要由CSDN通过智能技术生成

一、背景

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量;降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀)、写服务(下单),因此需有一种手段来限制这些场景的并发/请求量,即限流。

限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求量进行限速来保护系统,一旦达到限制链接数、速率则可以拒绝服务、排队等。

高并发系统常见的限流主要有:限制并发数、限制每秒请求数等。

限流的实现方案有很多种,日常工作主要会遇到如下方式限流:

  1. 容器限流:比如 Tomcat、Nginx 等限流手段,Tomcat 可以设置最大线程数, Nginx 提供了两种限流手段:一是控制速率,二是控制并发链接数;
  2. 应用服务层限流:我们在应用程序通过限流算法实现限流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值