为什么网站一搞活动就崩?一台服务器扛不住的终极解法

0 阅读4分钟

为什么网站一搞活动就崩?一台服务器扛不住的终极解法


先说个你肯定经历过的事

双11零点,你点开购物车,页面转圈圈——白屏了。

你骂运营商、骂平台,但真正的原因很简单:

一台服务器,扛不住所有人同时来。

这就像一家小饭馆,平时来20个人,厨师刚好忙得过来。突然来了2000个人,厨房直接炸了。

这篇文章,就讲怎么把"小饭馆"变成"连锁快餐"——也就是负载均衡


一、先搞懂:网站为什么会崩?

你每打开一个网页,背后都是一台服务器在给你"端菜"。

  • 你点一下 → 服务器算一下
  • 你刷一下 → 服务器查一次数据库
  • 10个人同时点 → 服务器处理10份请求

问题来了:一台服务器的能力是有上限的。

指标大概能扛多少
CPU同时处理几百个请求
内存存几万条数据就满了
带宽每秒传几百MB就堵了

平时你一个人用,绰绰有余。

但一搞活动,几万人同时涌入——

服务器CPU 100%、内存爆了、带宽堵死。

结果:要么慢成狗,要么直接挂。


二、最笨的办法:换一台更强的服务器

有人说:那我直接买一台超级计算机不就行了?

理论上可以。但有三个大坑:

说明
💰 贵一台顶配服务器,动辄几十万
📉 浪费活动就那几天,平时90%的性能在睡觉
💀 单点故障这台服务器一旦坏了,全部完蛋

所以,不是把一台服务器变强,而是让很多台服务器一起干活。

这就是负载均衡的核心思想。


三、负载均衡:到底是什么?

一句话:

把大量请求,均匀地分配到多台服务器上,让每台都不累死。

你可以把它想象成商场门口的导流员

以前:所有人挤一个收银台 → 排长队 → 有人等不及走了(请求超时/崩了)

现在:导流员把人分到5个收银台 → 每条队都短 → 大家都能买到东西

这个"导流员",就是负载均衡器(Load Balancer)。


四、它怎么分?常见的4种方式

1. 轮询(最简单)

来一个人,分给1号台;再来一个,分给2号台;再来,3号……循环。

像发牌一样,一张一张轮着来。

✅ 简单公平
❌ 不管每台机器忙不忙,一视同仁


2. 加权轮询(聪明一点)

1号台是新服务器,性能强,给它分2个人;2号台旧一点,分1个人。

像按能力排班,能者多劳。

✅ 考虑了服务器性能差异
❌ 还是不知道每台当前有多忙


3. 最少连接(最实用)

谁当前手上活最少,新请求就给谁。

像排队时看哪条队最短,就去哪条。

✅ 实时感知压力,最均衡
❌ 需要实时统计,稍微复杂一点


4. IP哈希( sticky session)

同一个用户,永远分到同一台服务器。

像你去理发,永远找同一个Tony老师。

✅ 适合需要"记住你是谁"的场景(比如购物车、登录状态)
❌ 万一这台服务器挂了,这个用户就丢了


五、架构长什么样?一张图看懂

         用户们(几万人同时来)
              |
              ▼
     ┌──────────────────┐
     │   负载均衡器      │  ← 导流员/交通警察
     │  (Nginx/LVS等)  │
     └───────┬──────────┘
             │
     ┌───────┼───────┐
     ▼       ▼       ▼
   服务器1  服务器2  服务器3   ← 一起干活
     │       │       │
     └───────┴───────┘
            │
        数据库(大家共用)

关键点:用户根本不知道自己被分到了哪台服务器,体验完全一样。


六、为什么说它是"终极解法"?

因为负载均衡解决了三个要命的问题:

问题负载均衡怎么解
扛不住10台服务器一起扛,相当于能力×10
单点故障挂了一台?自动切到其他台,用户无感
弹性伸缩活动来了加机器,活动完了减机器,不浪费钱

双11的本质,就是提前把服务器从10台扩到1000台,活动结束再缩回来。

而指挥这一切的"大脑",就是负载均衡器。


七、你可能会问的几个问题

Q:负载均衡器自己挂了怎么办?
→ 通常会部署两台,一主一备。主的挂了,备的自动顶上。

Q:所有服务器内容必须一样吗?
→ 是的。所以现在都用"镜像部署"——一台配置好,复制到所有机器上。

Q:Nginx是什么?跟负载均衡什么关系?
→ Nginx是最流行的负载均衡软件之一。它本身是个Web服务器,但加上负载均衡功能后,成了大厂标配。


最后总结

一台服务器负载均衡
能力有上限近乎无限(加机器就行)
挂了全部完蛋自动切换,用户无感
成本要么买贵的,要么崩按需伸缩,花该花的钱
类比一个厨师炒所有菜连锁快餐,每家店都一样

所以下次双11再崩,你就知道了:不是平台菜,是他们的负载均衡没配好。