Load Balance負載均衡是用於解決一臺機器(一個程序)無法解決所有請求而產生的一種演算法。像nginx可以使用負載均衡分配流量,ribbon為客戶端提供負載均衡,dubbo服務呼叫裡的負載均衡等等,很多地方都使用到了負載均衡。
使用負載均衡帶來的好處很明顯:
當集群裡的1臺或者多臺伺服器down的時候,剩餘的沒有down的伺服器可以保證服務的繼續使用
使用了更多的機器保證了機器的良性使用,不會由於某一高峰時刻導致系統cpu急劇上升
負載均衡有好幾種實現策略,常見的有:
隨機 (Random)
輪詢 (RoundRobin)
一致性雜湊 (ConsistentHash)
雜湊 (Hash)
加權(Weighted)
ILoadBalance 負載均衡器
ribbon是一個為客戶端提供負載均衡功能的服務,它內部提供了一個叫做ILoadBalance的介面代表負載均衡器的操作,比如有新增伺服器操作、選擇伺服器操作、獲取所有的伺服器列表、獲取可用的伺服器列表等等。
負載均衡器是從EurekaClient(EurekaClient的實現類為DiscoveryClient)獲取服務資訊,根據IRule去路由,並且根據IPing判斷服務的可用性。
負載均衡器多久一次去獲取一次從Eureka Client獲取註冊資訊呢?在BaseLoadBalancer類下,BaseLoadBalancer的建構函式,該建構函式開啟了一個PingTask任務。
Load Balance負載均衡是用於解決一臺機器(一個程序)無法解決所有請求而產生的一種演算法。像nginx可以使用負載均衡分配流量,ribbon為客戶端提供負載均衡,dubbo服務呼叫裡的負載均衡等等,很多地方都使用到了負載均衡。
使用負載均衡帶來的好處很明顯:
當集群裡的1臺或者多臺伺服器down的時候,剩餘的沒有down的伺服器可以保證服務的繼續使用
使用了更多的機器保證了機器的良性使用,不會由於某一高峰時刻導致系統cpu急劇上升
負載均衡有好幾種實現策略,常見的有:
隨機 (Random)
輪詢 (RoundRobin)
一致性雜湊 (ConsistentHash)
雜湊 (Hash)
加權(Weighted)
ILoadBalance 負載均衡器
ribbon是一個為客戶端提供負載均衡功能的服務,它內部提供了一個叫做ILoadBalance的介面代表負載均衡器的操作,比如有新增伺服器操作、選擇伺服器操作、獲取所有的伺服器列表、獲取可用的伺服器列表等等。
負載均衡器是從EurekaClient(EurekaClient的實現類為DiscoveryClient)獲取服務資訊,根據IRule去路由,並且根據IPing判斷服務的可用性。
負載均衡器多久一次去獲取一次從Eureka Client獲取註冊資訊呢?在BaseLoadBalancer類下,BaseLoadBalancer的建構函式,該建構函式開啟了一個PingTask任務。