人(rén)
已閱讀
已閱讀
負載均衡在APP開發中的(de)運用(yòng)
來(lái)源:lexintech.com 發布時(shí)間:2019-05-17
在APP開發項目中,服務器架構是關系到整個(gè)系統的(de)性能的(de)關鍵因素。無論是自己買的(de)服務器,還(hái)是用(yòng)雲服務器,負載均衡都是提高(gāo)系統性能的(de)主要方式。
如果你是早期的(de)雲計算(suàn)服務提供商,你可(kě)以使用(yòng)一個(gè)單獨的(de)客戶 web 服務器,爲它分(fēn)配一個(gè) IP 地址,并配置一個(gè) DNS(域名系統)記錄來(lái)将它與一個(gè)易讀的(de)名字關聯起來(lái),之後通(tōng)過 BGP(邊界網關協議(yì))來(lái)傳播 IP 地址,這(zhè)是種在網絡間交換路由信息的(de)标準方式。
在冗餘的(de)網絡路徑上分(fēn)發流量,在不可(kě)用(yòng)的(de)基礎設施周圍進行路由來(lái)提高(gāo)可(kě)用(yòng)性(會導緻不對(duì)稱路由等現象),這(zhè)些從本質上講并不是負載均衡。
如果你是早期的(de)雲計算(suàn)服務提供商,你可(kě)以使用(yòng)一個(gè)單獨的(de)客戶 web 服務器,爲它分(fēn)配一個(gè) IP 地址,并配置一個(gè) DNS(域名系統)記錄來(lái)将它與一個(gè)易讀的(de)名字關聯起來(lái),之後通(tōng)過 BGP(邊界網關協議(yì))來(lái)傳播 IP 地址,這(zhè)是種在網絡間交換路由信息的(de)标準方式。
在冗餘的(de)網絡路徑上分(fēn)發流量,在不可(kě)用(yòng)的(de)基礎設施周圍進行路由來(lái)提高(gāo)可(kě)用(yòng)性(會導緻不對(duì)稱路由等現象),這(zhè)些從本質上講并不是負載均衡。
随著(zhe)客戶服務流量的(de)增長(cháng),業務方希望獲得(de)更高(gāo)的(de)可(kě)用(yòng)性。你添加了(le)另一個(gè)具有公網 IP 地址的(de) web 服務器,并更新了(le) DNS 記錄來(lái)将用(yòng)戶引導到這(zhè)兩個(gè) web 服務器(希望稍微公平一些)。直到某一個(gè) web 服務器意外宕機前,這(zhè)種方法都是可(kě)行的(de)。假設你快(kuài)速檢測到故障,可(kě)以通(tōng)過更新 DNS 配置(手動方式或使用(yòng)軟件)來(lái)停止引用(yòng)損壞的(de)服務器。
遺憾的(de)是,由于 DNS 記錄是有緩存的(de),這(zhè)些緩存記錄可(kě)能會在客戶端或者 DNS 層次結構中的(de)其他(tā)名稱服務器中,在它們過期之前,大(dà)約有 50% 的(de)請求仍然可(kě)能失敗。DNS 記錄的(de) TTL(time to live,生存時(shí)間)通(tōng)常爲幾分(fēn)鐘(zhōng)或更長(cháng),因此這(zhè)會對(duì)系統的(de)可(kě)用(yòng)性造成重大(dà)影(yǐng)響。
更糟糕的(de)是一些客戶端完全忽略了(le) TTL,所以一些請求将在一段時(shí)間内被定向到已經宕機的(de) web 服務器上。設置非常短的(de) DNS TTL 也(yě)不是什(shén)麽好主意;這(zhè)意味著(zhe) DNS 服務的(de)負載增加,延遲增加,因爲客戶端不得(de)不更加頻(pín)繁地執行 DNS 查找。如果你的(de) DNS 服務不可(kě)用(yòng),那麽使用(yòng)更短的(de) TTL 訪問服務将更快(kuài)地降級,因爲緩存服務 IP 地址的(de)客戶端更少。
遺憾的(de)是,由于 DNS 記錄是有緩存的(de),這(zhè)些緩存記錄可(kě)能會在客戶端或者 DNS 層次結構中的(de)其他(tā)名稱服務器中,在它們過期之前,大(dà)約有 50% 的(de)請求仍然可(kě)能失敗。DNS 記錄的(de) TTL(time to live,生存時(shí)間)通(tōng)常爲幾分(fēn)鐘(zhōng)或更長(cháng),因此這(zhè)會對(duì)系統的(de)可(kě)用(yòng)性造成重大(dà)影(yǐng)響。
更糟糕的(de)是一些客戶端完全忽略了(le) TTL,所以一些請求将在一段時(shí)間内被定向到已經宕機的(de) web 服務器上。設置非常短的(de) DNS TTL 也(yě)不是什(shén)麽好主意;這(zhè)意味著(zhe) DNS 服務的(de)負載增加,延遲增加,因爲客戶端不得(de)不更加頻(pín)繁地執行 DNS 查找。如果你的(de) DNS 服務不可(kě)用(yòng),那麽使用(yòng)更短的(de) TTL 訪問服務将更快(kuài)地降級,因爲緩存服務 IP 地址的(de)客戶端更少。
爲了(le)解決這(zhè)個(gè)問題,你可(kě)以添加一對(duì)冗餘的(de) 4 層(Layer 4)網絡均衡器,并在相同的(de)虛拟 IP(VIP)地址提供服務。它們可(kě)以是硬件設備,或者像 HAProxy 這(zhè)樣的(de)軟件均衡器。這(zhè)意味著(zhe) DNS 記錄僅僅指向虛拟 IP 而不再做(zuò)負載均衡。
4 層均衡器将來(lái)自因特網的(de)流量均衡地引導至後端服務器。這(zhè)通(tōng)常是基于每個(gè) IP 包的(de) 5 元組的(de)哈希(一個(gè)數學函數)完成的(de):源 IP 地址和(hé)目标 IP 地址,以及端口加上協議(yì)(如 TCP 或 UDP)。這(zhè)種方式快(kuài)速、高(gāo)效(并且仍然維持了(le) TCP 的(de)基本屬性),并且不需要均衡器維護每個(gè)連接的(de)狀态。
4 層均衡器可(kě)以進行健康檢查,并僅僅向那些通(tōng)過檢查的(de) web 服務器發送流量。與 DNS 均衡不同的(de)是,如果一個(gè) web 服務器崩潰,将流量重定向到另一個(gè) web 服務器上的(de)延遲很小,盡管現有連接将被重置。
4 層均衡器可(kě)以做(zuò)加權平均,處理(lǐ)不同容量的(de)後端,它爲運維人(rén)員(yuán)提供了(le)強大(dà)的(de)能力和(hé)靈活性,同時(shí)在計算(suàn)能力方面相對(duì)便宜。
4 層均衡器可(kě)以進行健康檢查,并僅僅向那些通(tōng)過檢查的(de) web 服務器發送流量。與 DNS 均衡不同的(de)是,如果一個(gè) web 服務器崩潰,将流量重定向到另一個(gè) web 服務器上的(de)延遲很小,盡管現有連接将被重置。
4 層均衡器可(kě)以做(zuò)加權平均,處理(lǐ)不同容量的(de)後端,它爲運維人(rén)員(yuán)提供了(le)強大(dà)的(de)能力和(hé)靈活性,同時(shí)在計算(suàn)能力方面相對(duì)便宜。