待總結算法
咱們在微服務架構中,經常使用一些註冊中心進行訂閱消費咱們的服務,這時候對於同一服務請求會有不一樣的機器同時能夠提供服務,這時是怎麼選擇哪一臺機器去鏈接獲取服務呢?安全
負載均衡設備做爲縱跨網絡2-7層協議的設備,每每放置再網絡設備和應用設備的鏈接處,
同時它也有另外一個稱呼:4/7層交換機,但它首先是個2-3層交換機。
在沒有部署負載均衡設備以前,用戶直接訪問服務器地址(中間或許有在防火牆上將服務器地址映射成別的地址,但本質仍是一對一)。當單臺服務器沒法處理大量用戶的訪問時,就要考慮多臺服務器提供服務,就需實現負載均衡了。負載均衡設備實現的原理是把多臺服務器的地址映射成一個對外的服務IP(能夠成爲VIP),這個過程對用戶是透明的,由負載均衡設備進行分發處理用戶請求後統一出口響應。服務器
例以下面的例子,用戶訪問一個域名,先經過DNS服務器查詢解析這個域名的公網地址(其實就是負載均衡設備的IP),接下來訪問該地址,到達負載均衡設備,由此從新修改請求數據包部分數據,如將請求地址(目的地址)改成分發處理的服務器地址,這叫NAT,同時返回時也可能有NAT。網絡
下面先總結一下三個基本的特徵:負載均衡算法(策略),健康檢查,會話保持架構
負載均衡算法負載均衡
輪詢(RoundRobin):按請求順序分發請求給隊列中的服務器處理微服務
比率(Ratio):給隊列中的每一個服務器分配一個加權值爲比例,把每一個請求按比例分發性能
優先權(Priority):給全部服務器分組,給每一個組定義優先權,按照優先級分發請求到組(組內分發可按照輪詢或者比率)學習
最少鏈接數(LeastConnection):負載均衡設備記錄每一個服務器或者服務端口上的鏈接數,新的鏈接將分發給鏈接數少的服務器url
最快響應時間(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)路由器提供了防火牆的服務 路由器僅僅轉發特定地址的數據包,不傳送不支持路由協議的數據包傳送和未知目標網絡數據包的傳送,從而能夠防止廣播風暴。