我早期的工作經驗,大多集中在媒體圈的 ICP,負責系統維護。那是西元2000年之前的年代,也就是 Internet 這個詞剛被發明的年代。那個年代的技術、思考方式,都還很原始。那時候,我們就發現,單一 Web Server,當有重大事件發生時,整個負載會壓得伺服器response非常緩慢。在那個WWW初期的時代,有一個分散伺服器負荷的解決方法,叫 DNS round-robin。也就是,在 DNS zone file 中,把 www A 這項,有幾台就列幾筆,比如說,有三台,那就有三筆列出三個 IP。這樣子,客戶端,也就是瀏覽器端,就會隨機取一筆,瀏覽器取得哪個 IP,你就會使用那一台的伺服器回應你。這樣子,理論上就可以分散伺服器的負載。
我們來總結一下:
DNS Round Robin 是什麼?
DNS 回傳多個 IP:
example.com → 1.1.1.1
→ 2.2.2.2
→ 3.3.3.3client 隨機(或輪流)選一個連
所以:這是最簡單的 load balancing它的優點:
1. 幾乎零成本
不用買 load balancer
不用裝軟體
DNS 就能做
2. 架構簡單到不會壞
沒有中間層(沒有 LB)
沒有單點故障(理論上)
比硬體 load balancer 還「穩定」(因為根本沒有它)
3. 水平擴展很直覺
加機器 → 加一筆 A record
4. DNS 層級分流
不用改 code
不用改 server
對 legacy 系統很友善
它的缺點:
1. 完全「不看負載」
最大硬傷 -> 假平衡(pseudo load balancing)
忙的 server 還是會被分到流量
閒的 server 可能沒流量
2. 沒有健康檢查(最致命缺點)
如果一台掛了:DNS 還是會回它的 IP
使用者就:timeout 連線失敗
除非你手動移除(太慢)
3. DNS cache 讓你失去控制
ISP cache、OS cache、browser cache
結果:流量分布不可預測、failover 很慢(TTL 問題)
4. 無法做「進階 routing」
做不到:session stickiness、path routing(/api → 某台)、user-based routing 全部只能「盲分」
5. 無法防 DDoS
反而更容易被打:攻擊者直接打 IP,沒有任何過濾層,等於每台 server 都暴露在外
6. 不支援現代需求
例如:HTTPS termination、WAF、rate limiting、bot protection,全部做不到
總結優缺點
優點:簡單、便宜、好上手 缺點:不聰明、不可靠、不安全這是 ChatGPT 對於從那個時代到今天甚至未來,對於網站負載分散技術的演進,給的結論圖:

沒有留言:
張貼留言