網頁加載出現沒有合適的負載均衡器_分布式必知必會-七層負載和四層負載到底是什么?...

背景

我們在使用負載均衡器的時候,往往會聽到七層負載或四層負載這兩個名詞,許多負載均衡軟件提供的方式也不同,那么七層和四層區別在哪呢?為什么有的支持有的不支持呢?

負載均衡簡介

負載均衡建立在現有網絡結構之上,提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、增強網絡數據處理能力、提高網絡的靈活性和可用性。

簡單來講:負載均衡將大量的并發處理轉發給后端多個節點處理,減少工作響應時間;處理完成后返回給負載均衡器,再返回給用戶。目前負載均衡大多數用于提高諸如在Web服務器、FTP服務器和其他關鍵任務服務器上的Internet服務器陳股的可用性和可伸縮性。

負載均衡分類

  • 二層負載:一般是虛擬Mac地址方式,外部對虛擬MAC地址請求,負載均衡接收后分配后端實際的MAC地址響應。(mac)
  • 三層負載:一般采用虛擬IP地址方式,外部對虛擬的IP地址請求,負載均衡器接收后分配后端實際的IP地址相應。(ip)
  • 四層負載:在三層負載的基礎之上,用ip+端口接收請求,再轉發到對應的機器(tcp)
  • 七層負載:根據虛擬的URL或IP,主機名接收請求,再轉向相應的處理服務器。(如http)

負載均衡算法

  • 輪詢
  • 權重輪詢
  • 隨機
  • 權重隨機
  • 響應速度
  • 最少連接數
  • 處理能力
  • DNS相應

四層負載

四層負載就是基于IP+Port的負載均衡;在三層負載的基礎之上,通過發布三層的IP地址,然后加上四層的端口號,來決定哪些流量需要做負載均衡。 四層負載均衡器主要分析IP和TCP/UDP層,實現負載均衡;但是它不理解應用層協議,也就是我們常常提到的HTTP協議,其他協議如FTP、Mysql協議等。

支持四層負載的軟硬負載均衡器

F5、nginx、lvs、haproxy

七層負載

七層負載均衡基于虛擬的URL或主機IP的負載均衡:在四層負載均衡的基礎上(沒有四層負載就不可能有七層負載),再考慮應用層的特征,比如同一個web服務器的負載均衡,除了根據vip和80端口辨別是否需要處理的流量,還可以根據七層的URL、瀏覽器類別、語言來決定是否需要進行負載均衡。

七層負載均衡器除了支持四層負載均衡以外,還有分析應用層的信息,如HTTP協議URI或Cookie信息,實現七層負載均衡。此種負載均衡器能理解應用協議。(所以支持Mysql,RabbitMQ等協議的負載)

支持七層負載的軟硬件負載均衡器

haproxy、nginx

總的來說,一般是lvs做四層負載;nginx做7層負載(默認只支持HTTP反向代理,可以考慮加入nginx_tcp_proxy_module模塊實現對tcp的代理);haproxy比較靈活7層負載和四層負載都能做。

七層負載最關注的是Http協議,對其他協議關注度并不是很高,其他如Mysql、RabbitMQ等中間件的負載可以考慮使用四層負載,因為四層負載是基于IP+端口的負載,這個往往就夠了。

四層和七層的對比

第一,技術原理上的區別

所謂四層負載均衡,也就是主要通過報文中的目標地址和端口,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。

以常見的TCP為例,負載均衡設備在接收到第一個來自客戶端的SYN 請求時,即通過上述方式選擇一個最佳的服務器,并對報文中目標IP地址進行修改(改為后端服務器IP),直接轉發給該服務器。

TCP的連接建立,即三次握手是客戶端和服務器直接建立的,負載均衡設備只是起到一個類似路由器的轉發動作。在某些部署情況下,為保證服務器回包可以正確返回給負載均衡設備,在轉發報文的同時可能還會對報文原來的源地址進行修改。

151d79189edfa8a95801183ed1d59ff5.png

4層

所謂七層負載均衡,也稱為“內容交換”,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。

七層負載均衡明顯的對負載均衡設備的要求更高,處理七層的能力也必然會低于四層模式的部署方式。

4fb377a58ac87a1f0ea69457ddbefdb9.png

7層

第二,應用場景的需求

七層應用負載的好處,是使得整個網絡更"智能化"。

對圖片、靜態資源做緩存、對header重寫、對url重寫、對請求進行校驗、做黑白名單等等

總體對比

1.智能性 七層負載均衡由于具備OIS七層的所有功能,所以在處理用戶需求上能更加靈活,從理論上講,七層模型能對用戶的所有跟服務端的請求進行修改。例如對文件header添加信息,根據不同的文件類型進行分類轉發。四層模型僅支持基于網絡層的需求轉發,不能修改用戶請求的內容。

2.安全性 七層負載均衡由于具有OSI模型的全部功能,能更容易抵御來自網絡的攻擊;四層模型從原理上講,會直接將用戶的請求轉發給后端節點,無法直接抵御網絡攻擊。

3.復雜度 四層模型一般比較簡單的架構,容易管理,容易定位問題;七層模型架構比較復雜,通常也需要考慮結合四層模型的混用情況,出現問題定位比較復雜。

4.效率比 四層模型基于更底層的設置,通常效率更高,但應用范圍有限;七層模型需要更多的資源損耗,在理論上講比四層模型有更強的功能,現在的實現更多是基于http應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539246.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539246.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539246.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

博弈論 斯坦福game theory stanford week 3.2_

title: 博弈論 斯坦福game theory stanford week 3-1 tags: note notebook: 6- 英文課程-15-game theory --- 博弈論 斯坦福game theory stanford week 3-1 習題 第 1 個問題 We say that a game is dominance solvable, if iterative deletion of strictly dominated strategi…

redis 值字符串前面部分亂碼_redis key亂碼

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis協議標準的、提供持久化的內存數據…

Hive的使用之腳本文件

好處 在實際開發中,遇到復雜的hivesql,在文件里先寫好再執行,比直接在控制臺寫更高效,糾錯,修改更方便,也易于后期維護。 [hadoophello110 ~]$ 模式 在hive沒有啟動的時候,非hive內&#xff0c…

nestjs swagger文檔調用需要鑒權的接口

目標 nestjs經常需要設置一些鑒權(登錄后)才能訪問的接口,但是生成的swagger文檔可以發起接口請求,文檔發起的請求默認是不攜帶登錄token的,所以需要移除swagger文檔發起請求的守衛攔截。 nestjs守衛攔截設置見另一篇…

ajax預加載html seo,前端性能優化 — JS預加載和懶加載

JS預加載需求:有時我們需要實現例如快速快速切換頁面、圖片之類的功能時,能盡快的加載出我們所需的圖片會極大提升用戶體驗,這時用預加載將圖片先緩存到瀏覽器,用戶使用需顯示圖片時無疑會順暢很多。核心:當一個圖片在…

面向對象、繼承、抽象方法重載知識點整理

面向過程、面向對象 面向過程:從開始到結束自己獨立完成 面向對象:將一個事物劃分為單體來各自實現區域性的功能,最后通過調用組合完成 類、對象 類:某一些具有共同特征的物體 對象:指某一種具體的物體,屬于…

python for循環n次_Python入門10 —— for循環

1.字符串依次取值 students [egon, lxx, alex] i 0 while i < 3: print(students[i]) i 1 2.針對循環取值操作&#xff0c;while循環并不擅長&#xff0c;于是python提供一個專門循環取值操作&#xff1a;for循環 students [egon, lxx, alex] for x in students: # 有幾…

hive與依賴環境的交互

與linux交互命令 格式 在linux的命令前加上!&#xff08;英文感嘆號&#xff09;&#xff0c;以;&#xff08;英文分號結尾&#xff09; 操作實例 !ls; !pwd; hive> !ls; app derby.log hadoop-2.7.2.tar.gz jdk-8u73-linux-x64.tar.gz metastore_db t.sql hive> !pw…

和平精英顯示服務器人數太多,和平精英到底有多差 導致玩家紛紛國際服

原標題&#xff1a;和平精英到底有多差 導致玩家紛紛國際服和平精英上線以來爭議不斷&#xff0c;百分之九十九是對和平精英的各種不滿&#xff0c;還有百分之一是喜歡和平精英&#xff0c;認為刺激戰場已經免費給我們玩&#xff0c;讓騰訊虧了很多錢&#xff0c;現在和平精英上…

python中的wx_配置 Python的wxWidgets可視開發環境 | 學步園

注&#xff1a;轉載請注明出處 一、下載 Python 2.5.1 這一步是必須做的&#xff0c;下載 Python 語言的 SDK 下載地址(直接復制到迅雷)&#xff1a;點擊下載 下載完成后安裝 Python 2.5.1&#xff0c;注意安裝路徑中不要有空格&#xff0c;不然會引起一些問題。 二、下載 wxPy…

的write方法有哪些參數_向子進程傳遞大量數據的方法

如何傳遞大型數據給子進程昨天的一篇文章中&#xff0c;我們說到如果想向一個子進程傳輸多于32767個字符的數據&#xff0c;我們需要尋找其他的方法(而不是命令行參數)來實現。我們能想到的第一個方法是&#xff1a;WM_COPYDATA。當子進程創建并進入消息循環后&#xff0c;我們…

厲害了!中關村軟件園人工智能軍團有料有看點

人工智能已成為當下全球科技界的新熱點&#xff0c;中外競相攀登這座劃時代的科技高峰。上月&#xff0c;國務院印發《新一代人工智能發展規劃》&#xff0c;明確將人工智能作為未來國家重要的發展戰略。《規劃》提出前瞻布局新一代人工智能重大科技項目&#xff0c;到2030年中…

Hive的使用之hwi

概述 hwi是hive開發的網頁形式查看數據。方便非專業人士使用。 安裝步驟 1、下載hive源碼包 地址&#xff1a;http://apache.fayea.com/hive/ apache-hive-2.1.0-src.tar.gz 2、打包war 解壓apache-hive-2.1.0-src.tar.gz源碼包&#xff0c;進入到 C:\Users\zengmg\Deskto…

c 服務器傳輸大文件,cend.me:不須經過服務器,直接點對點的文件傳輸免費服務...

要傳送文件給遠程的手機、平板、電腦等設備&#xff0c;通常的做法就是先將文件上傳到服務器存放&#xff0c;然后再從服務器下載&#xff0c;這樣的做法看似合理&#xff0c;但如果上傳的同時就由遠程的設備來接收&#xff0c;不要經過服務器&#xff0c;這樣就能更節省上、下…

win10系統遷移后系統重裝_win7/win10系統遷移到新SSD硬盤的方法

隨著固態硬盤的普及&#xff0c;越來越多的朋友把電腦的硬盤換成了固態&#xff0c;原來的機械硬盤當數據盤使用&#xff0c;關于在固態硬盤中安裝系統&#xff0c;那是簡單的&#xff0c;和機械硬盤一樣&#xff0c;當是對原來的系統比較重要&#xff0c;不能重裝的朋友來說&a…

hive參數配置使用

概述 set命令設置hive的參數。 ${} 可以獲取配置項的值&#xff0c;作為參數使用。 在啟動hive時可以傳入配置項啟動。 hive參數初始化配置set命令~/.hiverc hive參數介紹 輸入set&#xff0c;可以查看所有可設置項和現在設置項的值。 hive> set; 項太多了&#xff…

Thrift源碼學習二——Server層

Thrift 提供了如圖五種模式&#xff1a;TSimpleServer、TNonblockingServer、THsHaServer、TThreadPoolServer、TThreadSelectorServer ?? TSimpleServer、TThreadPoolServer 屬于阻塞模型 TNonblockingServer、THsHaServer、TThreadedSelectorServer 屬于非阻塞模型 TServer…

linux top 命令可視化_25個Linux性能監控工具

一段時間以來&#xff0c;我們在網上向讀者介紹了如何為Linux以及類Linux操作系統配置多種不同的性能監控工具。在這篇文章中我們將羅列一系列使用最頻繁的性能監控工具&#xff0c;并對介紹到的每一個工具提供了相應的簡介鏈接&#xff0c;大致將其劃分為兩類&#xff0c;基于…

base64是哪個jar包的_漲知識 | 用maven輕松管理jar包

前言相信只要做過 Java 開發的童鞋們&#xff0c;對 Ant 想必都不陌生&#xff0c;我們往往使用 Ant 來構建項目&#xff0c;尤其是涉及到特別繁雜的工作量&#xff0c;一個 build.xml 能夠完成編譯、測試、打包、部署等很多任務&#xff0c;這在很大的程度上解放了程序員們的雙…

Hive數據類型

概述 Hive的內置數據類型可以分為兩大類&#xff1a;(1)、基礎數據類型&#xff1b;(2)、復雜數據類型。 基礎數據類型 數據類型 所占字節 開始支持版本 TINYINT 1byte&#xff0c;-128 ~ 127 SMALLINT 2byte&#xff0c;-32,768 ~ 32,767 INT 4byte,-2,147,483,648 ~ 2,14…