面試回答:什麼是負載均衡

語言: CN / TW / HK

theme: cyanosis

我報名參加金石計劃1期挑戰——瓜分10萬獎池,這是我的第4篇文章,點擊查看活動詳情

當面試官問你:瞭解負載均衡嗎?怎麼回答,需要從什麼角度回答該問題呢?

負載均衡

均衡,主要説的是均衡分配的,分配的是負載(工作任務或訪問請求),在集羣服務、網絡連接、CPU、磁盤或其他的資源中進行分配。

主要目的是:達到最優化資源使用,最大吞吐率、最小化響應時間,完成高性能、高可用,易擴展的工作。

常説的負載均衡,説的是對請求負載均衡,用户請求均衡分發到不同的服務端。

常見如 Nginx 。某服務可能部署了多個實例,當用户請求時,通過負載均衡策略將請求轉發到內部的服務集羣中的某個服務。對於用户來説始終是通過一個域名訪問服務,也不關心到底部署多少台。這樣即便在用户請求過程中某實例出問題,就會有其他實例服務對用户的請求進行響應,用户無感知服務出問題,保證服務的高可用。

還有一個負載均衡是數據存儲的負載均衡。對用户數據均衡分發到不同的存儲層。比如,分庫時,通過訂單Id ,hash 取模,分配到不同的數據庫。

負載均衡策略

輪詢

將請求按順序輪流的分配到服務器上。每個服務平均分擔所有的請求。由於不關心服務的連接數和當前服務器的負載情況,當每個服務器配置不同,性能差別大時,就無法區別對待,產生問題。

權重

對每個服務器都增加設置一個權重值,比如性能好的設置權重高點,性能差的設置權重低。這樣在分配服務權重大的更容易分配,達到“能者多勞”的效果。

哈希和一致性哈希

根據某 key 通過哈希算法,然後落在對應的節點上,可以保證同一個 key 都落在相同的服務器上。比如使用用户 UserId 計算哈希值,落在某服務器上。用於控制部分用户都在分配該服務器。但是當服務器出現宕機,就可能導致哈希鍵重新分佈,造成命中率大幅度下降。所以可以使用一致性哈希,故障後有其他節點代替

最小連接數

每次請求都分配給連接數數量最小的服務器。可以根據服務器的負載情況來進行請求動態分發。服務器性能好的,一般處理請求比較快,積壓的請求比較少分配到更多的請求。這樣可以避免某個服務器因處理超出負載而出現問題。

還有很多其他的算法,可以根據的需求使用。

面試回答

所以,如果回答該面試問題的話,我會從下面幾個角度,逐步回答自己的對負載均衡的理解:

  • 先從是什麼進行回答

負載均衡是高可用網絡基礎架構的關鍵組件。在集羣或分佈式環境下,經常用於請求均衡命中到指定的服務器上。當然還有數據存儲負載均衡,在分庫分表下,分發到對應的存儲裏。

  • 使用負載均衡帶來好處或者目標,

用於將工作負載分佈到多個服務器來提高網站、應用、數據庫或其他服務的性能和可靠性。

  • 平時工作中哪些常見使用:Nginx,請求分發。比如某服務部署多個節點。

參考資料