任何在線服務(wù)提供商的兩個(gè)最關(guān)鍵要求是可用性和冗余。服務(wù)器響應(yīng)請(qǐng)求所需的時(shí)間因其當(dāng)前容量而異。如果即使單個(gè)組件發(fā)生故障或被請(qǐng)求淹沒,服務(wù)器也會(huì)過載,客戶和業(yè)務(wù)都會(huì)受到影響。
負(fù)載平衡嘗試通過跨多個(gè)組件共享工作負(fù)載來解決此問題。傳入的請(qǐng)求可以從過載的服務(wù)器路由到具有更多可用資源的服務(wù)器。負(fù)載平衡具有從網(wǎng)絡(luò)交換機(jī)到數(shù)據(jù)庫(kù)服務(wù)器的各種應(yīng)用程序。
負(fù)載平衡如何工作
服務(wù)提供商通常使用面向Internet的前端服務(wù)器來構(gòu)建其網(wǎng)絡(luò),以便將信息傳送到后端服務(wù)器或從后端服務(wù)器傳送信息。這些前端服務(wù)器包含負(fù)載平衡軟件,可根據(jù)資源可用性將請(qǐng)求轉(zhuǎn)發(fā)到其中一個(gè)后端服務(wù)器。負(fù)載平衡軟件包含內(nèi)部規(guī)則和邏輯,用于確定轉(zhuǎn)發(fā)每個(gè)請(qǐng)求的時(shí)間和位置。
以下是負(fù)載平衡如何工作的概述:
用戶打開Goog??le.com等網(wǎng)頁(yè)
前端服務(wù)器接收請(qǐng)求并確定將其轉(zhuǎn)發(fā)的位置??梢允褂酶鞣N算法來確定轉(zhuǎn)發(fā)請(qǐng)求的位置,其中一些更基本的算法包括隨機(jī)選擇或循環(huán)。如果沒有可用的后端服務(wù)器,則前端服務(wù)器執(zhí)行預(yù)定的操作,例如向用戶返回錯(cuò)誤消息。
后端服務(wù)器處理請(qǐng)求并生成響應(yīng)。同時(shí),后端服務(wù)器定期向負(fù)載均衡器報(bào)告其當(dāng)前狀態(tài)。
后端服務(wù)器向前端服務(wù)器返回響應(yīng),然后將其轉(zhuǎn)發(fā)給用戶。
如果一切順利,無(wú)論服務(wù)提供商的網(wǎng)絡(luò)狀態(tài)如何,用戶都將及時(shí)收到響應(yīng)。如果至少有一個(gè)前端服務(wù)器和至少一個(gè)后端服務(wù)器可用,則正確處理用戶的請(qǐng)求。
負(fù)載平衡示例
Google的計(jì)算引擎基于多種Google產(chǎn)品使用的相同負(fù)載平衡技術(shù),包括Gmail,搜索和Google廣告。Compute Engine會(huì)定期檢查所有后端服務(wù)器的狀態(tài),并根據(jù)其當(dāng)前負(fù)載將其標(biāo)記為健康或不健康。
當(dāng)用戶連接到Google服務(wù)時(shí),Compute Engine會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給健康的服務(wù)器。然后,響應(yīng)從健康的服務(wù)器通過計(jì)算引擎轉(zhuǎn)發(fā)回用戶。同時(shí),不健康的服務(wù)器被修復(fù),更換或脫機(jī)。
通過負(fù)載平衡,可以升級(jí)服務(wù)器,而不會(huì)中斷最終用戶的體驗(yàn)。Google和其他服務(wù)提供商通過波浪升級(jí)其后端服務(wù)器來推動(dòng)應(yīng)用程序更新。例如,當(dāng)服務(wù)器脫機(jī)升級(jí)時(shí),其他服務(wù)器負(fù)責(zé)工作負(fù)載,然后依次更新。
在計(jì)算引擎中,使系統(tǒng)脫機(jī)以進(jìn)行維護(hù)和升級(jí)的能力稱為“跛鴨模式”。這就是即使在活動(dòng)會(huì)話之間,Google的網(wǎng)絡(luò)產(chǎn)品也可以無(wú)縫更新的方式。
負(fù)載平衡的好處
負(fù)載平衡使系統(tǒng)管理員可以更輕松地處理傳入請(qǐng)求,同時(shí)減少用戶的等待時(shí)間
用戶體驗(yàn)更快,不間斷的服務(wù)。用戶不必等待單個(gè)苦苦掙扎的服務(wù)器完成其先前的任務(wù)。相反,他們的請(qǐng)求會(huì)立即傳遞給更容易獲得的資源。
服務(wù)提供商可以減少停機(jī)時(shí)間并提高吞吐量。即使是完整的服務(wù)器故障也不會(huì)影響最終用戶體驗(yàn),因?yàn)樨?fù)載均衡器只會(huì)將其路由到健康的服務(wù)器。
系統(tǒng)管理員體驗(yàn)較少的故障或壓力組件。負(fù)載平衡有幾個(gè)設(shè)備執(zhí)行一些工作,而不是單個(gè)設(shè)備執(zhí)行大量工作。