偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

深入理解負(fù)載均衡經(jīng)典案例

網(wǎng)絡(luò) 通信技術(shù) 數(shù)據(jù)中心
負(fù)載均衡是高可用架構(gòu)的一個關(guān)鍵組件,主要用來提高性能和可用性,通過負(fù)載均衡將流量分發(fā)到多個服務(wù)器,同時多服務(wù)器能夠消除這部分的單點(diǎn)故障。

前言

閑來無事寫篇文章總結(jié)下負(fù)載均衡。

負(fù)載均衡

負(fù)載均衡是高可用架構(gòu)的一個關(guān)鍵組件,主要用來提高性能和可用性,通過負(fù)載均衡將流量分發(fā)到多個服務(wù)器,同時多服務(wù)器能夠消除這部分的單點(diǎn)故障

當(dāng)然負(fù)載均衡器本身就是一個單點(diǎn)故障隱患,可以考慮文章后面說的負(fù)載均衡雙機(jī)熱備或其他方案消除單點(diǎn)故障提高可用性。

一個沒有使用負(fù)載均衡的Web架構(gòu)一般會長得像這樣:

沒有負(fù)載均衡的架構(gòu)

在這個例子里面,用戶直接通過yourdomain.com連接Web Server,如果這一個Web Server掛了那么整個系統(tǒng)都無法使用,也就是我們常說的系統(tǒng)中的單點(diǎn)故障,同樣如果大量的用戶同時訪問這一臺服務(wù)器,那么這些用戶很可能會遇到加載時間緩慢或者根本無法連接的問題。

這部分的單點(diǎn)故障可以通過引入負(fù)載均衡器和至少另一個Web Server來緩解。一般來說所有后端服務(wù)器會提供相同的內(nèi)容,以便用戶無論訪問哪個服務(wù)器都會收到一致的內(nèi)容。同時由于有多臺服務(wù)器同時提供服務(wù),也加大了系統(tǒng)的負(fù)載能力提高了性能。

負(fù)載均衡可以處理哪些類型的流量

由于一般程序員接觸到的負(fù)載均衡可能大多都是處理HTTP、HTTPS流量的,但實(shí)際上負(fù)載均衡還可以處理TCP和UDP流量(比如對數(shù)據(jù)庫集群的訪問、DNS等)。

負(fù)載均衡算法

負(fù)載均衡算法用于確定流量應(yīng)該被分發(fā)到哪一個健康的服務(wù)器上,常見的幾個算法如下:

Round Robin — 輪轉(zhuǎn)(Round Robin)意味著服務(wù)器會被按順序地選擇,比如負(fù)載均衡器會將第一個請求分配給第一個服務(wù)器,然后下一個請求分配給第二個服務(wù)器,這樣分配下去分配完一輪之后回到開頭分配給第一個服務(wù)器(操作系統(tǒng)調(diào)度算法復(fù)習(xí)一下)。這種方式比較適合各服務(wù)器處理能力相同而且每個業(yè)務(wù)處理量差不多的時候。

Least Connections — 最少連接(Least Connections)這個算法意味著負(fù)載均衡器會選擇當(dāng)前連接最少的服務(wù)器。

IP hash — 在這個算法下,負(fù)載均衡器根據(jù)請求源的IP來決定分發(fā)給哪個服務(wù)器。這個方法保證了一個特定的用戶會一直訪問相同的服務(wù)器。

其他還有一些不算太常見的算法,比如Url hash、Random等。

健康檢測(health checks)

在負(fù)載均衡算法一節(jié)中我們有一個前提,就是流量只會被分配到健康的服務(wù)器上,那么負(fù)載均衡器怎么去判斷服務(wù)器現(xiàn)在是否健康呢?

為了監(jiān)控健康的服務(wù)器,健康檢查一般會通過配置的協(xié)議和端口嘗試去連接服務(wù)器來保證服務(wù)器正在監(jiān)聽。如果一個服務(wù)器的健康檢查失敗了,也就是說服務(wù)器無法正常響應(yīng)請求,那么就會被自動的移除池子中,流量也不會被分配到這個壞掉的服務(wù)器直到它能通過健康檢查。

這塊具體的方式可以參考阿里云關(guān)于負(fù)載均衡的文檔健康檢查原理

負(fù)載均衡如何處理狀態(tài)

我們都知道基于session的用戶認(rèn)證會在服務(wù)器存有session的一些信息,但當(dāng)系統(tǒng)引入負(fù)載均衡的時候這樣會出現(xiàn)一些問題。

舉個電商網(wǎng)站的例子,當(dāng)用戶U發(fā)送的登錄請求被分發(fā)到了服務(wù)器S1并在服務(wù)器中記錄了session信息,而當(dāng)用戶想要提交購物請求的時候這個請求被分發(fā)到了服務(wù)器S2,但服務(wù)器S2并沒有保存用戶U的session信息。

為了解決這個問題一個是可以使用之前說的IP hash算法,這個算法根據(jù)IP來分配流量對應(yīng)的服務(wù)器,所以可以保證同一個用戶的流量會訪問到同一個服務(wù)器。另一個應(yīng)用層的方法是sticky session,中文應(yīng)該叫粘性會話,負(fù)載均衡器會設(shè)置一個cookie然后帶有這個cookie的session都會被分配到同一個服務(wù)器上。

負(fù)載均衡雙機(jī)熱備(Hot standby)

正如開頭所說,負(fù)載均衡器本身就是一個單點(diǎn)故障隱患,其中一個解決方案就是雙機(jī)熱備(提高可用性的一大基本方法就是冗余)。

雙機(jī)熱備方案為了解決負(fù)載均衡器的單點(diǎn)故障問題,引入了第二個負(fù)載均衡器,當(dāng)主節(jié)點(diǎn)GG了之后切換到備用節(jié)點(diǎn)。在網(wǎng)上找了個比較形象的gif:

我自己之前畢業(yè)設(shè)計的架構(gòu)用了雙機(jī)熱備,實(shí)現(xiàn)上主要是通過keepalived實(shí)現(xiàn)nginx的高可用

后記

這篇文章算是對于負(fù)載均衡的一個初步總結(jié)和一些自己的理解,比較適合希望對負(fù)載均衡有個初步全面了解的人,但由于我個人只是個萌新所以很多進(jìn)階的東西比如LVS啥的和一些大廠的實(shí)踐分析都沒加也暫時沒能力加,以后如果有接觸再補(bǔ)上吧(坑我先挖了)。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2020-01-14 09:40:00

Nginx負(fù)載均衡正向代理

2024-08-29 08:41:50

2021-10-10 13:31:14

Java負(fù)載均衡算法

2021-10-21 10:02:37

Java開發(fā)代碼

2016-12-08 15:36:59

HashMap數(shù)據(jù)結(jié)構(gòu)hash函數(shù)

2010-06-01 15:25:27

JavaCLASSPATH

2020-07-21 08:26:08

SpringSecurity過濾器

2020-09-23 10:00:26

Redis數(shù)據(jù)庫命令

2019-06-25 10:32:19

UDP編程通信

2017-01-10 08:48:21

2024-02-21 21:14:20

編程語言開發(fā)Golang

2025-05-06 00:43:00

MySQL日志文件MIXED 3

2017-08-15 13:05:58

Serverless架構(gòu)開發(fā)運(yùn)維

2025-06-05 05:51:33

2023-10-19 11:12:15

Netty代碼

2021-02-17 11:25:33

前端JavaScriptthis

2009-09-25 09:14:35

Hibernate日志

2013-09-22 14:57:19

AtWood

2012-11-22 13:02:24

jQuery插件Web

2021-11-18 09:20:29

Channel語言代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號