gpt4 book ai didi

Java 常用限流算法解析

转载 作者:知者 更新时间:2024-03-13 08:03:35 26 4
gpt4 key购买 nike

前言

限流作为高并发场景下抵挡流量洪峰,保护后端服务不被冲垮的一种有效手段,比如大家熟知的限流组件guawa,springcloud中的Hystrix,以及springcloud-alibaba生态中的Sentinel,甚至是基于网关的限流,比如在nginx中配置限流策略,在gateway中配置限流策略等

限流无处不在,既然限流的作用如此强大,那么其底层的实现原理如何呢,说到底,限流的核心是由一系列不同的算法完成,本篇将通过实例来说明下常用的几种限流算法的用法和原理

1、计数器算法

计数器算法限流是采用简单的计数操作,到一段时间之后自动清零,通俗来说,就是系统允许的最大流量是固定的,每过来一个请求分发一个数量的资源处理请求,一旦某个时间段,这批用于处理请求的资源达到了最大值,后续再过来的请求就直接没法处理了

为了模拟计数器的效果,这里我们使用Java中的Semaphore,对Semaphore有过了解的同学应该直到,这个组件可以搭配线程一起使用,可以对并发线程进行处理,

可以理解Semaphore就是一个令牌发放的人员,所有过来的请求都必须从Semaphore中拿到一个资源(线程),拿到资源的请求才能被处理

/**
 * 计数器限流算法
 */
public class Counter {

    public static void main(String[] args) {
        final Semaphore semaphore = new Semaphore(3);
        ScheduledExecutorService service = Executors.n

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com