Spring Cloud loadbalancer 负载均衡组件

POM依赖

1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

SCL相关的代码在spring- cloud- common模块中,类和接口的含义:

  • org.springframework.cloud.client.loadbalancer.ServiceInstanceChooser: 服务实例选择器,根据服务名获取一个服务实例(org.springframework.cloud.client.ServiceInstance
  • org.springframework.cloud.client.lo adbalancer.LoadBalancerClient:客户端负载均衡器,继承serviceInstanceChooser,根据Service Instance和Request请求信息执行调用获取信息。
  • org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient:基于Spring Cloud LoadBalancer的LoadBalancerClient默认实现。
  • org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient:基于Netflix Ribbon的LoadBalancerClient实现。

ServiceInstanceChooser实例服务选择器

org.springframework.cloud.client.loadbalancer.ServiceInstanceChooser

1
2
3
4
5
6
7
8
9
10
11
package org.springframework.cloud.client.loadbalancer;
import org.springframework.cloud.client.ServiceInstance;
public interface ServiceInstanceChooser {

/**
* Chooses a ServiceInstance from the LoadBalancer for the specified service. 根据服务名得到一个服务实例
* @param serviceId The service ID to look up the LoadBalancer. 服务名称
* @return A ServiceInstance that matches the serviceId. 对应服务下一个实例信息
*/
ServiceInstance choose(String serviceId);
}