面試回答:什麼是負載均衡
theme: cyanosis
我報名參加金石計劃1期挑戰——瓜分10萬獎池,這是我的第4篇文章,點選檢視活動詳情
當面試官問你:瞭解負載均衡嗎?怎麼回答,需要從什麼角度回答該問題呢?
負載均衡
均衡,主要說的是均衡分配的,分配的是負載(工作任務或訪問請求),在叢集服務、網路連線、CPU、磁碟或其他的資源中進行分配。
主要目的是:達到最優化資源使用,最大吞吐率、最小化響應時間,完成高效能、高可用,易擴充套件的工作。
常說的負載均衡,說的是對請求負載均衡,使用者請求均衡分發到不同的服務端。
常見如 Nginx 。某服務可能部署了多個例項,當用戶請求時,通過負載均衡策略將請求轉發到內部的服務叢集中的某個服務。對於使用者來說始終是通過一個域名訪問服務,也不關心到底部署多少臺。這樣即便在使用者請求過程中某例項出問題,就會有其他例項服務對使用者的請求進行響應,使用者無感知服務出問題,保證服務的高可用。
還有一個負載均衡是資料儲存的負載均衡。對使用者資料均衡分發到不同的儲存層。比如,分庫時,通過訂單Id ,hash 取模,分配到不同的資料庫。
負載均衡策略
輪詢
將請求按順序輪流的分配到伺服器上。每個服務平均分擔所有的請求。由於不關心服務的連線數和當前伺服器的負載情況,當每個伺服器配置不同,效能差別大時,就無法區別對待,產生問題。
權重
對每個伺服器都增加設定一個權重值,比如效能好的設定權重高點,效能差的設定權重低。這樣在分配服務權重大的更容易分配,達到“能者多勞”的效果。
雜湊和一致性雜湊
根據某 key 通過雜湊演算法,然後落在對應的節點上,可以保證同一個 key 都落在相同的伺服器上。比如使用使用者 UserId 計算雜湊值,落在某伺服器上。用於控制部分使用者都在分配該伺服器。但是當伺服器出現宕機,就可能導致雜湊鍵重新分佈,造成命中率大幅度下降。所以可以使用一致性雜湊,故障後有其他節點代替
最小連線數
每次請求都分配給連線數數量最小的伺服器。可以根據伺服器的負載情況來進行請求動態分發。伺服器效能好的,一般處理請求比較快,積壓的請求比較少分配到更多的請求。這樣可以避免某個伺服器因處理超出負載而出現問題。
還有很多其他的演算法,可以根據的需求使用。
面試回答
所以,如果回答該面試問題的話,我會從下面幾個角度,逐步回答自己的對負載均衡的理解:
- 先從是什麼進行回答
負載均衡是高可用網路基礎架構的關鍵元件。在叢集或分散式環境下,經常用於請求均衡命中到指定的伺服器上。當然還有資料儲存負載均衡,在分庫分表下,分發到對應的儲存裡。
- 使用負載均衡帶來好處或者目標,
用於將工作負載分佈到多個伺服器來提高網站、應用、資料庫或其他服務的效能和可靠性。
- 平時工作中哪些常見使用:Nginx,請求分發。比如某服務部署多個節點。
參考資料