【怒怼大厂面试官】讲讲你们公司用的限流方案

alt

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


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

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

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


面试官思考中…


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

Ok好的。

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

另外漏桶算法的流出速率是相同的,不能像令牌桶算法一样可以处理瞬时流量

alt


面试官思考中…


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

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

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

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

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

alt


面试官思考中…


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

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

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


面试官思考中…


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

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

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

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


面试官思考中…


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

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

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

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

alt

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


得想想考点你不懂的😰

未完待续。。。。。。

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

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

#Java面试##后端面试##大厂面试##面试#
全部评论

相关推荐

01-14 18:34
已编辑
吉首大学 Java
快放寒假了,想给自己寒假前找实习的经历做一个总结,也顺便分享一些自己的看法一.个人情况本人27届双非一本软件工程专业,第一次找实习,意向Java后端|智能体开发。大二大三上学期都在参加学科竞赛(有点后悔,感觉不如早点去实习了),获得过一些软件和ACM比赛的奖项。技术栈也比较常规,Java后端那一套再加上一些智能体开发相关。简历上的两个项目一个是智能体的项目(比赛的获奖项目),还有一个就是高并发场景的纯Java项目。二.实习投递的情况从12月中旬开始投递实习岗位,到现在也快一个月了,中间也是零零散散沟通了800份左右,只有60多家要了简历。然后差不多只有20家左右才给笔试或者面试机会(其中绝大部分都是要求线下面试的,也是没招了)。感觉情况还是不容乐观,自己投递的还都是小公司,未读/已读不回已是常态。找了学长分析,看了身边朋友以及牛友们的情况,大概总结了以下几个问题:【客观问题】1.双非学历没有优势(甚至直接是劣势)2.没有实习经验 【自身问题】3.自身简历太普通,趋于同质化 4.项目吸引力不够(项目描述,重点不突出等)【环境问题】5.年底,企业实习生需求较低。三.具体实习获取情况具体给笔试的3家(一家笔试挂,剩下两家的笔试形式太奇葩了没搞),线上面试一共正式参加的有5家(都给了实习),给了线上面试但没参加的有4家(两家是后面不感兴趣了,还有两家规模比较大的因为和考试时间撞了但是没有补其他时间)。最后决定去的实习是安徽招标集团的Java后端开发(从面试中好像也和AI模型相关)。综合感觉还是自己水平不太够,大部分都是一些小公司。具体的面试情况,大概总结了一下:纯八股问的比较少,基本上都是场景题顺带考察。大部分还是问项目多一点,时间也普遍不是很长,还经常会问一些非技术性问题(比如职业规划,行业看法等)。可能是因为是实习岗(也没有实习经验),所以问的都比较简单。四.个人的一些感慨最真实的感觉就是,Java现在真的太难了,投简历的时候都想着放弃了。相比之下,一直都说AI时代到来,前端要被取代,前端反而要好找很多。自己的女朋友去投前端的岗位,要简历约面的都是本人的好几倍甚至(简历也都差不多的水平,问了很多前端的学姐,也都差不多这样),而且即使没有实习经历,很多有名气的中厂甚至大厂都给面试。但是说这么多也不是为了抱怨,只是想向大家展示一下自己身边的真实经历和感悟。总之还是好好努力吧,希望去过两天去实习能安稳度过吧,也希望各位牛友们能找到心意的offer,新的一年,马到成功!!!
找实习记录
点赞 评论 收藏
分享
评论
4
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务