負載均衡的意義是指將負載的任務進行平衡、分攤到多個操作單元上進行運行,主要是用來避免單一應用由于并發等原因,導致應用宕機從而讓系統整體無法使用、多負載同時工作,則使用負載均衡能夠解決高并發的問題并實現服務的高可用。
負載均衡,英文名稱為Load Balance,其含義就是指將負載(工作任務)進行平衡、分攤到多個操作單元上進行運行,例如FTP服務器、Web服務器、企業核心應用服務器和其它主要任務服務器等,從而協同完成工作任務。
負載均衡構建在原有網絡結構之上,它提供了一種透明且廉價有效的方法擴展服務器和網絡設備的帶寬、加強網絡數據處理能力、增加吞吐量、提高網絡的可用性和靈活性。
在我們項目中,服務的接入層由nginx管理,用戶請求經過nginx之后,根據相應的域名,轉發到對應的服務器去,由于nginx只負責請求轉發,沒有業務邏輯處理,所以效率上非常高。
nginx支持的負載均衡策略有很多,我們在nginx.conf中配置upstream模塊即可。
首先是輪訓,默認的就是這種方式
第二種權重的方式,就是根據服務器的性能,配置較大的權重,nginx就會分配更多的請求
第三種是iphash的方式,nginx會根據請求的ip地址,今夕那個hash運算,然后分配相應的服務器,后續來自同一ip的請求都會分配到這個服務器上
第四種是最少連接數,把請求轉發給連接數較少的后端服務器
還有就是可以根據響應時間和url hash來做處理,我們項目中配置的是權重的方式。
在微服務架構中,feign和zuul都集成了ribbon的的功能,它是負責在微服務之間相互調用的時候,幫我們實現負載均衡的功能,我們在將微服務注冊到注冊中心時,如果服務名稱一致,就默認為一個集群,在進行遠程調用或者路由轉發的時候,都可以均衡的訪問響應的服務器,ribbon的負載均衡機制有輪訓和隨機,默認是輪訓,當然也可以自定義負載均衡的策略。