其意思就是分攤到多個操做單元上進行執,操做單元能夠是web服務器、ftp服務器、企業關鍵應用服務器等.前端
不能理解成平均分配到每一個操做單元上,由於每臺服務器的承載能力不盡相同,硬件配置、網絡帶寬等差別,因此並不能平均的分配,須要參考的因素不少.nginx
當http代理(好比瀏覽器)向web服務器請求某個URL後,web服務器能夠經過http響應頭信息中的Location標記來返回一個新的URL.web
這意味着HTTP代理須要繼續請求這個新的URL,完成自動跳轉.
算法
DNS 負責提供域名解析服務,當訪問某個站點時,實際上首先須要經過該站點域名的DNS服務器來獲取域名指向的IP地址,
在這一過程當中,DNS服務器完成了域名到IP地址的映射,一樣,這樣映射也能夠是一對多的,這時候,DNS服務器便充當了負載均衡調度器,
它就像http重定向轉換策略同樣,將用戶的請求分散到多臺服務器上,可是它的實現機制徹底不一樣。apache
一、能夠根據用戶IP來進行智能解析.DNS服務器能夠在全部可用的A記錄中尋找離用記最近的一臺服務器。後端
二、動態DNS:在每次IP地址變動時,及時更新DNS服務器.固然由於緩存,必定的延遲不可避免.
瀏覽器
幾乎全部主流的Web服務器都熱衷於支持基於反向代理的負載均衡.它的核心工做就是轉發HTTP請求.
相比前面的HTTP重定向和DNS解析,反向代理的調度器扮演的是用戶和實際服務器中間人的角色:緩存
一、任何對於實際服務器的HTTP請求都必須通過調度器服務器
二、調度器必須等待實際服務器的HTTP響應,並將它反饋給用戶(前兩種方式不須要通過調度反饋,是實際服務器直接發送給用戶)
網絡
一、調度策略豐富.例如能夠爲不一樣的實際服務器設置不一樣的權重,以達到能者多勞的效果.
二、對反向代理服務器的併發處理能力要求高,由於它工做在HTTP層面.
三、反向代理服務器進行轉發操做自己是須要必定開銷的,好比建立線程、與後端服務器創建TCP鏈接、接收後端服務器返回的處理結果、
分析HTTP頭部信息、用戶空間和內核空間的頻繁切換等,雖然這部分時間並不長,可是當後端服務器處理請求的時間很是短時,
轉發的開銷就顯得尤其突出.例如請求靜態文件,更適合使用前面介紹的基於DNS的負載均衡方式。
四、反向代理服務器能夠監控後端服務器,好比系統負載、響應時間、是否可用、TCP鏈接數、流量等,從而根據這些數據調整負載均衡的策略。
五、反向代理服務器可讓用戶在一次會話週期內的全部請求始終轉發到一臺特定的後端服務器上(粘滯會話),
這樣的好處一是保持session的本地訪問,二是防止後端服務器的動態內存緩存的資源浪費。
由於反向代理服務器工做在HTTP層,其自己的開銷就已經嚴重製約了可擴展性,從而也限制了它的性能極限.那可否在HTTP層面如下實現負載均衡呢?
NAT服務器:它工做在傳輸層,它能夠修改發送來的IP數據包,將數據包的目標地址修改成實際服務器地址.
NAT是工做在網絡分層模型的傳輸層(第四層),而直接路由是工做在數據鏈路層(第二層),貌似更屌些。
它經過修改數據包的目標MAC地址(沒有修改目標IP),將數據包轉發到實際服務器上,不一樣的是,實際服務器的響應數據包將直接發送給客戶羰,而不通過調度器。
基於IP隧道的請求轉發機制:將調度器收到的IP數據包封裝在一個新的IP數據包中,轉交給實際服務器,
而後實際服務器的響應數據包能夠直接到達用戶端。目前Linux大多支持,能夠用LVS來實現,稱爲LVS-TUN,與LVS-DR不一樣的是,
實際服務器能夠和調度器不在同一個WANt網段,調度器經過 IP隧道技術來轉發請求到實際服務器,因此實際服務器也必須擁有合法的IP地址。
負載均衡有硬件和軟件兩種.
硬件層的比較牛逼,將4-7層負載均衡功能作到一個硬件裏面,如F5,梭子魚.
目前主流的軟件負載均衡分爲四層和七層
LVS屬於四層負載均衡,工做在tcp/ip協議棧上,經過修改網絡包的ip地址和端口來轉發, 因爲效率比七層高,通常放在架構的前端.
七層的負載均衡有nginx, haproxy, apache等, 工做在應用層,所以能夠將HTTP請求等應用數據發送到具體的應用服務器,
如將圖片請求轉發到特定的服務器上,總之能夠作到更智能的負載均衡,這些功能在四層負載均衡上很差實現,通常放在架構的後面位置,佈置在應用服務器前面.
一、輪詢(Round Robin)
二、加權輪詢(Weighted Round Robin)
三、動態輪詢
四、隨機
五、最快算法(最快算法基於全部服務器中的最快響應時間分配鏈接)
六、最少鏈接(系統把新鏈接分配給當前鏈接數目最少的服務器)
服務器集羣就是指將不少服務器集中起來一塊兒進行同一種服務,在客戶端看來就像是隻有一個服務器.集羣能夠利用多個計算機進行並行計算從而得到很高的計算速度,也能夠用多個計算機作備份,從而使得任何一個機器壞了整個系統仍是能正常運行.
是將不一樣地點的,或具備不一樣功能的,或擁有不一樣數據的多臺計算機經過通訊網絡鏈接起來,在控制系統的統一管理控制下,協調地完成大規模信息處理任務的計算機系統
分佈式:一個複雜業務分拆多個子業務,部署在不一樣的服務器上. 集羣:同一個業務,部署在多個服務器上. 集羣是個物理形態,分佈式是個工做方式 集羣通常是物理集中、統一管理的,而分佈式系統則不強調這一點.