• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      服務(wù)器集群中的負載均衡策略研究

      2019-05-23 10:44陳崗
      電腦知識與技術(shù) 2019年8期
      關(guān)鍵詞:負載均衡異構(gòu)集群

      陳崗

      摘要:目前接入互聯(lián)網(wǎng)的應(yīng)用越來越多,服務(wù)器在使用時經(jīng)常會面臨并發(fā)量、資源使用率以及響應(yīng)時間等各種要求,單臺服務(wù)器通常難以滿足繁忙的業(yè)務(wù)。服務(wù)器集群可以解決單臺服務(wù)器的問題,但是又面臨著負載均衡的問題。Nginx可以實現(xiàn)負載均衡,能夠有效解決服務(wù)器集群,尤其是異構(gòu)機器的負載均衡問題。

      關(guān)鍵詞:集群;負載均衡;動態(tài);異構(gòu)

      中圖分類號:G642 文獻標識碼:A

      文章編號:1009-3044(2019)08-0009-02

      互聯(lián)網(wǎng)技術(shù)和移動技術(shù)的結(jié)合,使互聯(lián)網(wǎng)用戶訪問量呈級數(shù)級別的不斷增長,如此龐大的用戶量給網(wǎng)絡(luò)系統(tǒng)運營以及服務(wù)器性能帶來的巨大的挑戰(zhàn)。很多情況下一臺服務(wù)器已經(jīng)難以滿足大量并發(fā)訪問的需求。為了解決服務(wù)器的單點性能問題,通常是搭建一個服務(wù)器集群響應(yīng)用戶請求。

      大量用戶請求如何均衡的分發(fā)到服務(wù)器集群中的各個服務(wù)器上是一個非常關(guān)鍵的問題,這就是通常所說的負載均衡。負載均衡技術(shù)可以使服務(wù)器集群中的各服務(wù)器按照其性能合理地按比例分擔用戶請求,以保證性能高的服務(wù)器能夠更好、更快的處理請求。

      1 Nginx技術(shù)及負載均衡

      Nginx誕生于2004年,是一款反向代理服務(wù)器,具備高可靠性、高擴展性的優(yōu)點,在支持大量的并發(fā)連接的同時內(nèi)存消耗還相對比較低,因此非常適合用于充當服務(wù)器負載均衡器[1]。Nginx的內(nèi)部支持多種高級的數(shù)據(jù)結(jié)構(gòu)及開發(fā)模型,因此同等條件下要比apache tomcat的性能好。

      Nginx是一種高度模塊化的負載均衡產(chǎn)品,包括event、upstream、fastcgi、memcached、Proxy等模塊,event模塊主要用于處理各種采集管理和分發(fā)的事件,fastcgi模塊用于便利地調(diào)用c、python等各種語言編寫的程序,upstream模塊可以解決一個請求有多個TCP連接、多個讀寫事件的問題,從而實現(xiàn)Nginx和上游服務(wù)器的交互;memcached模塊使Nginx能夠從后端的服務(wù)器獲取響應(yīng),服務(wù)代理模塊能夠?qū)⒂脩舻恼埱髠鬟f到另外一臺服務(wù)器。

      Nginx啟動后有多個服務(wù)進程,比如master進程、worker進程以及cache相關(guān)的進程等。master進程和worker進程間的通信用于傳遞信息。master進程通常就是Nginx的主進程,此進程并不實際執(zhí)行業(yè)務(wù),也不處理各種事件,而僅僅作為Nginx啟動后的進程組和用戶的交互接口;另外,master進程還可以監(jiān)控worker進程的執(zhí)行狀態(tài),在worker進程意外終止時重新啟動一個新的worker進程。worker進程一般是由master進程fork產(chǎn)生的,作用是處理客戶端應(yīng)用程序與后端服務(wù)器間的數(shù)據(jù)交互和讀寫操作。

      Nginx的upstream模塊的功能主要是實現(xiàn)用戶請求的負載均衡,其工程流程如圖1所示:

      圖1 Nginx的upstream模塊工作流程

      客戶端應(yīng)用的http請求發(fā)送給Nginx后,Nginx會根據(jù)請求向后端服務(wù)器發(fā)送TCP請求,后端服務(wù)器返回對應(yīng)的響應(yīng)報文[2]。Nginx會根據(jù)后端服務(wù)器的響應(yīng)報文決定是否轉(zhuǎn)發(fā)給客戶端。upstream模塊的處理機制會保證在處理Nginx上下游數(shù)據(jù)時,可以根據(jù)上下游網(wǎng)絡(luò)的具體情況采取不同的措施,如果上下游網(wǎng)絡(luò)差距不大,那么為了更多的并發(fā)處理用戶請求,可以開辟一塊固定的內(nèi)存,用于處理上游的響應(yīng),同時把保存的響應(yīng)頁面返回給下游。如果上游網(wǎng)速比下游網(wǎng)速快很多,則需要開辟足夠大的內(nèi)存緩沖區(qū),以緩存上游響應(yīng),在必要時還需要將其緩存到磁盤上。

      2 負載均衡策略

      為了更加高效的處理用戶請求,需要有一個高效的負載均衡策略,常用的負載均衡策略包括加權(quán)輪詢策略、IP Hash策略以及第三方負載均衡策略[3]。

      加權(quán)輪詢策略需要事先為每臺服務(wù)器設(shè)置一個權(quán)值,代表各服務(wù)器處理用戶請求能力的高低。Nginx在分發(fā)請求時,就會有些選擇權(quán)重大的服務(wù)器,每次分發(fā)請求后都會更新權(quán)值,然后再分發(fā)新的請求。一段時間后各服務(wù)器處理的請求數(shù)量比值趨近于權(quán)值之比。這種負載均衡策略不依賴于客戶端,因此用戶請求能夠更合理地加權(quán)均勻分配到后端服務(wù)器。然而,同一個客戶端的多次請求可能被分配到不同的后端服務(wù)器處理,因此難以滿足需要會話保持的場景。

      IP Hash負載均衡策略解決了同一客戶端的多次請求可能被分配到不同后端服務(wù)器的問題,先根據(jù)客戶端的IP計算一個哈希值,然后根據(jù)哈希值選擇后端服務(wù)器進行分發(fā),這樣就克服了加權(quán)輪詢策略難以保持會話的不足。但是IP Hash策略實現(xiàn)負載均衡的依據(jù)是客戶端的IP地址,因此對于使用NAT代理的用戶而言,如果短時間內(nèi)大量使用同一NAT代理的用戶發(fā)起請求,則某臺后端服務(wù)器可能面臨巨大的壓力。

      第三方負載均衡策略需要在安裝Nginx過程中編譯添加進去,可以支持Fair Weight策略以及最小連接數(shù)策略。Fair Weight策略根據(jù)后端服務(wù)器的響應(yīng)時間分配請求,優(yōu)先分配響應(yīng)時間端的服務(wù)器;最小連接數(shù)策略優(yōu)先選擇連接數(shù)最少的后端服務(wù)器。雖然這些第三方負載均衡策略在一定程度上反映并利用了后端服務(wù)器的處理能力,但是它們還都是僅僅在加權(quán)輪詢的基礎(chǔ)上添加了一定的動態(tài)反饋,并沒有實質(zhì)性的改進。

      基于內(nèi)容分類的負載均衡算法會把用戶的請求分為若干類,并均勻地分配給各個服務(wù)器,以保證各個服務(wù)器得到的請求量大致相當?;贖TTP請求內(nèi)容的負載均衡策略把用戶的HTTP請求內(nèi)容分為靜態(tài)請求和動態(tài)請求兩類,靜態(tài)請求只需要提高請求的cache命中率即可,動態(tài)請求才考慮進行負載均衡。

      在實現(xiàn)負載均衡時,服務(wù)器當前的負載信息是關(guān)鍵,因此對負載信息評價的準確性直接影響到負載均衡策略的選取。經(jīng)典的負載信息評價標準會綜合考慮服務(wù)器的CPU利用率、內(nèi)存使用率、網(wǎng)絡(luò)帶寬利用率以及磁盤IO情況等各種信息。

      3 業(yè)務(wù)異構(gòu)集群的負載均衡

      WEB請求通常會涉及到多種業(yè)務(wù),比如發(fā)表型業(yè)務(wù)、事務(wù)處理型業(yè)務(wù)、多媒體型業(yè)務(wù)等[4]。在多業(yè)務(wù)組成的業(yè)務(wù)異構(gòu)集群中,業(yè)務(wù)類型的不同會在很大程度上影響后端服務(wù)器的資源使用情況。例如,對單臺服務(wù)器而言事務(wù)性業(yè)務(wù)使用的資源主要是磁盤I/O,因此如果此類業(yè)務(wù)被分配到磁盤I/O相對差的服務(wù)器時就會減慢用戶的處理速度;對集群整體而言,電商類業(yè)務(wù)需要較高的服務(wù)器性能。

      在多業(yè)務(wù)異構(gòu)集群的情況下,可以先把異構(gòu)服務(wù)器集群分為不同的業(yè)務(wù)子集群,然后依據(jù)動態(tài)負載均衡策略分發(fā)請求;另外,在請求分發(fā)過程中,如果某一個業(yè)務(wù)子集群的負載過重,則需要從負載較輕的業(yè)務(wù)子集群中抽調(diào)服務(wù)器,以緩解負載壓力?;谶@樣的思路,可以把負載均衡模塊劃分為請求分類模塊、請求分發(fā)模塊、負載反饋模塊。

      請求分類模塊的作用是把用戶的請求分成不同的類型,以便有針對性的分發(fā)到不同服務(wù)器。請求分發(fā)模塊根據(jù)識別的用戶請求,然后詢問后端服務(wù)器的IP地址,并將用戶請求分發(fā)到對應(yīng)的IP。負載反饋模塊維護業(yè)務(wù)集群的結(jié)構(gòu)信息和整體負載信息,并根據(jù)實際情況選擇不同的負載均衡策略。

      具體的服務(wù)請求分發(fā)步驟是:1) 用戶發(fā)起請求。通俗地講,就是在瀏覽器中輸入url地址并回車后,請求被發(fā)送到負載均衡器。2) 請求分類。請求分類模塊接收到用戶的請求url后,會把請求url轉(zhuǎn)換為(url ,type)的格式,然后發(fā)送給請求分發(fā)模塊。3) 請求分發(fā)。請求分發(fā)模塊根據(jù)其維護的每個用戶請求的負載值,把(type, request)發(fā)送給負載采集模塊,以便循環(huán)后端服務(wù)器的IP地址。4) 負載采集模塊根據(jù)一定的負載均衡策略,選擇合適的后端服務(wù)器處理用戶請求。

      在請求分發(fā)過程中,如果在短時間內(nèi)用戶的請求都是某一類固定的業(yè)務(wù),那么可能會導致處理此業(yè)務(wù)的業(yè)務(wù)子集群負載過高,而且其他服務(wù)器因為空閑而沒有得到合理的利用。為了解決這一“旱澇不均”的現(xiàn)象,在負載分發(fā)過程中還需要進行服務(wù)器的動態(tài)劃分,也就是在出現(xiàn)某類業(yè)務(wù)集中處理、負載過高的情況時,就從負載較輕的業(yè)務(wù)子集群中臨時抽調(diào)服務(wù)器,以緩解負載較高業(yè)務(wù)集群的壓力,在處理完畢后再把抽調(diào)的服務(wù)器歸還到原來的業(yè)務(wù)子集群。這樣一來,服務(wù)器的動態(tài)劃分既解決了用戶請求分發(fā)的負載均衡問題,又有效提高了后端服務(wù)器集群的利用效率。

      4 總結(jié)

      本文對服務(wù)器集群的負載均衡技術(shù)進行研究。首先,介紹了Nginx技術(shù)及其負載均衡模塊,接下來在此基礎(chǔ)上闡述了動態(tài)負載均衡技術(shù),以及用于異構(gòu)集群的負載均衡技術(shù),對服務(wù)器集群的負載均衡研究有一定的參考意義。

      參考文獻:

      [1] 王永輝.基于Nginx高性能web服務(wù)器性能優(yōu)化與負載均衡的改進和實現(xiàn)[D].電子科技大學,2017.

      [2] A. Yousofi, M. Banitaba,S. Yazdanpanah.A Novel Method for Achieving Load Balancing in Web Clusters Based on Congestion Control and Cost Reduction[J]. IEEE Symposium on Computers &informatics, 2017,17(9): 55-58.

      [3] 鄧珍榮,唐興興,黃文明,等.一種Web服務(wù)器集群負載均衡調(diào)度算法[J].計算機應(yīng)用與軟件,2013(10):53-56.

      [4] 陳偉. 異構(gòu)Web集群中基于動態(tài)反饋機制的負載均衡的研究與實現(xiàn)[D].重慶大學,2018.

      【通聯(lián)編輯:王力】

      猜你喜歡
      負載均衡異構(gòu)集群
      試論同課異構(gòu)之“同”與“異”
      海上小型無人機集群的反制裝備需求與應(yīng)對之策研究
      一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計
      Python與Spark集群在收費數(shù)據(jù)分析中的應(yīng)用
      異構(gòu)醇醚在超濃縮洗衣液中的應(yīng)用探索
      異構(gòu)環(huán)境下改進的LATE調(diào)度算法
      overlay SDN實現(xiàn)異構(gòu)兼容的關(guān)鍵技術(shù)
      LTE異構(gòu)網(wǎng)技術(shù)與組網(wǎng)研究
      绥江县| 望谟县| 莎车县| 双鸭山市| 铜鼓县| 延长县| 定结县| 大余县| 温州市| 广汉市| 醴陵市| 库车县| 岢岚县| 江都市| 丰顺县| 噶尔县| 逊克县| 栖霞市| 彰化市| 屯昌县| 甘德县| 宝坻区| 凤台县| 临邑县| 平定县| 尖扎县| 义马市| 富裕县| 上犹县| 利川市| 衡南县| 霍山县| 德安县| 梧州市| 罗平县| 竹北市| 双江| 宝坻区| 博白县| 红原县| 衢州市|