最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

女朋友問我 LB 是誰?

2021-08-26 10:01 作者:程序員魚皮  | 我要投稿

科普一下 LB(負(fù)載均衡)技術(shù)

我的編程導(dǎo)航網(wǎng)站:www.code-nav.cn

大家好,我是魚皮。

周末在家寫代碼,無意中跟女朋友提了下 LB,還說 LB 好的呱呱叫。

她笑了笑,問我 LB 是誰?

我急忙解釋道:LB 它可不是活人,而是目前企業(yè)開發(fā)中常用的技術(shù) —— 負(fù)載均衡,下面讓我給你講講吧!

負(fù)載均衡

介紹

假如我們剛剛上線一個(gè)網(wǎng)站,最多只有 10 個(gè)人同時(shí)訪問,那么只需要把網(wǎng)站放到一臺(tái)服務(wù)器上就夠了,又叫 單機(jī)部署

隨著我們網(wǎng)站的不斷宣傳,可能出現(xiàn)上萬用戶同時(shí)訪問的情況。由于一臺(tái)服務(wù)器的 CPU、內(nèi)存、帶寬等資源都是有限的,無法同時(shí)支撐那么多用戶。因此可能需要多臺(tái)服務(wù)器一起來扛,分?jǐn)傆脩舻恼?qǐng)求,你一半我一半,又叫 集群部署

但這樣有個(gè)問題,每個(gè)服務(wù)器都有一個(gè)不同的 IP 地址,想把用戶的請(qǐng)求分?jǐn)偟讲煌姆?wù)器上,總不能讓用戶自己去輸入不同的 IP 訪問吧?

因此,我們還需要一臺(tái) 代理服務(wù)器 ,對(duì)外提供 唯一 的入口,統(tǒng)一 接受用戶的請(qǐng)求。再根據(jù)請(qǐng)求(或流量)的 特征 ,依據(jù)一定的 算法 ,將請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)部的服務(wù)器集群中,如圖:

這樣對(duì)于用戶來說,始終通過一個(gè)域名訪問網(wǎng)站即可,他完全感知不到你的網(wǎng)站到底部署到多少臺(tái)服務(wù)器上、也不關(guān)心它是如何部署的。

這便是 負(fù)載均衡(Load Balancing 簡(jiǎn)稱 LB),是企業(yè)中最重要的高并發(fā)解決方案之一。

作用

負(fù)載均衡最直觀的作用就是提高系統(tǒng)的并發(fā)度,說人話就是允許更多人同時(shí)訪問了。

它還可以提高整個(gè)系統(tǒng)的可用性,假如集群中有一臺(tái)服務(wù)器掛了,代理服務(wù)器只要不再把請(qǐng)求轉(zhuǎn)發(fā)給它就行了,集群中的其他服務(wù)器仍然能夠正常地接受和處理請(qǐng)求。

此外,負(fù)載均衡還能夠減少用戶等待響應(yīng)的時(shí)間、通過并行提高整個(gè)系統(tǒng)的處理能力等。

分類

雖然通過代理服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求能夠提升整個(gè)系統(tǒng)的并發(fā)訪問數(shù),但不要忘了,代理服務(wù)器本身的資源也是有限的?。∠癖容^常用的 Nginx 代理,能有個(gè)幾萬并發(fā)就撐死了。如果同時(shí)訪問的用戶量再大一點(diǎn),不就忍不下了么?!

而且代理服務(wù)器也存在掛掉的可能性,一旦它掛了,后果不堪設(shè)想。

因此,我們可以將負(fù)載均衡進(jìn)行分類,針對(duì)不同的場(chǎng)景來選擇相對(duì)合適的實(shí)現(xiàn)方式。

比較常見的分類方法是:根據(jù) 計(jì)算機(jī)網(wǎng)絡(luò)七層模型 ,按照負(fù)載均衡所屬的網(wǎng)絡(luò)層次去區(qū)分。

下面這張計(jì)算機(jī)網(wǎng)絡(luò)模型圖還是很棒的:

計(jì)算機(jī)網(wǎng)絡(luò)模型

有關(guān)計(jì)算機(jī)網(wǎng)絡(luò)的知識(shí)非本文重點(diǎn),大家可以自行去了解,不懂也沒關(guān)系,可以接著往下看。

無論是哪層負(fù)載均衡,都需要有代理服務(wù)器,并且對(duì)外提供唯一的 IP 地址,然后根據(jù)算法將請(qǐng)求轉(zhuǎn)發(fā)到目標(biāo)服務(wù)器(實(shí)際處理請(qǐng)求的服務(wù)器)。只不過實(shí)現(xiàn)轉(zhuǎn)發(fā)的原理和邏輯不同罷了。

二層負(fù)載均衡

二層指數(shù)據(jù)鏈路層,數(shù)據(jù)以數(shù)據(jù)幀的形式通過交換機(jī)進(jìn)行傳輸。

這一層是沒有 IP 地址概念的,只能用 MAC 地址對(duì)機(jī)器進(jìn)行區(qū)分。因此負(fù)載均衡服務(wù)器會(huì)通過一個(gè)虛擬 MAC 地址接受請(qǐng)求,并通過改寫報(bào)文目標(biāo) MAC 地址的方式將請(qǐng)求轉(zhuǎn)發(fā)到具有不同 MAC 地址的目標(biāo)機(jī)器。

二層負(fù)載均衡最原始、性能極高。但只能通過硬件設(shè)備實(shí)現(xiàn),比如 F5、Array 等,價(jià)格十分昂貴。

主要的底層實(shí)現(xiàn)方式就是 PPP 捆綁和鏈路聚合技術(shù),這里不做贅述,對(duì)于開發(fā)同學(xué)來說,大家一般也接觸不到二層負(fù)載均衡。

三層負(fù)載均衡

三層即網(wǎng)絡(luò)層,這一層開始有了 IP 地址的概念,可以根據(jù) IP 地址路由網(wǎng)絡(luò)。

這一層的負(fù)載均衡設(shè)備會(huì)對(duì)外提供一個(gè)虛擬的 IP 地址(VIP)以接收請(qǐng)求,然后根據(jù)算法將請(qǐng)求轉(zhuǎn)發(fā)到 IP 地址不同的目標(biāo)機(jī)器。

和二層一樣,三層負(fù)載均衡也是通過硬件設(shè)備實(shí)現(xiàn),成本也比較高。

四層負(fù)載均衡

四層即傳輸層,除了包含三層的 IP 地址信息之外,還多了源目端口號(hào)的概念,可以區(qū)分同一機(jī)器上不同的應(yīng)用。

由于得到了更多的信息,這一層的負(fù)載均衡會(huì)更加靈活,對(duì)外提供一個(gè)虛擬的 IP 地址 + 端口號(hào)來接收請(qǐng)求,然后根據(jù)算法將請(qǐng)求轉(zhuǎn)發(fā)到不同目標(biāo)機(jī)器的不同端口上。

四層負(fù)載均衡可以通過軟件實(shí)現(xiàn),比如主流且開源的 LVS(Linux Virtual Server),底層可選多種負(fù)載模式,比如 NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)、DR(直接路由)、TUN(隧道)。

四層負(fù)載均衡的優(yōu)點(diǎn)是:一方面是性能很高、比較穩(wěn)定,支撐個(gè)十幾萬、幾十萬并發(fā)不成問題;另一方面是成本低、純軟件實(shí)現(xiàn),因此在企業(yè)中的應(yīng)用很廣泛。

七層負(fù)載均衡

七層指應(yīng)用層,是計(jì)算機(jī)網(wǎng)絡(luò)模型的最上層,因此能得到請(qǐng)求最為詳細(xì)的信息,比如 HTTP 請(qǐng)求頭等。

可以根據(jù)域名或主機(jī) IP + 端口接收請(qǐng)求,并通過應(yīng)用層信息(請(qǐng)求頭、Cookie 等)靈活地轉(zhuǎn)發(fā)請(qǐng)求,比如將手機(jī)端用戶轉(zhuǎn)發(fā)到服務(wù)器 A、桌面端用戶轉(zhuǎn)發(fā)到服務(wù)器 B 等。

這種方式實(shí)現(xiàn)成本最低,也最為靈活,因此也是我們應(yīng)用開發(fā)人員最常用的了。

實(shí)現(xiàn)方式多種多樣,比如主流的 Nginx、HAProxy 都可以,寫個(gè)配置基本就能轉(zhuǎn)發(fā)請(qǐng)求了,大部分情況下性能也夠用了。

再提一下所屬于這層的 DNS 負(fù)載均衡 ,基于 DNS 域名解析服務(wù),可以將同一個(gè)域名解析為不同的 IP 地址,從而讓用戶訪問到不同服務(wù)器上的項(xiàng)目。

這種方式實(shí)現(xiàn)起來不難,但轉(zhuǎn)發(fā)邏輯不夠靈活,而且 DNS ?存在緩存,不利于修改。

除了上面講到的這些,負(fù)載均衡還有很多學(xué)問,比如負(fù)載均衡算法(比如常用的靜態(tài)輪詢、動(dòng)態(tài)連接數(shù)等)、高可用等,這些大家自行了解和實(shí)踐下就好了,具體場(chǎng)景具體分析。

以上,我是魚皮,本文有用還請(qǐng) 點(diǎn)贊 支持下。

歡迎閱讀 我自學(xué)進(jìn)入騰訊的編程學(xué)習(xí)和求職經(jīng)歷,不再迷茫!

指路:https://t.1yb.co/w66s

女朋友問我 LB 是誰?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
虹口区| 柞水县| 中宁县| 合作市| 德格县| 大庆市| 高台县| 舒城县| 徐闻县| 八宿县| 武清区| 尼木县| 清徐县| 阿勒泰市| 綦江县| 抚松县| 深泽县| 思茅市| 铜陵市| 芜湖市| 辉县市| 札达县| 长海县| 应用必备| 贺兰县| 东山县| 晋州市| 嘉荫县| 崇义县| 集贤县| 永寿县| 桐柏县| 邵东县| 若羌县| 博客| 淄博市| 嘉黎县| 揭阳市| 凭祥市| 都昌县| 监利县|