🔌 第五章 服务器端的局域网中有什么玄机
📄 一句话概括

访问量涨到单台服务器扛不住,就要多台分担——最朴素的 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 秒实验

  1. dig 一个大网站的域名,数数它配了几个 A 记录。
  2. 算算轮询遇到一台宕机时用户体验是什么。
  3. 解释 DNS 缓存为什么破坏均衡。

常见误区

  1. 以为加机器就解决了——分配不均等于白加。
  2. 以为 DNS 轮询知道服务器死活——它只是个记名册。
自测三问(点开对答案) 1. 单台撑不住的第一反应? —— 加服务器分担。 2. DNS 轮询两大缺陷? —— 不知死活、缓存失衡。 3. 更聪明的方案叫什么? —— 负载均衡器(5.3.2)。

相关笔记