由dubbo開始看看所謂的軟負載均衡


待總結

我們在微服務架構中,常用一些注冊中心進行訂閱消費我們的服務,這時候對於同一服務請求會有不同的機器同時可以提供服務,這時是怎么選擇哪一台機器去連接獲取服務呢?

 

 

負載均衡設備作為縱跨網絡2-7層協議的設備,往往放置再網絡設備和應用設備的連接處,
同時它也有另一個稱呼:4/7層交換機,但它首先是個2-3層交換機。

 

 

在沒有部署負載均衡設備之前,用戶直接訪問服務器地址(中間或許有在防火牆上將服務器地址映射成別的地址,但本質還是一對一)。當單台服務器無法處理大量用戶的訪問時,就要考慮多台服務器提供服務,就需實現負載均衡了。負載均衡設備實現的原理是把多台服務器的地址映射成一個對外的服務IP(可以成為VIP),這個過程對用戶是透明的,由負載均衡設備進行分發處理用戶請求后統一出口響應。

例如下面的例子,用戶訪問一個域名,先通過DNS服務器查詢解析這個域名的公網地址(其實就是負載均衡設備的IP),接下來訪問該地址,到達負載均衡設備,由此重新修改請求數據包部分數據,如將請求地址(目的地址)改為分發處理的服務器地址,這叫NAT,同時返回時也可能有NAT。

下面先總結一下三個基本的特征:負載均衡算法(策略),健康檢查,會話保持

負載均衡算法

輪詢(RoundRobin):按請求順序分發請求給隊列中的服務器處理

比率(Ratio):給隊列中的每個服務器分配一個加權值為比例,把每個請求按比例分發

優先權(Priority):給所有服務器分組,給每個組定義優先權,按照優先級分發請求到組(組內分發可按照輪詢或者比率)

最少連接數(LeastConnection):負載均衡設備記錄每個服務器或者服務端口上的連接數,新的連接將分發給連接數少的服務器

最快響應時間(Fast Response time):新的連接分發給響應最快的服務器

哈希算法(Hash):將客戶端的源地址端口進行哈希運算,根據結果分發給對應的機器

基於策略:針對不同的數據流設置導向規則,用戶自行編輯流量分配策略,利用這些策略對通過的數據流實施導向控制

基於數據包內容:可根據HTTP的url是否帶有.jpg擴展名,分發給指定的服務器處理

健康檢查

健康檢查用於負載均衡設備檢查服務器開放的各種服務的可用狀態,可配置的檢查方法有如ping,TCP,UDP,HTTP,FTP,DNS等。

創建健康檢查可以設定檢查的間隔時間和嘗試次數。最好結合應用情況來評估設置,既不會對業務產生影響,又不會對負載設備產生很大負擔。

會話保持

假設同一個用戶的不同請求連續訪問,連接是需要重新分發還是固定服務器處理呢?

其實由於服務器之間很難做到實時同步用戶訪問信息,比如用戶登陸請求在一台機器處理,后續應用請求分發給其他機器處理的話,這時實時獲取到集群其他機器中該用戶的登陸信息成本是跟高的,所以對於同一用戶的連續請求在負載均衡設備做會話保持動作,將同源地址請求分發給同一機器響應處理。當然對於一些靜態頁面數據可以不用保持會話,例如公告新聞類,在每台機器的響應結果都是一樣的。

補充知識

一個設備工作在哪一層,關鍵看它工作時利用哪一層的數據頭部信息。網橋工作時,是以MAC頭部來決定轉發端口的,因此顯然它是數據鏈路層的設備。 
具體說: 
物理層:網卡,網線,集線器,中繼器,調制解調器 
數據鏈路層:網橋,交換機 
網絡層:路由器 
網關工作在第四層傳輸層及其以上。 
集線器是物理層設備,采用廣播的形式來傳輸信息。 
交換機就是用來進行報文交換的機器。多為鏈路層設備(二層交換機),能夠進行地址學習,采用存儲轉發的形式來交換報文.。 
路由器的一個作用是連通不同的網絡,另一個作用是選擇信息傳送的線路。選擇通暢快捷的近路,能大大提高通信速度,減輕網絡系統通信負荷,節約網絡系統資源,提高網絡系統暢通率。

交換機和路由器的區別

交換機擁有一條很高帶寬的背部總線和內部交換矩陣。交換機的所有的端口都掛接在這條總線上,控制電路收到數據包以后,處理端口會查找內存中的地址對照表以確定目的MAC(網卡的硬件地址)的NIC(網卡)掛接在哪個端口上,通過內部交換矩陣迅速將數據包傳送到目的端口,目的MAC若不存在則廣播到所有的端口,接收端口回應后交換機會“學習”新的地址,並把它添加入內部MAC地址表中。

使用交換機也可以把網絡“分段”,通過對照MAC地址表,交換機只允許必要的網絡流量通過交換機。通過交換機的過濾和轉發,可以有效的隔離廣播風暴,減少誤包和錯包的出現,避免共享沖突。

交換機在同一時刻可進行多個端口對之間的數據傳輸。每一端口都可視為獨立的網段,連接在其上的網絡設備獨自享有全部的帶寬,無須同其他設備競爭使用。當節點A向節點D發送數據時,節點B可同時向節點C發送數據,而且這兩個傳輸都享有網絡的全部帶寬,都有着自己的虛擬連接。假使這里使用的是10Mbps的以太網交換機,那么該交換機這時的總流通量就等於2×10Mbps=20Mbps,而使用10Mbps的共享式HUB時,一個HUB的總流通量也不會超出10Mbps。

總之,交換機是一種基於MAC地址識別,能完成封裝轉發數據包功能的網絡設備。交換機可以“學習”MAC地址,並把其存放在內部地址表中,通過在數據幀的始發者和目標接收者之間建立臨時的交換路徑,使數據幀直接由源地址到達目的地址。

從過濾網絡流量的角度來看,路由器的作用與交換機和網橋非常相似。但是與工作在網絡物理層,從物理上划分網段的交換機不同,路由器使用專門的軟件協議從邏輯上對整個網絡進行划分。例如,一台支持IP協議的路由器可以把網絡划分成多個子網段,只有指向特殊IP地址的網絡流量才可以通過路由器。對於每一個接收到的數據包,路由器都會重新計算其校驗值,並寫入新的物理地址。因此,使用路由器轉發和過濾數據的速度往往要比只查看數據包物理地址的交換機慢。但是,對於那些結構復雜的網絡,使用路由器可以提高網絡的整體效率。路由器的另外一個明顯優勢就是可以自動過濾網絡廣播。

集線器與路由器在功能上有什么不同?

首先說HUB,也就是集線器。它的作用可以簡單的理解為將一些機器連接起來組成一個局域網。而交換機(又名交換式集線器)作用與集線器大體相同。但是兩者在性能上有區別:集線器采用的式共享帶寬的工作方式,而交換機是獨享帶寬。這樣在機器很多或數據量很大時,兩者將會有比較明顯的。而路由器與以上兩者有明顯區別,它的作用在於連接不同的網段並且找到網絡中數據傳輸最合適的路徑。路由器是產生於交換機之后,就像交換機產生於集線器之后,所以路由器與交換機也有一定聯系,不是完全獨立的兩種設備。路由器主要克服了交換機不能路由轉發數據包的不足。

總的來說,路由器與交換機的主要區別體現在以下幾個方面:

(1)工作層次不同 
最初的的交換機是工作在數據鏈路層,而路由器一開始就設計工作在網絡層。由於交換機工作在數據鏈路層,所以它的工作原理比較簡單,而路由器工作在網絡層,可以得到更多的協議信息,路由器可以做出更加智能的轉發決策。

(2)數據轉發所依據的對象不同 
交換機是利用物理地址或者說MAC地址來確定轉發數據的目的地址。而路由器則是利用IP地址來確定數據轉發的地址。IP地址是在軟件中實現的,描述的是設備所在的網絡。MAC地址通常是硬件自帶的,由網卡生產商來分配的,而且已經固化到了網卡中去,一般來說是不可更改的。而IP地址則通常由網絡管理員或系統自動分配。

(3)傳統的交換機只能分割沖突域,不能分割廣播域;而路由器可以分割廣播域 
由交換機連接的網段仍屬於同一個廣播域,廣播數據包會在交換機連接的所有網段上傳播,在某些情況下會導致通信擁擠和安全漏洞。連接到路由器上的網段會被分配成不同的廣播域,廣播數據不會穿過路由器。雖然第三層以上交換機具有VLAN功能,也可以分割廣播域,但是各子廣播域之間是不能通信交流的,它們之間的交流仍然需要路由器。

(4)路由器提供了防火牆的服務 
路由器僅僅轉發特定地址的數據包,不傳送不支持路由協議的數據包傳送和未知目標網絡數據包的傳送,從而可以防止廣播風暴。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM