首页 > 其他分享 >限流场景&限流方案的一些思考

限流场景&限流方案的一些思考

时间:2024-03-23 16:24:23浏览次数:28  
标签:令牌 场景 +--------------+ 请求 流量 算法 限流 思考

限流场景

  1. 保护系统资源:限流可用于保护系统资源,防止系统被过度请求而导致资源耗尽或系统崩溃。例如,限制对数据库、缓存、消息队列等关键资源的访问速率,以确保系统的稳定性和可用性。

  2. 防止恶意攻击:限流可用于防止恶意攻击和恶意请求,如暴力破解、DDoS 攻击等。通过限制来自单个 IP 地址或单个用户的请求速率,可以有效地减轻攻击的影响,并保护系统的安全。

  3. 流量控制:限流可用于控制系统的流量,防止流量突增而导致系统负载过高。例如,限制某个 API 接口或服务的请求速率,以确保系统能够处理流量峰值,避免系统性能下降或服务不可用。

  4. 平滑流量:限流可用于平滑流量,防止突发流量对系统造成冲击。通过限制请求速率,可以平滑流量的到达时间,减少系统负载的波动,提高系统的稳定性和可靠性。

  5. 保护第三方服务:限流可用于保护对第三方服务的调用,防止对第三方服务造成过度压力。例如,限制对外部 API 的请求速率,以确保系统能够遵守第三方服务的使用规范,避免被封禁或受到惩罚。

常用限流方案

  1. 令牌桶算法

    • 基于令牌桶实现的限流算法。
    • 每秒生成一定数量的令牌,请求需要获取令牌才能被处理。
    • 令牌桶算法可以应对突发流量。
  2. 漏桶算法

    • 将访问请求的数据包放入“漏桶”中。
    • 以恒定速率处理请求,保证稳定性。

令牌桶算法的理解

系统以恒定速率向桶中放入令牌。如果请求(request)需要处理,必须先从桶中获取一个令牌。当桶中没有令牌时,拒绝请求(request)。

漏桶算法的理解

所有的请求(request)缓冲至桶内,系统以恒定的速率处理请求(request),当请求(request)的量累积至溢出桶外,拒绝请求(request)。

需要更平滑的流量控制,令牌桶算法可能更适合;如果你需要严格的速率控制,漏桶算法可能更合适。

由于令牌桶允许突发流量在阈值范围内激增,因此个人认为它的适用性更为广泛。

限流常用类库

  • Guava RateLimiter: Guava 提供的限流类库,简单易用,支持多种限流模式。
  • Java 9 java.util.concurrent.RateLimiter: Java 9 提供的限流类库,与 Guava RateLimiter 类似,但性能更高。(要求JDK版本必须9以上)
  • Redis: Redis 可以使用 Lua 脚本实现令牌桶限流,支持分布式限流。
  • Alibaba的Sentinel组件自带限流功能,基于滑动窗口算法实现,支持多种策略。

 

值得注意的是:将限流措施写在接口处时,流量已经抵达了系统内,才会进行限流判断。这种做法有时候可能会导致系统过载或不稳定性,尤其是在高流量或突发流量的情况下。

为了更有效地保护系统的稳定性,通常建议在流量的入口处或者在系统的边缘进行限流,例如在外部的反向代理层(比如 Nginx)或者 API 网关(比如 Zuul、Kong 等)上实施限流措施。

                            +--------------+
                            |   客户端     |
                            +--------------+
                                   |
                                   v
                            +--------------+
                            | 反向代理层  |
                            +--------------+
                                   |
                                   v
                            +--------------+
                            |   网关层     |
                            +--------------+
                                   |
                 +------------- v -------------+
                 |                              |
                 |                              |
         +--------------+                +--------------+
         |  服务实例1  |                |  服务实例2  |
         +--------------+                +--------------+

 

标签:令牌,场景,+--------------+,请求,流量,算法,限流,思考
From: https://www.cnblogs.com/ashet/p/18091249

相关文章

  • 可视化场景(7): 智能制造与柔性生产--工业4.0的前哨
    一、什么是智能制造和柔性生产智能制造是指通过集成先进的信息技术和自动化技术,实现生产过程的数字化、网络化和智能化,以提高生产效率、质量和灵活性的制造模式。智能制造将物理系统(如设备、机器人等)与信息系统(如云计算、物联网等)相连接,实现生产数据的采集、分析和应用,从而实......
  • Aic 应用开发基础一(概念与场景)
    Agi通用人工智能应用概念与场景大家看到,自美国OpenAI主导的GPT发布以来,全球科技领域掀起了革命性的浪潮。比如最近看到的aigc人工绘图,智能机器人等行业,很多新概念掘起,随着人工智能技术的不断完善,ai能做的事越来越多,许多地方产业和企业在积极进行技术改革和产业支持。人工智能已......
  • AI智能分析网关V4在非煤矿山安全生产视频智能监管场景中的应用
    近年来,全国非煤矿山((含金属非金属矿山、尾矿库,以及矿泉水等其他矿山)安全生产工作取得明显成效,但安全基础仍然薄弱,事故总量仍然较大,重特大事故尚未得到根本遏制,安全生产形势依然严峻复杂。伴随着视频技术、云计算、大数据、物联网技术、人工智能技术等新兴技术的快速发展和应用,非煤......
  • 云打印的应用场景有哪些?
    近段时间以来,随着互联网的发展,云打印也随之火热。那么云打印的应用场景有哪些?有哪些用户需要用到云打印呢?今天就带大家来了解一下。云打印的应用场景有哪些?有哪些用户需要用到云打印?现在能用到云打印的场景还是非常多的,这边按照各个应用场景来给大家分别介绍一下,如果你也符合的......
  • Mysql索引结构与失效场景
    注:Mysql排序实例:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html1、B树与B+树之间的区别B树:1)一个节点有多个元素(元素个数与degree深度有关)2)当前节点的所有左边节点都是比它小的,右边节点都是比它大的3)整棵树都是已经排序的,包括节点内部的B+树:1)一......
  • 限流器(流控)+ 线程 C++实现
    在C++中,你可以使用互斥锁(mutex)和条件变量(conditionvariable)来实现一个简单的限流器(流控)以及线程。下面是一个简单的例子,它创建了一个限流器类,该类允许一定数量的线程同时访问某个资源。#include<iostream>#include<thread>#include<mutex>#include<condition_variable>......
  • 星空组网:多种场景,一网打尽,开启无缝互联新纪元
    在数字化飞速发展的今天,网络连接的多样性和灵活性成为了我们日常生活和工作中不可或缺的需求。星空组网,作为新一代的网络互联平台,以其独特的云虚拟局域网与SD-WAN智能组网技术,实现了多种场景下的无缝网络连接,为用户带来了前所未有的便捷体验。无论是远程办公、在线教育,还是跨......
  • csrf防御的思考
    关于csrf防御什么是csrfcsrf就是攻击者利用受信任用户的浏览器(利用浏览器的cookie),在其已经登录某个站点(A站点)的情况下,在用户不知情的情况下在A站点执行了恶意操作。恶意url一旦点击,发送请求时浏览器会自动携带cookie从上面简介可知,发生csrf主要在于A站点,没有对发起的请求进行充......
  • 聊聊心理医疗领域大模型的落地思考
    转载请注明出处:https://www.cnblogs.com/zhiyong-ITNote近来,工作偏向于心理医疗领域方面的大模型,仅从领域大模型的落地,聊聊个人的一些思考。硬件准备好花钱买GPU。领域大模型业务场景的思考首先需要审视斟酌业务领域的特殊性与可行性,我们要做的是心理领域,而心理领域倾向于......
  • ActiViz三维场景的基本要素——灯光
    文章目录一、ActiViz中灯光的基本要素二、ActiViz中灯光的使用方法三、ActiViz中灯光的高级特性四、性能优化和注意事项五、总结一、ActiViz中灯光的基本要素灯光是在三维场景中模拟光照效果的重要组成部分。在ActiViz中,灯光具有多种类型和属性,可以通过设置这......