在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

大家知道什么是負載均衡嗎

開關電源芯片 ? 來源:博客園 ? 作者:ErnestEvan ? 2021-08-14 14:32 ? 次閱讀

相信大家都聽過這樣的一道經(jīng)典面試題:「請說出在淘寶網(wǎng)輸入一個關鍵詞到最終展示網(wǎng)頁的整個流程,越詳細越好」

這個問題很難,涉及到 HTTP,TCP,網(wǎng)關,LVS 等一系列相關的概念及諸多協(xié)議的工作機制,如果你能掌握到這其中的每個知識點,那將極大地點亮你的技能樹,對于網(wǎng)絡是如何運作也會了然于胸,即便不能完全掌握,但知道流量怎么流轉(zhuǎn)的對你排查定位問題會大有幫助。

我之前就利用這些知識定位到不少問題,為了弄清楚整個流程,我查閱了很多資料,相信應該可以把這個問題講明白,不過寫著寫著發(fā)現(xiàn)篇幅實在太長,所以分為上下兩篇來分別介紹一下,本篇先介紹流量在后端的的整體架構圖,下一篇會深入剖析各個細節(jié)點,如 LVS ,NAT 的工作細節(jié)等,這其中會涉及到交換機,路由器的工作機制等知識點,相信大家看了肯定有幫助

李大牛創(chuàng)業(yè)了,由于前期沒啥流量,所以他只部署了一臺 tomcat server,讓客戶端將請求直接打到這臺 server 上

這樣部署一開始也沒啥問題,因為業(yè)務量不是很大,單機足以扛住,但后來李大牛的業(yè)務踩中了風口,業(yè)務迅猛發(fā)展,于是單機的性能逐漸遇到了瓶頸,而且由于只部署了一臺機器,這臺機器掛掉了業(yè)務也就跌零了,這可不行,所以為了避免單機性能瓶頸與解決單點故障的隱患,李大牛決定多部署幾臺機器(假設為三臺),這樣可以讓 client 隨機打向其中的一臺機器,這樣就算其中一臺機器掛了,另外的機器還存活,讓 client 打向其它沒有宕機的機器即可

現(xiàn)在問題來了,client 到底該打向這三臺機器的哪一臺呢,如果讓 client 來選擇肯定不合適,因為如果讓 client 來選擇具體的 server,那么它必須知道有哪幾臺 server,然后再用輪詢等方式隨機連接其中一臺機器,但如果其中某臺 server 宕機了,client 是無法提前感知到的。

那么很可能 client 會連接到這臺掛掉的 server 上,所以選擇哪臺機器來連接的工作最好放在 server 中,具體怎么做呢,在架構設計中有個經(jīng)典的共識:沒有什么是加一層解決不了的,如果有那就再加一層,所以我們在 server 端再加一層,將其命名為 LB(Load Balance,負載均衡),由 LB 統(tǒng)一接收 client 的請求,然后再由它來決定具體與哪一個 server 通信,一般業(yè)界普遍使用 Nginx 作為 LB

采用這樣的架構設計總算支撐了業(yè)務的快速增長,但隨后不久李大牛發(fā)現(xiàn)這樣的架構有點問題:所有的流量都能打到 server 上,這顯然是有問題的,不太安全,那能不能在流量打到 server 前再做一層鑒權操作呢,鑒權通過了我們才讓它打到 server 上,我們把這一層叫做網(wǎng)關(為了避免單點故障,網(wǎng)關也要以集群的形式存在)

這樣的話所有的流量在打到 server 前都要經(jīng)過網(wǎng)關這一層,鑒權通過后才把流量轉(zhuǎn)發(fā)到 server 中,否則就向 client 返回報錯信息,除了鑒權外,網(wǎng)關還起到風控(防止羊毛黨),協(xié)議轉(zhuǎn)換(比如將 HTTP 轉(zhuǎn)換成 Dubbo),流量控制等功能,以最大程度地保證轉(zhuǎn)發(fā)給 server 的流量是安全的,可控的。

這樣的設計持續(xù)了很長一段時間,但是后來李大牛發(fā)現(xiàn)這樣的設計其實還是有問題,不管是動態(tài)請求,還是靜態(tài)資源(如 js,css文件)請求都打到 tomcat 了,這樣在流量大時會造成 tomcat 承受極大的壓力,其實對于靜態(tài)資源的處理 tomcat 不如 Nginx,tomcat 每次都要從磁盤加載文件比較影響性能,而 Nginx 有 proxy cache 等功能可以極大提升對靜態(tài)資源的處理能力。

畫外音:所謂的 proxy cache 是指 nginx 從靜態(tài)資源服務器上獲取資源后會緩存在本地的內(nèi)存+磁盤中,下次請求如果命中緩存就從 Nginx 本機的 Cache 中直接返回了

所以李大牛又作了如下優(yōu)化:如果是動態(tài)請求,則經(jīng)過 gateway 打到 tomcat,如果是 Nginx,則打到靜態(tài)資源服務器上

這就是我們所說的動靜分離,將靜態(tài)請求與動態(tài)請求分開,這樣 tomcat 就可以專注于處理其擅長的動態(tài)請求,而靜態(tài)資源由于利用到了 Nginx 的 proxy cache 等功能,后端的處理能力又上了一個臺階。

另外需要注意的是并不是所有的動態(tài)請求都需要經(jīng)過網(wǎng)關,像我們的運營中心后臺由于是內(nèi)部員工使用的,所以它的鑒權與網(wǎng)關的 api 鑒權并不相同,所以我們直接部署了兩臺運營中心的 server ,直接讓 Nginx 將運營中心的請求打到了這兩臺 server 上,繞過了網(wǎng)關。

當然為了避免單點故障 Nginx 也需要部署至少兩臺機器,于是我們的架構變成了下面這樣,Nginx 部署兩臺,以主備的形式存在,備 Nginx 會通過 keepalived 機制(發(fā)送心跳包) 來及時感知到主 Nginx 的存活,發(fā)現(xiàn)宕機自己就頂上充當主 Nginx 的角色

看起來這樣的架構確實不錯,但要注意的是 Nginx 是七層(即應用 層)負載均衡器 ,這意味著如果它要轉(zhuǎn)發(fā)流量首先得和 client 建立一個 TCP 連接,并且轉(zhuǎn)發(fā)的時候也要與轉(zhuǎn)發(fā)到的上游 server 建立一個 TCP 連接,而我們知道建立 TCP 連接其實是需要耗費內(nèi)存(TCP Socket,接收/發(fā)送緩存區(qū)等需要占用內(nèi)存)的,客戶端和上游服務器要發(fā)送數(shù)據(jù)都需要先發(fā)送暫存到到 Nginx 再經(jīng)由另一端的 TCP 連接傳給對方。

所以 Nginx 的負載能力受限于機器I/O,CPU內(nèi)存等一系列配置,一旦連接很多(比如達到百萬)的話,Nginx 抗負載能力就會急遽下降。

經(jīng)過分析可知 Nginx 的負載能力較差主要是因為它是七層負載均衡器必須要在上下游分別建立兩個 TCP 所致,那么是否能設計一個類似路由器那樣的只負載轉(zhuǎn)發(fā)包但不需要建立連接的負載均衡器呢,這樣由于不需要建立連接,只負責轉(zhuǎn)發(fā)包,不需要維護額外的 TCP 連接,它的負載能力必然大大提升,于是四層負載均衡器 LVS 就誕生了,簡單對比下兩者的區(qū)別

可以看到 LVS 只是單純地轉(zhuǎn)發(fā)包,不需要和上下游建立連接即可轉(zhuǎn)發(fā)包,相比于 Nginx 它的抗負載能力強、性能高(能達到 F5 硬件的 60%),對內(nèi)存和cpu資源消耗比較低

那么四層負載均衡器是如何工作的呢

負載均衡設備在接收到第一個來自客戶端的SYN 請求時,即通過負載均衡算法選擇一個最佳的服務器,并對報文中目標IP地址進行修改(改為后端服務器 IP ),直接轉(zhuǎn)發(fā)給該服務器。TCP 的連接建立,即三次握手是客戶端和服務器直接建立的,負載均衡設備只是起到一個類似路由器的轉(zhuǎn)發(fā)動作。在某些部署情況下,為保證服務器回包可以正確返回給負載均衡設備,在轉(zhuǎn)發(fā)報文的同時可能還會對報文原來的源地址進行修改。

綜上所述,我們在 Nginx 上再加了一層 LVS,以讓它來承接我們的所有流量,當然為了保證 LVS 的可用性,我們也采用主備的方式部署 LVS,另外采用這種架構如果 Nginx 容量不夠我們可以很方便地進行水平擴容,于是我們的架構改進如下:

當然只有一臺 LVS 的話在流量很大的情況下也是扛不住的,怎么辦,多加幾臺啊,使用 DNS 負載均衡,在 DNS 服務器解析域名的時候隨機打到其中一臺 LVS 不就行了

通過這樣的方式終于可以讓流量穩(wěn)定流轉(zhuǎn)了,有個點可能一些朋友會有疑問,下面我們一起來看看

既然 LVS 可以采用部署多臺的形式來避免單點故障,那 Nginx 也可以啊,而且 Nginx 在 1.9 之后也開始支持四層負載均衡了,所以貌似 LVS 不是很有必要?

通過部署多臺 Nginx 的方式在流量不是那么大的時候確實是可行,但 LVS 是 Linux 的內(nèi)核模塊,工作在內(nèi)核態(tài),而 Nginx 工作在用戶態(tài),也相對比較重,所以在性能和穩(wěn)定性上 Nginx 是不如 LVS 的,這就是為什么我們要采用 LVS + Nginx 的部署方式。

另外相信大家也注意到了,如果流量很大時,靜態(tài)資源應該部署在 CDN 上, CDN 會自動選擇離用戶最近的節(jié)點返回給用戶,所以我們最終的架構改進如下

總結架構一定要結合業(yè)務的實際情況來設計,脫離業(yè)務談架構其實是耍流氓,可以看到上文每一個架構的衍化都與我們的業(yè)務發(fā)展息息相關,對于中小型流量沒有那么大的公司,其實用 Nginx 作為負載均衡足夠,在流量迅猛增長后則考慮使用 lvs+nginx,當然像美團這樣的巨量流量(數(shù)十 Gbps的流量、上千萬的并發(fā)連接),lvs 也不管用了(實測雖然使用了 lvs 但依然出現(xiàn)了不少丟包的現(xiàn)象)所以它們開發(fā)出了自己的一套四層負載均衡器 MGW

另外看了本文相信大家對分層的概念應該有更透徹的理解,沒有什么是分層解決不了的事,如果有,那就再多加一層,分層使每個模塊各司其職,功能解藕,而且方便擴展,大家很熟悉的 TCP/IP 就是個很好的例子,每層只管負責自己的事,至于下層是什么實現(xiàn)的上層是不 care 的

以上就是本文的全部內(nèi)容,希望大家看了有收獲

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HTTP
    +關注

    關注

    0

    文章

    511

    瀏覽量

    31434
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1378

    瀏覽量

    79225
  • NAT
    NAT
    +關注

    關注

    0

    文章

    146

    瀏覽量

    16281

原文標題:你管這破玩意兒叫負載均衡?

文章出處:【微信號:gh_3980db2283cd,微信公眾號:開關電源芯片】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    云服務器怎么做負載均衡

    云 服務器怎么做負載均衡 ? 云服務器的負載均衡通過分配策略、自動擴展、健康檢查和跨區(qū)域部署四個核心技術來實現(xiàn)。 分配策略包括輪詢、權重分配和最少連接數(shù),確保流量均勻分配。自動擴展根據(jù)
    的頭像 發(fā)表于 12-24 10:40 ?134次閱讀

    常見的lvs負載均衡算法

    常見的lvs負載均衡算法包括輪詢(RR)、加權輪詢(WRR)、最小連接(LC)、加權最小連接(WLC)、基于局部性的最少鏈接(LBLC)、帶復制的LBLC(LBLCR)、目標地址散列(DH)、源地址
    的頭像 發(fā)表于 12-12 13:50 ?150次閱讀

    負載均衡服務器與服務器如何連接?

    負載均衡服務器與服務器如何連接?負載均衡服務器與服務器可通過多種方式連接,包括直接連接、交換機連接、路由器連接以及云計算環(huán)境中的連接。小型網(wǎng)絡常采用直接連接,中大型網(wǎng)絡則常用交換機或路
    的頭像 發(fā)表于 12-09 13:41 ?157次閱讀

    常用的服務器負載均衡多少錢一臺?

    服務器負載均衡的價格因配置、功能、類型(硬件、軟件或云服務)及服務提供商不同而異。硬件負載均衡價格區(qū)間大,從數(shù)千元到數(shù)十萬元不等;軟件負載
    的頭像 發(fā)表于 12-05 11:52 ?125次閱讀

    多鏈路負載均衡設置在哪里?

    多鏈路負載均衡設置涉及交換機、路由器和(可選)負載均衡器的設置。首先規(guī)劃網(wǎng)絡拓撲和IP地址,備份設備配置。然后,在交換機上配置VLAN和Trunk鏈路,在路由器上配置接口、路由協(xié)議和策
    的頭像 發(fā)表于 11-13 10:19 ?179次閱讀

    nginx負載均衡配置介紹

    目錄 nginx負載均衡 nginx負載均衡介紹 反向代理與負載均衡 nginx
    的頭像 發(fā)表于 11-10 13:39 ?299次閱讀
    nginx<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>配置介紹

    華納云:什么是負載均衡?優(yōu)化資源利用率的策略

    負載均衡是現(xiàn)代計算機網(wǎng)絡架構中不可或缺的一部分,它通過智能分配請求和任務,確保系統(tǒng)資源的高效利用。本文將探討負載均衡的概念、工作原理、優(yōu)化資源利用率的策略及其在實際應用中的重要性。 1
    的頭像 發(fā)表于 10-28 16:07 ?212次閱讀

    天翼云彈性負載均衡介紹

    負載均衡(Load Balancing)是一種優(yōu)化資源分配的技術,主要用于在網(wǎng)絡環(huán)境中分散工作負載,以提高系統(tǒng)的響應速度、吞吐量以及可靠性。在互聯(lián)網(wǎng)服務中,當單臺服務器無法處理大量并發(fā)請求時,就需要
    的頭像 發(fā)表于 10-25 16:20 ?695次閱讀
    天翼云彈性<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>介紹

    IPVS負載均衡原理解析

    ipvs (IP Virtual Server) 實現(xiàn)了傳輸層負載均衡,也就是我們常說的4層LAN交換,作為 Linux 內(nèi)核的一部分。ipvs運行在主機上,在真實服務器集群前充當負載均衡
    的頭像 發(fā)表于 10-24 17:34 ?266次閱讀

    零基礎也可以搞懂負載均衡怎么配置!

    負載均衡怎么配置?在Linux中配置負載均衡器的步驟涉及多個環(huán)節(jié),包括選擇負載均衡軟件、安裝
    的頭像 發(fā)表于 10-12 15:58 ?278次閱讀

    負載器的作用有哪些

    負載器,也稱為負載均衡器,是一種網(wǎng)絡設備,用于在多個服務器之間分配網(wǎng)絡或應用程序流量,以優(yōu)化資源使用、最大化吞吐量、最小化響應時間,并避免任何單一服務器的過載。負載
    的頭像 發(fā)表于 10-10 11:28 ?302次閱讀

    負載均衡是什么意思?盤點常見的三種方式

    負載均衡是什么意思?負載均衡(LoadBalancing)是一種計算機技術,主要用于在多個計算資源(如服務器、虛擬機、容器等)中分配和管理負載
    的頭像 發(fā)表于 09-29 14:30 ?325次閱讀

    負載均衡服務由幾部分組成?分別是什么

    均衡服務通常由六部分組成,分別是客戶端、負載均衡器、后端服務器、負載均衡算法、監(jiān)控和健康檢查及會話保持。這六者互相協(xié)同工作,實現(xiàn)了流量的有效
    的頭像 發(fā)表于 09-18 11:16 ?309次閱讀

    如何利用traceroute命令發(fā)現(xiàn)網(wǎng)絡中的負載均衡

    在網(wǎng)絡管理和故障排除中,了解數(shù)據(jù)包的路徑和識別負載均衡節(jié)點是非常重要的。traceroute 命令是一個用于跟蹤數(shù)據(jù)包在網(wǎng)絡中經(jīng)過的路由路徑的工具。本文將詳細介紹如何利用 traceroute 命令發(fā)現(xiàn)網(wǎng)絡中的負載
    的頭像 發(fā)表于 08-07 15:13 ?479次閱讀
    如何利用traceroute命令發(fā)現(xiàn)網(wǎng)絡中的<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

    視頻網(wǎng)站服務器的四種負載均衡技術

    視頻網(wǎng)站通常會面臨大量的用戶訪問和視頻流量,為了提高性能和可用性,需要使用負載均衡技術。以下是四種常用的視頻網(wǎng)站服務器負載均衡技術: 1、基于DNS的
    的頭像 發(fā)表于 04-01 17:36 ?693次閱讀
    主站蜘蛛池模板: 欧美激情第一欧美在线 | 激情玖玖 | 日日做日日摸夜夜爽 | 色天天综合色天天看 | 久热精品视频 | 91夜夜人人揉人人捏人人添 | 国产视频国产 | 日本大片网 | 女张腿男人桶羞羞漫画 | 啪啪网站色大全免费 | 中文字幕在线播放一区 | 日本黄网站高清色大全 | 性夜影院爽黄a爽免费视 | 九九热在线视频观看 | 国产传媒在线观看视频免费观看 | 8天堂资源在线 | 97视频hd| 男啪女色黄无遮挡免费视频 | 婷婷五月在线视频 | 男女www视频在线看网站 | 欧美猛交xxxx免费看 | 久久男人的天堂色偷偷 | 亚洲综合在线观看一区www | 四虎永久影院永久影库 | 亚洲大尺度视频 | 成年人黄色大片大全 | 四虎黄色网 | 四虎永久在线精品网址 | 美女视频黄a视频美女大全 美女视频一区二区 | 日本免费高清 | 五月国产综合视频在线观看 | 网站色小妹 | 美女视频黄色的免费 | 婷婷久久久五月综合色 | 国产欧美日韩va | 国产精品美女在线观看 | 美女张开腿让男人桶爽 | 欧美极品第1页专区 | 免费视频一区二区性色 | 国精视频一区二区视频 | 在线天堂中文 |