在我们的八股文中,有个限流的方案,被咱们的兄弟的 leader给怼了。他是这么说的:
我是这么回复的:
我再展开说说。
1、客户第一
客户第一是没错,我们是需要服务好客户,让客户用的爽,尽可能的抗更大的流量。这没毛病,但是这个和我们做限流的方案也不冲突。
因为我们做限流恰恰是为了客户着想,因为我做了限流,最多是有些客户可能被限流了,暂时无法访问,但是不至于我的系统直接崩了。稍后可能很快就恢复了。
而且,客户来了你就让他访问,那你咋确定这些客户是正常的客户?一堆灰黑产盯上你了,来 DDOS 你,你不做限流,还是无脑加机器去服务他们么?
2、突发流量
限流限的是什么,是突发流量,比如说我系统最高 QPS 也就1000,我经过压测,系统能抗1200,我限流1200,这是比较常见的做法了。
啥叫突发流量,就是你提前没能预测到的。
好了,现在突发流量来了,你没有限流。你咋办?
你说你加机器?
ok,你经历过那种绝望吗?就是突发流量直接把你的服务器打挂了,你想扩容,你想加机器,根本不给你机会,机器起来就挂,起来就挂,起来就挂。
你加机器有啥用?根本就没用,因为完全不给你加的机会。
3、自我保护
限流是什么?是自我保护,是我系统的最后一道防线。在极端情况下,我可以直接开启限流,然后我才有机会可以去排查流量来源,去扩容。
你连限流都没有,你只能眼睁睁看着你的服务器被打挂,别无他法。
4、保护别人
MD,你自己把 X 装了。你考虑你下游了吗?
你一点限流手段不做,来了你就抗,下游也和你一起扛?他实在扛不住了,说:哥,帮忙限个流吧。
你说:限个坤8,给我硬抗????
5、加机器
确实,加机器是最有效的抗流量的办法,我从不否认,能让我无限加机器,我懒得做任何技术优化。
机器资源拉满,机器数拉满,网络带宽拉满!
那如果是这样?要一个高级开发有啥用?会写代码就行了,反正啥问题都不用考虑,资源可劲用。
做程序员,还是得有点技术追求不是吗。