負載均衡在線上服務中有着很重要作用,因為一台web服務比如tomcat,能夠處理qps(每秒處理請求數)
是有限的。那么就需要有有前端負載均衡服務將大的流量分發為多個后端服務進行處理。
負載均衡產品有硬件F5、有軟件,早之前使用Apache較多,目前是使用Nginx多,Nginx架構實現簡潔優
雅性能高。LVS、HAProxy是著名軟負載工具。說到LVS是由原淘寶章文蒿(目前在滴滴公司)博士領導開發,
是到目前為止Linux內核中網絡核心部分,也是國人開Linux內核最高貢獻,章博士在國內技術圈封神,實至名
歸。當然國內對於Linux內核進行貢獻代碼人很多,以后有機會可以介紹下那些牛人。
硬件F5優點是負載均衡效果好、效率高,缺點是配置復雜,成本高。
Apache、Nginx可以進行軟件負載,軟件負載性能沒有硬件負載性能高,但優勢是配置靈活並且能知道
后端負載情況,根據后端負載調整負載均衡配置。Nginx支持多種負載均衡算法,根據實際情況調整負載配置
來滿足業務需要。軟件負載成本低效果也能滿足線上性能需要,軟件負載在互聯網企業有着廣泛用途。
web網站軟件負載均衡過程是,用戶請求打到負載均衡Apache、Nginx上,由Apache、Nginx轉發到
多個Tomcat服務,Tomcat上web服務接收到請求處理完返回給Apache或Nginx,Apache和Nginx將請求返
回給前端瀏覽器,完成整個負載均衡過程。
nginx負載均衡算法:有輪訓負載均衡算法,ip hash負載均衡算法,url hash負載均衡算法,輪訓加權
負載均衡算法,fair 負載算法按服務端相應時間來分配請求。
dubbo微服務本身也是通過軟件負載來分配客戶端請求,與web差異點是一:負載是在客戶端進行處理
而不是服務端。二是負載是負載請求次數而不是連接,因為當下微服務都是通過netty來實現長連接,負載
是負載多個長連接對於每個連接中產生調用次數。
1、輪訓算法:前端請求按時間順序按順序配置到后端服務器,如果是后台服務當掉,如果后台服務器
當掉,則去掉有問題機器,對於用戶請求無感知,用戶不會知道已有服務掉線,也是實現服務高可用。
2、加權負載均衡算法:指定輪訓權重,權重越大,給后端服務轉發請求越多,這種配置用在后台服務
器性能有好好差情況下,后台性能好機器配置高權重,后台性能差服務配置低權重,根據實際后台服務情況
調整權重配置。
3、ip hash可以根據用戶請求ip按照hash算法將請求分配到固定后端服務上,這樣可以解決用戶在動態
服務上session共享問題,當前session共享也可以通過共同存儲,比如將session存儲到數據庫或者將session
存儲到redis來解決session共享問題。
ip hash還有個好處就是在618、雙11等電商大促高並發場景下,當用戶請求超過系統能夠處理負載,實
現對用戶排隊,通過排隊避免用戶請求過多壓垮系統。
4、url hash:按訪問url hash將固定url訪問,打到固定節點服務,這樣可以根據url調整服務資源,最大
化資源利用率。
5、fair負載均衡算法:根據服務端相應時間,來調整分配給每一台后端服務請求數量,這樣可以更智能、
合理、資源最大化使用實現負載調配。
負載均衡算法還要注意失效節點負載重新進行均勻分配,而不是對整個流量全部進行重新分配。避免突然
給后台服務增加很多請求造成服務不可用。再有就是負載均衡算法成熟,要避免bug導致服務擊穿,並且產生洪
泛效應,將所有服務節點均打垮最終導致服務不可用。
對於每一個技術都要掌握原理,很好的去使用它,發揮它最大優勢,勿在浮沙築高台,希望對大家有幫助。
微信搜索:debugme123
掃描二維碼關注: