你们公司用的限流方案,可以讲讲吗

简介: 面试官:听说你是公司技术一号位,那我就考考你吧😊。对于ip的限流,我们是直接使用了Nginx的限流,Nginx的limit_req_zone可以设置每个IP地址在单位时间内所允许发起的请求数。

在这里插入图片描述

面试官:听说你是公司技术一号位,那我就考考你吧


面试官:不用慌尽管说,错了也没关系😊。。。


以【面试官面试】的形式来分享技术,本期是《业务设计系列》,感兴趣就关注我吧❤️

面试官:知道有什么限流算法吗

知道的,我了解的主要有计数器算法、令牌桶算法、漏桶算法。


面试官思考中…


面试官:你讲一讲它们的原理

Ok好的。

  1. 计数器算法比较简单,主要是通过一个计数器判断单位时间访问量是否到达了阈值,从而进行限流。
  2. 令牌桶算法的话,例如一个令牌桶里容量最多是10个令牌,程序会按0.1秒的固定速率向桶里放入一个令牌,用户请求只有获得令牌后才能执行,这样就实现了1秒限流10次的功能。
  3. 漏桶算法的原理主要是有一个固定容量、有洞的桶,把用户请求当成是水滴,如果水滴从洞口流出的速率超过了阈值,其他再进来的用户请求就会被拒绝。

另外漏桶算法的流出速率是相同的,不能像令牌桶算法一样可以处理瞬时流量
在这里插入图片描述


面试官思考中…


面试官:你们公司用的限流方案,可以讲讲吗

限流的话,我们一般是在接入层进行限流,主要对两方面进行限流。

  1. 对于ip的限流,我们是直接使用了Nginx的限流,Nginx的limit_req_zone可以设置每个IP地址在单位时间内所允许发起的请求数。

  2. 对于URL的限流,我们使用的是Nginx + Redis + Lua脚本的方案。

    一个Nginx节点都会对应着一个独立的Redis节点,当请求来临时,Nginx会向Redis发起Evalsha命令执行Lua限流脚本验证请求次数是否已达限流阈值。
    在这里插入图片描述


面试官思考中…


面试官:应该有在应用层进行限流吧

噢噢有的,对于某些业务接口我们也会进行限流,例如一个抢购场景。

我们会限制好目标SKU在单位时间内允许的最大抢购次数,超出所设定阈值的话就会会拒绝后续用户的抢购请求。


面试官思考中…


面试官:这种不是硬编码吗,可以怎么升级吗

确实这种硬编码的方式,给系统带来了限流代码侵入性的问题,也增加了复杂度。

可以引入一个流控平台,使用注解方式就可以实现对业务接口的限流,同时有一个总的平台来监控应用层的限流状态。

例如使用类似Sentinel这种轻量级的流控中间件。


面试官思考中…


面试官:还知道其他也可以限流的方案吗

emmmm,其实还可以从业务角度出发,这种方式也能实现限流,不过更准确应该是叫流量削峰

我知道的有两种方法,主要是利用了时间分片

  1. 例如一个抢购活动有3万件库存,我们可以在一天分为早、中、晚,每个时间段抢购1万件商品。保证了活动正常进行,也为我们系统减少了流量压力。
  2. 也可以在抢购按钮上,增加一个答题验证进行流量削峰,同样能实现相同的效果。

在这里插入图片描述

面试官抓抓脑袋,继续看你的简历......


得想想考点你不懂的😰

未完待续。。。。。。

好了,今天的分享就先到这,我们下期继续。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

相关文章
|
9月前
|
NoSQL 关系型数据库 MySQL
分布式锁:不同实现方式实践测评
分布式锁:不同实现方式实践测评
86 0
|
算法 安全 Java
架构设计第十一讲:架构之高并发:限流
架构设计第十一讲:架构之高并发:限流
183 0
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29727 51
|
敏捷开发 消息中间件 测试技术
微服务面试必读:拆分、事务、设计的综合解析与实践指南
微服务的应用级别确实相对简单,但在实际开发中仍有一些技术难点需要解决。对于微服务组件的使用,确实不存在太大差距,但在设计和开发过程中需要积累经验。学习微服务的上手时间相对较短,可能只需一周到一个月的时间。然而,设计经验和技术难点是需要个人长期积累的,不能急于求成。因此,在使用和开发微服务时,更应该关注方案思考,展示自己对该领域的理解和见解。这样能够体现出你对问题的思考深度和解决方案的创新性。希望这次面试种子题目的解答能够帮助你应对面试官的问题!
138 0
|
监控 应用服务中间件 测试技术
4种典型限流实践保障应用高可用|云效工程师指北
4种典型限流实践保障应用高可用,本文总结了一份AHAS限流实践指南,如果你的系统有被恶意用户攻击的风险,或者系统中某个应用出现异常可能会造成雪崩效应,那么这篇文章会对你有所帮助。
681 0
4种典型限流实践保障应用高可用|云效工程师指北
|
算法 NoSQL 网络协议
没有10年的功力,根本不可能设计出这么好的高并发限流方案!
没有10年的功力,根本不可能设计出这么好的高并发限流方案!
|
SQL 关系型数据库 MySQL
分布式锁:不同实现方式实践测评(上)
分布式锁:不同实现方式实践测评(上)
|
NoSQL Cloud Native 算法
分布式锁:不同实现方式实践测评(下)
分布式锁:不同实现方式实践测评(下)
|
缓存 运维 监控
21.【学习心得】学习心得-限流和降级
【学习心得】学习心得-限流和降级
21.【学习心得】学习心得-限流和降级
|
缓存 运维 负载均衡
稳定性「三十六计」实战和背后的逻辑
稳定性「三十六计」实战和背后的逻辑
稳定性「三十六计」实战和背后的逻辑

热门文章

最新文章