当前位置:首页 > 科技  > 软件

聊聊常见的限流算法有哪些?

来源: 责编: 时间:2023-11-28 17:12:32 392观看
导读前言今天来分享一道比较好的面试题,“常见的限流算法有哪些?”对于这个问题,我们一起看看考察点和比较好的回答吧!考察点限流算法是一种用于限制流量请求的频率或速率的算法,其目的是在高并发或大流量请求的情况下,保护系统

前言

今天来分享一道比较好的面试题,“常见的限流算法有哪些?”对于这个问题,我们一起看看考察点和比较好的回答吧!CZN28资讯网——每日最新资讯28at.com

CZN28资讯网——每日最新资讯28at.com

CZN28资讯网——每日最新资讯28at.com

考察点

限流算法是一种用于限制流量请求的频率或速率的算法,其目的是在高并发或大流量请求的情况下,保护系统服务的安全性和可用性。限流算法可以应对热点业务带来的突发请求、调用方bug导致的突发请求以及恶意攻击请求等情况。这个问题就是面试官想考察我们是不是平日里善于积累,仔细思考这方面的知识!CZN28资讯网——每日最新资讯28at.com

回答  

首先,限流算法是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。常考的算法有以下几种。CZN28资讯网——每日最新资讯28at.com

1. (如图)计数器限流,一般用在单一维度的访问频率限制上,比如短信验证码每隔60s 只能发送一次,或者接口调用次数等。它的实现方法很简单,每调用一次就加 1,处理结束以后减一。CZN28资讯网——每日最新资讯28at.com

 计数器限流算法的实现原理是在一个时间窗口内,每调用一次就增加计数器,当时间窗口到达设定的时间后,计数器归零。如果在时间窗口内再次调用,则计数器再次增加。这种算法的优点是实现简单,但是存在临界问题。如果在一个时间窗口内的最后一次调用正好在时间窗口结束的瞬间,那么这个请求会被拒绝,因为计数器已经归零。为了解决这个问题,可以采用滑动窗口限流算法。该算法将时间窗口划分为多个小的时间段,每个时间段都有一个独立的计数器。当一个时间段结束时,该时间段的计数器归零,而其他时间段的计数器保持不变。这样就可以避免在时间窗口结束的瞬间出现请求被拒绝的情况。CZN28资讯网——每日最新资讯28at.com

CZN28资讯网——每日最新资讯28at.com

图片图片CZN28资讯网——每日最新资讯28at.com

2. (如图)滑动窗口限流,本质上也是一种计数器,只是通过以时间为维度的可滑动窗口设计,来减少了临界值带来的并发超过阈值的问题。每次进行数据统计的时候,只需要统计这个窗口内每个时间刻度的访问量就可以了。Spring Cloud里面的熔断框架Hystrix ,以及Spring Cloud Alibaba里面的Sentinel都采用了滑动窗口来做数据统计。CZN28资讯网——每日最新资讯28at.com

图片图片CZN28资讯网——每日最新资讯28at.com

3. (如图)漏桶算法,它是一种恒定速率的限流算法,不管请求量是多少,服务端的处理效率是恒定的。基于 MQ 来实现的生产者消费者模型,其实算是一种漏桶限流算法。CZN28资讯网——每日最新资讯28at.com

图片图片CZN28资讯网——每日最新资讯28at.com

4. (如图)令牌桶算法,相对漏桶算法来说,它可以处理突发流量的问题。它的核心思想是,令牌桶以恒定速率去生成令牌保存到令牌桶里面,桶的大小是固定的,令牌桶满了以后就不再生成令牌。每个客户端请求进来的时候,必须要从令牌桶获得一个令牌才能访问,否则排队等待。在流量低峰的时候,令牌桶会出现堆积,因此当出现瞬时高峰的时候,有足够多的令牌可以获取,因此令牌桶能够允许瞬时流量的处理。网关层面的限流、或者接口调用的限流,都可以使用令牌桶算法,像 Google 的 Guava,和 Redisson 的限流,都用到了令牌桶算法在我看来,限流的本质是实现系统保护,最终选择什么样的算法,一方面取决于统计的精准度,另一方面考虑限流维度和场景的需求。CZN28资讯网——每日最新资讯28at.com

以上就是我对于这个问题的理解。CZN28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-34933-0.html聊聊常见的限流算法有哪些?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一图看懂四种接收实时数据更新的设计

下一篇: ARM架构下部署StarRocks3,你学会了吗?

标签:
  • 热门焦点
  • 十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 三星Galaxy Z Fold5官方渲染图曝光:13.4mm折叠厚度依旧感人

    据官方此前宣布,三星将于7月26日在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
Top