📄 一句话概括
访问量涨到单台服务器扛不住,就要多台分担——最朴素的 DNS 轮询有两大缺陷(不知服务器死活、缓存破坏均衡),于是需要更聪明的分配者。
📝 本节和前面几节的关系
5.2 把安全关守完;5.3 换个话题:性能撑不住怎么办。
一、需求从哪来
单台服务器的 CPU、内存、带宽都有上限; 加机器容易,让用户均匀地走到各台才是难点。
二、朴素方案:DNS 轮询
一个域名配多个 A 记录,DNS 换着顺序回答—— 缺陷一:服务器挂了 DNS 也不知道,照送不误; 缺陷二:DNS 缓存让【换着给】失效,分布失衡。
三、动手 Demo:单台扛不住的时候
访问量大了怎么办?先看最朴素的办法——DNS 轮询:
for s in ['www.example.com -> [IP_A, IP_B, IP_C]',
DNS 每次回答时换着顺序给,客户端各自去连']:
print(s)
print()
print('缺陷两条:')
print(' 1. 服务器挂了 DNS 也不知道,照样把用户送过去')
print(' 2. DNS 缓存让【换着给】失效,分布并不均匀')
实跑输出:
--------------------------------------------------------------------
单台扛不住的时候
--------------------------------------------------------------------
访问量大了怎么办?先看最朴素的办法——DNS 轮询:
www.example.com -> [IP_A, IP_B, IP_C]
DNS 每次回答时换着顺序给,客户端各自去连
缺陷两条:
1. 服务器挂了 DNS 也不知道,照样把用户送过去
2. DNS 缓存让【换着给】失效,分布并不均匀
于是需要更聪明的分配者。
轮询没被淘汰——很多大公司仍在 DNS 层做粗分配, 只是后面还得有健康检查与更细的均衡器接力。
30 秒实验
- dig 一个大网站的域名,数数它配了几个 A 记录。
- 算算轮询遇到一台宕机时用户体验是什么。
- 解释 DNS 缓存为什么破坏均衡。
常见误区
- 以为加机器就解决了——分配不均等于白加。
- 以为 DNS 轮询知道服务器死活——它只是个记名册。
自测三问(点开对答案)
1. 单台撑不住的第一反应? —— 加服务器分担。 2. DNS 轮询两大缺陷? —— 不知死活、缓存失衡。 3. 更聪明的方案叫什么? —— 负载均衡器(5.3.2)。- ☐ 下一节(5.3.2 使用负载均衡器分配访问)
相关笔记
- 使用负载均衡器分配访问 — 正解登场
- 4.8-4.12 身份认证与业务系统(SSO、负载均衡、ERP、物联网) — 负载均衡的运维视角
- 🔌 网络是怎样连接的 · 索引