負載平衡是在多個伺服器之間分配流量以提升服務或應用程式效能和可靠性的過程。
閱讀本文後,您將能夠:
相關內容
訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!
複製文章連結
負載平衡是在兩台或更多的電腦之間分配運算工作負載的做法。在網際網路上,負載平衡經常被用來在幾個伺服器之間分配網路流量。這能夠減少每台伺服器的壓力,使伺服器更有效率,加快效能,減少延遲。負載平衡對於大多數網際網路應用程式的正常運作是必不可少的。
想像一下,一家雜貨店的結賬隊伍有 8 條結賬線,其中只有一條是開放的。所有的顧客都必須排在同一條線上,因此顧客要花很長時間才能為他們的物品買單。現在想像一下,商店開放全部 8 條結賬線。在這種情況下,顧客的等待時間大約縮短了 8 倍(取決於每個顧客購買多少物品等因素)。
負載平衡本質上是完成了同樣的事情。透過在多個伺服器之間分配使用者請求,大大減少了使用者等待時間。這會帶來更好的使用者體驗——上述範例中的雜貨店客戶如果總是等待很長時間,他們可能會尋找效率更高的雜貨店。
負載平衡由稱為負載平衡器的工具或應用程式處理。負載平衡器可以是基於硬體的,也可以是基於軟體的。硬體負載平衡器需要安裝專用的負載平衡裝置;基於軟體的負載平衡器可以在伺服器、虛擬機器或雲端執行。內容傳遞網路 (CDN) 通常包括負載平衡功能。
當來自使用者的請求到達時,負載平衡器將請求分配到給定的伺服器,並對於每個請求重複此過程。負載平衡器根據多種不同的演算法確定應由哪個伺服器處理每個請求。這些演算法分為兩大類:靜態和動態。
靜態負載平衡演算法在分配工作負載時不考慮系統的當前狀態。靜態負載平衡器不會知道哪些伺服器運作緩慢以及哪些伺服器沒有被充分使用。相反,它根據預先確定的計畫分配工作負載。靜態負載平衡可以快速設定,但會導致效率低下。
回到上面的類比,想像一下如果雜貨店開放了 8 條結賬線,有一名員工的工作是引導顧客排入佇列。想像一下,這個員工只是按順序指引,將第一個客戶分配到第 1 列,將第二個客戶分配到第 2 列,依此類推,而沒有回頭查看這些佇列的移動速度。如果 8 位收銀員都高效工作,那麼這個系統就可以正常工作——但如果一個或多個收銀員落後,一些佇列可能會變得比其他佇列長得多,從而導致糟糕的客戶體驗。靜態負載平衡也存在同樣的風險:有時,個別伺服器仍會變得不堪重負。
循環配置資源 DNS 和用戶端隨機負載平衡是靜態負載平衡的兩種常見形式。
動態負載平衡演算法會考慮每台伺服器的當前可用性、工作負載和健康情況。它們可以將流量從負擔過重或效能不佳的伺服器轉移到未充分利用的伺服器,從而保持分配的均勻和高效。但是,動態負載平衡更難設定。影響伺服器可用性的因素有很多:每台伺服器的健康情況和整體容量、正在分配的任務的大小等等。
假設雜貨店員工將顧客分類到收銀台時使用了一種更動態的方法:員工仔細觀察佇列,看看哪個佇列走得最快,觀察每個顧客購買了多少物品,並相應地分配顧客。這可以確保為所有客戶提供更高效的體驗,但也會給指引排入佇列的員工帶來更大的壓力。
有幾種類型的動態負載平衡演算法,包括最少連線、加權最少連線、基於資源和基於地理位置的負載平衡。
如上所述,負載平衡通常用於 Web 應用程式。基於軟體和基於雲端的負載平衡器有助於在託管應用程式的伺服器之間平均分配網際網路流量。一些雲端負載平衡產品可以在全球分佈的伺服器之間平衡網際網路流量負載,這一過程稱為全球伺服器負載平衡 (GSLB)。
負載平衡也常用於大型當地語系化化網路,例如資料中心或大型辦公大樓內的網路。傳統上,這需要使用硬體設備,例如應用程式交付控制器 (ADC) 或專用負載平衡裝置。基於軟體的負載平衡器也用於此目的。
動態負載平衡器必須瞭解伺服器的健康情況:它們的當前狀態、它們的效能等。動態負載平衡器透過執行定期的伺服器健康情況檢查來監控伺服器。如果一個伺服器或一組伺服器運作緩慢,負載平衡器分配給它的流量就會減少。如果一個伺服器或一組伺服器完全發生故障,負載平衡器會將流量重新路由到另一組伺服器,這一過程稱為「容錯移轉」。
當給定伺服器無法運作並且負載平衡器將其正常處理序分配到次要伺服器或伺服器群組時,就會發生容錯移轉。伺服器容錯移轉對於可靠性至關重要:如果沒有適當的備份,伺服器崩潰可能會導致網站或應用程式癱瘓。快速進行容錯移轉以避免服務中斷非常重要。
深入瞭解關於負載平衡的不同方面:
入門
關於效能
效能和 SEO
更多有關效能的資訊
字彙
學習中心導覽