什么是限流
限流可以认为服务降级的一种,限制系统的输入和输出流量以达到保护系统的目的。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到阈值需要采取一些措施以完成限制流量的目的。比如延迟处理、拒绝处理或者部分拒绝处理等。
如何限流
计数器,控制单位时间内的请求数量。
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
/**
* 最大访问数量
*/
private final int limit = 10;
/**
* 访问时间差
*/
private final long timeout = 1000;
/**
* 请求时间
*/
private long time;
/**
* 当前计数器
*/
private AtomicInteger reqCount = new AtomicInteger(0);
public boolean limit() {
long now = System.currentTimeMillis();
if (now < time + timeout) {
// 单位时间内
reqCount.addAndGet(1);
return reqCount.get() <= limit;
} else {
本文介绍了限流的概念,通过计数器、滑动窗口、Leaky Bucket 和 Token Bucket 策略阐述如何限流。讨论了Spring Cloud Gateway和Sentinel在实际应用中的限流实现,以及Sentinel与Hystrix的熔断对比,强调Sentinel的轻量级、高性能特性,提供流量控制、系统负载保护和实时监控功能。
订阅专栏 解锁全文
204

被折叠的 条评论
为什么被折叠?



