互聯網研發中負載均衡算法一點探索

    負載均衡在線上服務中有着很重要做用,由於一臺web服務好比tomcat,可以處理qps(每秒處理請求數)前端

是有限的。那麼就須要有有前端負載均衡服務將大的流量分發爲多個後端服務進行處理。nginx

       負載均衡產品有硬件F五、有軟件,早以前使用Apache較多,目前是使用Nginx多,Nginx架構實現簡潔優web

雅性能高。LVS、HAProxy是著名軟負載工具。說到LVS是由原淘寶章文蒿(目前在滴滴公司)博士領導開發,redis

是到目前爲止Linux內核中網絡核心部分,也是國人開Linux內核最高貢獻,章博士在國內技術圈封神,實至名算法

歸。固然國內對於Linux內核進行貢獻代碼人不少,之後有機會能夠介紹下那些牛人。數據庫

       硬件F5優勢是負載均衡效果好、效率高,缺點是配置複雜,成本高。後端

       Apache、Nginx能夠進行軟件負載,軟件負載性能沒有硬件負載性能高,但優點是配置靈活而且能知道瀏覽器

後端負載狀況,根據後端負載調整負載均衡配置。Nginx支持多種負載均衡算法,根據實際狀況調整負載配置tomcat

來知足業務須要。軟件負載成本低效果也能知足線上性能須要,軟件負載在互聯網企業有着普遍用途。服務器

 

       web網站軟件負載均衡過程是,用戶請求打到負載均衡Apache、Nginx上,由Apache、Nginx轉發到

多個Tomcat服務,Tomcat上web服務接收到請求處理完返回給Apache或Nginx,Apache和Nginx將請求返

回給前端瀏覽器,完成整個負載均衡過程。

       nginx負載均衡算法:有輪訓負載均衡算法,ip hash負載均衡算法,url hash負載均衡算法,輪訓加權

負載均衡算法,fair 負載算法按服務端相應時間來分配請求。

       dubbo微服務自己也是經過軟件負載來分配客戶端請求,與web差別點是一:負載是在客戶端進行處理

而不是服務端。二是負載是負載請求次數而不是鏈接,由於當下微服務都是經過netty來實現長鏈接,負載

是負載多個長鏈接對於每一個鏈接中產生調用次數。

       一、輪訓算法:前端請求按時間順序按順序配置到後端服務器,若是是後臺服務當掉,若是後臺服務器

當掉,則去掉有問題機器,對於用戶請求無感知,用戶不會知道已有服務掉線,也是實現服務高可用。

       二、加權負載均衡算法:指定輪訓權重,權重越大,給後端服務轉發請求越多,這種配置用在後臺服務

器性能有好好差狀況下,後臺性能好機器配置高權重,後臺性能差服務配置低權重,根據實際後臺服務狀況

調整權重配置。

       三、ip hash能夠根據用戶請求ip按照hash算法將請求分配到固定後端服務上,這樣能夠解決用戶在動態

服務上session共享問題,當前session共享也能夠經過共同存儲,好比將session存儲到數據庫或者將session

存儲到redis來解決session共享問題。

        ip hash還有個好處就是在61八、雙11等電商大促高併發場景下,當用戶請求超過系統可以處理負載,實

現對用戶排隊,經過排隊避免用戶請求過多壓垮系統。

       四、url hash:按訪問url hash將固定url訪問,打到固定節點服務,這樣能夠根據url調整服務資源,最大

化資源利用率。

       五、fair負載均衡算法:根據服務端相應時間,來調整分配給每一臺後端服務請求數量,這樣能夠更智能、

合理、資源最大化使用實現負載調配。

       負載均衡算法還要注意失效節點負載從新進行均勻分配,而不是對整個流量所有進行從新分配。避免忽然

給後臺服務增長不少請求形成服務不可用。再有就是負載均衡算法成熟,要避免bug致使服務擊穿,而且產生洪

泛效應,將全部服務節點均打垮最終致使服務不可用。

        對於每個技術都要掌握原理,很好的去使用它,發揮它最大優點,勿在浮沙築高臺,但願對你們有幫助。

 

微信搜索:debugme123

        掃描二維碼關注:

相關文章
相關標籤/搜索