今天在看高併發架構時,發現負載均衡是有多種實現的,並不僅僅侷限在nginx的反向**、dubbo呼叫服務提供者時提供的負載均衡,主要有5種:
來自使用者的 http 請求到達負載均衡伺服器以後,負載均衡伺服器根據某種負載均衡演算法計算乙個新的伺服器,通過 http 重定向響應,將新的 ip 位址傳送給使用者瀏覽器,使用者瀏覽器收到重定向響應以後,重新傳送請求到真正的應用伺服器,以此來實現負載均衡。
http 重定向負載均衡的優點是它的設計比較簡單,最簡單的 http 重定向負載均衡伺服器,可能只需要幾十行**就可以完成。但是它的缺點是,使用者完成一次訪問需要兩次請求資料中心,一次請求負載均衡伺服器,一次是請求應用伺服器;另乙個問題是因為響應要重定向到真正的應用伺服器,所以需要把應用伺服器的 ip 位址暴露給外部使用者,這樣可能會導致安全性的問題。
瀏覽器訪問我們資料中心的時候,通常是用網域名稱進行訪問,http 協議則必須知道 ip 位址才能建立通訊連線,那麼網域名稱是如何轉換成 ip 位址的呢?
就是通過 dns 伺服器來完成。當使用者從瀏覽器發起發起 http 請求的時候,他輸入網域名稱,首先要到 dns 網域名稱伺服器進行網域名稱解析,解析得到 ip 位址以後,使用者才能夠根據 ip 位址建立 http 連線,訪問真正的資料中心的應用伺服器,那麼就可以在 dns 網域名稱解析的時候進行負載均衡,不同的瀏覽器進行解析的時候,返回不同的 ip 位址,從而實現負載均衡。
問題目前主要的 dns 服務商和 dns 軟體都支援 dns 網域名稱解析負載均衡。dns 網域名稱解析負載均衡的主要問題有兩個方面。一方面它依然是要將 web 伺服器的 ip 位址暴露給瀏覽器,產生安全問題。另一方面,很多時候,dns 網域名稱解析伺服器是在網際網路應用系統之外的乙個伺服器,它由網域名稱解析服務商提供,不在我們的控制範圍之內,所以當我們的伺服器不可用的時候,dns 網域名稱解析伺服器並不知道,它依然會將使用者請求分發過來。而且網域名稱解析並不是每一次請求都進行解析的,即使我們去網域名稱解析服務商的機器上去更新了網域名稱解析對應的 ip 列表,這個更新也不會立即生效,依然會有大量的請求到達我們的應用伺服器。那麼這些已經宕機的、不可用的伺服器就無法完成使用者的需求,在使用者看起來就是我們的系統不可用。
使用者請求到達資料中心以後,最先到達的就是反向**伺服器。反向**伺服器,除了可以提供請求的快取功能以外,還可以進行負載均衡,將使用者的請求分發到不同的伺服器上面去。反向**是工作在 http 協議層上的乙個伺服器,所以它**的也是 http 的請求和響應。而 http 協議相對說來,作為網際網路第七層的乙個協議,它的協議比較重,效率比較低,所以反向**負載均衡通常用在小規模的網際網路系統上,只有幾台或者十幾台伺服器的規模
缺點:但是它依然有乙個缺陷,就是不管是請求還是響應的資料報都要通過負載均衡伺服器進行 ip 位址轉換,才能夠正確地進行資料分發,或者正確地響應到使用者的客戶端瀏覽器。請求的資料通常比較小,乙個 url 或者是乙個簡單的表單,但是響應的資料不管是 html 還是,js、css 這樣的資源檔案通常都會比較大,因此負載均衡伺服器會成為響應資料的流量瓶頸
為了解決ip負載均衡流量瓶頸的問題,將負載均衡的資料傳輸,再往下放一層,放到了資料鏈路層,實現資料鏈路層的負載均衡。
在這一層上,負載均衡伺服器並不修改資料報的 ip 位址,而是修改網絡卡的 mac 位址。而應用伺服器和負載均衡伺服器都使用相同的虛擬 ip 位址,這樣 ip 路由就不會受到影響,但是網絡卡會根據自己的 mac 位址選擇負載均衡傳送到自己的網絡卡的資料報,交給對應的應用伺服器去處理,處理結束以後,當他把響應的資料報傳送到網路上的時候,因為 ip 位址沒有修改過,所以這個響應會直接到達使用者的瀏覽器,而不會再經過負載均衡伺服器。
關於負載均衡一些知識
負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬 增加吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡的五種形式 1,負載均衡 在服務機房裡 1,http重定向負載均衡 301永久重定向 302臨時重定向 http重定向缺點 1 2 3 ...
一些負載均衡策略
負載均衡分全域性負載均衡和本地負載均衡。地負載均衡是指對本地的伺服器群做負載均衡,全域性負載均衡是指對分別放置在不同的地理位置 有不同網路結構的伺服器群間作負載均衡。迴圈 dns 就是每次解析網域名稱時指向 ip loop list 裡的下乙個 ip.負載均衡路由器 通過某種策略把請求傳送到響應最快...
均衡負載一些解決辦法
1 dns負載均衡 dns負載均衡技術的實現原理是在dns伺服器中為同乙個主機名配置多個ip位址,在應答dns查詢時,dns伺服器對每個查詢將以dns檔案中主機記錄的ip位址按順序返回不同的解析結果,將客戶端的訪問引導到不同的機器上去,使得不同的客戶端訪問不同的伺服器,從而達到負載均衡的目的。2 n...