<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          高并發(fā)系列: 垂直性能優(yōu)化之細(xì)說(shuō)負(fù)載均衡

          共 2469字,需瀏覽 5分鐘

           ·

          2021-04-28 13:23

          高并發(fā)系列第一篇:垂直性能優(yōu)化之細(xì)說(shuō)負(fù)載

          高并發(fā)是業(yè)務(wù)發(fā)展到一定階段必須面對(duì)的問(wèn)題,那么面對(duì)高并發(fā)的問(wèn)題,我們可以從哪些方面入手優(yōu)化呢?

          垂直性能優(yōu)化 [包含整體層面的負(fù)載均衡、中間件異步化、存儲(chǔ)優(yōu)化、代碼層面調(diào)優(yōu)、jvm容器調(diào)優(yōu)等等]
          整體可用性優(yōu)化 [包含服務(wù)治理、服務(wù)保護(hù)、可靠性保障、生產(chǎn)驗(yàn)證、故障演練等等]
          水平擴(kuò)展提升 [包含分層架構(gòu)、彈性架構(gòu)、服務(wù)拆分及單元化等等]

          從這篇開始將對(duì)上述問(wèn)題進(jìn)行逐點(diǎn)闡述,歡迎大家一起交流討論~

          前言

          性能為王??捎眯院退綌U(kuò)展,都要建立在性能優(yōu)良的基礎(chǔ)上才會(huì)去考慮。

          性能是高并發(fā)的基礎(chǔ),而且涉及面極廣,也是需要我們投入更多的精力去對(duì)待;同時(shí),大部分優(yōu)化點(diǎn)也是我們一線研發(fā)日??梢灾苯咏佑|的模塊。也是大廠面試的時(shí)候會(huì)經(jīng)常涉及到的模塊。

          所以第一部分大概十幾篇可能都會(huì)在垂直性能優(yōu)化上。第一篇,垂直性能優(yōu)化之細(xì)說(shuō)集群部署和負(fù)載均衡。

          從阿里架構(gòu)演變來(lái)看負(fù)載均衡

          我們將淘寶網(wǎng)的架構(gòu)演進(jìn)(即時(shí)通訊網(wǎng)[1])整理到一個(gè)滑動(dòng)圖里,如下圖所示:

          <<< 左右滑動(dòng)見更多 >>>

          當(dāng)然,比如中臺(tái)建設(shè)、上云等更高級(jí)演進(jìn)就在此忽略了;

          可以更清晰的看到,在集群部署和負(fù)載均衡,幾乎分布在了整個(gè)演進(jìn)鏈路上最關(guān)鍵的節(jié)點(diǎn)上:

          • 當(dāng)解決了本地存儲(chǔ)的性能瓶頸,新的瓶頸出現(xiàn)在了web容器的單體性能上。因此,使用nginx反向代理來(lái)實(shí)現(xiàn)多個(gè)web容器負(fù)載均衡
          • 當(dāng)數(shù)據(jù)庫(kù)和tomcat都達(dá)到水平擴(kuò)容,可支撐的并發(fā)大幅提升時(shí),單體nginx代理的性能成了新的瓶頸。因此,使用F5或LVS來(lái)實(shí)現(xiàn)多個(gè)nginx反向代理服務(wù)器負(fù)載均衡
          • 當(dāng)業(yè)務(wù)進(jìn)一步發(fā)展,達(dá)到多地多機(jī)房部署,垮地域訪問(wèn)延遲成了新的瓶頸。因此,使用DNS來(lái)實(shí)現(xiàn)地域機(jī)房間的負(fù)載均衡。

          細(xì)說(shuō)負(fù)載均衡方案

          常見的實(shí)現(xiàn)方案,其實(shí)從上面的演進(jìn)鏈路中也已經(jīng)可以基本了解到各個(gè)方案適用的發(fā)展階段和應(yīng)對(duì)常見,這里再系統(tǒng)的總結(jié)下:

          • 基于DNS的負(fù)載
          • 基于硬件的負(fù)載,如F5
          • 基于軟件的負(fù)載,如Nginx/Squid

          DNS負(fù)載

          <<< 左右滑動(dòng)見更多 >>>

          頭條號(hào)[2]  知乎[3]

          上面兩副圖,可以看到DNS的解析過(guò)程和負(fù)載均衡的原理。天然的優(yōu)勢(shì)就是配置簡(jiǎn)單,實(shí)現(xiàn)成本非常低,無(wú)需額外的開發(fā)和維護(hù)工作。

          而缺點(diǎn)也比較明顯:

          • 目前的DNS是多級(jí)解析的,每一級(jí)都可能緩存。所以生效不及時(shí)。
          • 不能按服務(wù)器的處理能力來(lái)分配負(fù)載。DNS負(fù)載均衡采用的是簡(jiǎn)單的輪詢算法,不能區(qū)分服務(wù)器之間的差異和運(yùn)行狀態(tài),不靈活
          • 額外的網(wǎng)絡(luò)問(wèn)題。為了使本DNS服務(wù)器和其他DNS服務(wù)器及時(shí)交互,保證數(shù)據(jù)及時(shí)更新,一般都要將刷新時(shí)間設(shè)置的較小,可能造成流量增大。

          基于硬件的負(fù)載均衡

          「F5 Network Big-IP」 是一個(gè)網(wǎng)絡(luò)設(shè)備,可以簡(jiǎn)單的認(rèn)為是一個(gè)網(wǎng)絡(luò)交換機(jī)一類的東西,性能非常好,百萬(wàn)級(jí)TPS。

          性能優(yōu)良、功能強(qiáng)大,多種均衡算法都可以支持,還有防火墻等安全功能。但,非常貴,一般小公司可用不起。

          基于軟件的負(fù)載均衡

          軟件負(fù)載均衡都是以TCP/IP協(xié)議的OSI模型的運(yùn)用:(即時(shí)通訊網(wǎng)[4]根據(jù)OSI模型可將負(fù)載均衡分為:

          • 二層負(fù)載均衡(一般是用虛擬mac地址方式,外部對(duì)虛擬MAC地址請(qǐng)求,負(fù)載均衡接收后分配后端實(shí)際的MAC地址響應(yīng));
          • 三層負(fù)載均衡(一般采用虛擬IP地址方式,外部對(duì)虛擬的ip地址請(qǐng)求,負(fù)載均衡接收后分配后端實(shí)際的IP地址響應(yīng));
          • 四層負(fù)載均衡(在三次負(fù)載均衡的基礎(chǔ)上,用 ip+port 接收請(qǐng)求,再轉(zhuǎn)發(fā)到對(duì)應(yīng)的機(jī)器);
          • 七層負(fù)載均衡(根據(jù)虛擬的url或是IP,主機(jī)名接收請(qǐng)求,再轉(zhuǎn)向相應(yīng)的處理服務(wù)器)。

          常見的其實(shí)只有4層和7層負(fù)載。

          四層和七層的橫向?qū)Ρ?/span>


          四層七層
          原理基于IP+端口基于虛擬的URL或主機(jī)IP
          分析內(nèi)容IP層及TCP/UDP層應(yīng)用層信息,如HTTP協(xié)議URI或Cookie信息
          復(fù)雜度架構(gòu)簡(jiǎn)單、管理容易、問(wèn)題定位方便比較復(fù)雜
          靈活性僅支持基于網(wǎng)絡(luò)層的需求轉(zhuǎn)發(fā)可對(duì)所有跟服務(wù)端的請(qǐng)求進(jìn)行修改
          安全性無(wú)法直接抵御網(wǎng)絡(luò)攻擊更容易抵御來(lái)自網(wǎng)絡(luò)的攻擊
          效率基于更底層設(shè)置,效率高需要更多的資源損耗

          常見的負(fù)載均衡算法

          算法名優(yōu)點(diǎn)缺點(diǎn)
          輪詢簡(jiǎn)單高效,兼顧所有節(jié)點(diǎn)集群性能瓶頸更多的會(huì)受性能差的服務(wù)器影響
          隨機(jī)同輪詢類似
          一致性hash相同來(lái)源請(qǐng)求落點(diǎn)相同,有利于灰度發(fā)布等功能遇到熱點(diǎn)會(huì)對(duì)節(jié)點(diǎn)有沖擊;節(jié)點(diǎn)故障影響上游調(diào)用
          加權(quán)輪詢將機(jī)器性能考慮在內(nèi),集群性能最大化生產(chǎn)環(huán)境復(fù)雜多變,無(wú)法動(dòng)態(tài)調(diào)整權(quán)重,只能粗略預(yù)先優(yōu)化
          動(dòng)態(tài)連接數(shù)、最快響應(yīng)動(dòng)態(tài),根據(jù)節(jié)點(diǎn)狀況實(shí)時(shí)變化增大的復(fù)雜度和資源消耗

          廣義的負(fù)載均衡

          上述內(nèi)容基本都是基于服務(wù)級(jí)別來(lái)敘述的負(fù)載均衡的概念。其實(shí),負(fù)載被運(yùn)用的場(chǎng)景還很多,比如,服務(wù)端rpc選址、以及一些中間件的投遞和請(qǐng)求分發(fā),再有一些彈性架構(gòu)下的彈性路由,單元化下的單元路由,其實(shí)也是更高層面的負(fù)載均衡。相應(yīng)的,也有很多特定的負(fù)載算法,比如rpc中的本地優(yōu)先負(fù)載等等。

          結(jié)束語(yǔ)

          負(fù)載均衡是業(yè)務(wù)發(fā)展到一定階段必經(jīng)的優(yōu)化過(guò)程。掌握負(fù)載相關(guān)的原理和算法,對(duì)我們?nèi)粘I(yè)務(wù)問(wèn)題排查甚至是架構(gòu)設(shè)計(jì)都可以起到很好的幫助。

          本篇是高并發(fā)系列中垂直性能優(yōu)化的第一篇,從服務(wù)的整體優(yōu)化為出發(fā)點(diǎn)敘述了主要技術(shù)手段--負(fù)載均衡的主要內(nèi)容,下一篇,將從中間件的應(yīng)用入手,再聊性能優(yōu)化。歡迎大家來(lái)一起交流。

          Reference

          [1]

          從100到1000萬(wàn)高并發(fā)的架構(gòu)演進(jìn)之路: http://www.52im.net/thread-2665-1-1.html

          [2]

          頭條號(hào): 程序員小新人學(xué)習(xí)

          [3]

          知乎: foxgab:DNS如何實(shí)現(xiàn)全局負(fù)載均衡

          [4]

          一篇讀懂分布式架構(gòu)下的負(fù)載均衡技術(shù): http://www.52im.net/thread-2494-1-1.html

          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狂野欧美大鸡巴操逼 | 最新亚洲视频免费在线观看 | 五月天婷婷六月丁香91 | 在线视频a | 日本精品在线播放 |