✅为什么一定要做限流?不应该服务好客户吗?不应该是加机器吗?

典型回答

在我们的八股文中,有个限流的方案,被咱们的兄弟的 leader给怼了。他是这么说的:

1721396002738-9f2ffef4-69fa-4d47-953d-c69e5dd3d721.png

我是这么回复的:

1721396020062-08234432-53a6-4dd8-8106-b3d7f55a02c2.png

我再展开说说。

1、客户第一

客户第一是没错,我们是需要服务好客户,让客户用的爽,尽可能的抗更大的流量。这没毛病,但是这个和我们做限流的方案也不冲突。

因为我们做限流恰恰是为了客户着想,因为我做了限流,最多是有些客户可能被限流了,暂时无法访问,但是不至于我的系统直接崩了。稍后可能很快就恢复了。

而且,客户来了你就让他访问,那你咋确定这些客户是正常的客户?一堆灰黑产盯上你了,来 DDOS 你,你不做限流,还是无脑加机器去服务他们么?

2、突发流量


限流限的是什么,是突发流量,比如说我系统最高 QPS 也就1000,我经过压测,系统能抗1200,我限流1200,这是比较常见的做法了。

啥叫突发流量,就是你提前没能预测到的。

好了,现在突发流量来了,你没有限流。你咋办?

你说你加机器?

ok,你经历过那种绝望吗?就是突发流量直接把你的服务器打挂了,你想扩容,你想加机器,根本不给你机会,机器起来就挂,起来就挂,起来就挂。

你加机器有啥用?根本就没用,因为完全不给你加的机会。

3、自我保护


限流是什么?是自我保护,是我系统的最后一道防线。在极端情况下,我可以直接开启限流,然后我才有机会可以去排查流量来源,去扩容。

你连限流都没有,你只能眼睁睁看着你的服务器被打挂,别无他法。

4、保护别人


MD,你自己把 X 装了。你考虑你下游了吗?

你一点限流手段不做,来了你就抗,下游也和你一起扛?他实在扛不住了,说:哥,帮忙限个流吧。

你说:限个坤8,给我硬抗????

5、加机器


确实,加机器是最有效的抗流量的办法,我从不否认,能让我无限加机器,我懒得做任何技术优化。

机器资源拉满,机器数拉满,网络带宽拉满!

那如果是这样?要一个高级开发有啥用?会写代码就行了,反正啥问题都不用考虑,资源可劲用。

做程序员,还是得有点技术追求不是吗。


原文: https://www.yuque.com/hollis666/xkm7k3/pfgbuemozdgl0m93