一:自定义LoadBalance接口
具体代码如下:
package com.springcloudtest.order.config;
import org.springframework.cloud.client.ServiceInstance;
import java.util.List;
public interface LoadBalance {
ServiceInstance instances(List<ServiceInstance> serviceInstanceList);
}
该接口有两个作用:
1.对外暴露,当需要使用负载均衡功能时,可以调用该接口的 instances方法,传入微服务实例List,
返回一个经过负载均衡算法选择后的具体实例
2.进行不同负载均衡算法的实现,当需要实现其他类型的负载均衡算法时,可以实现该接口,然后再具体
写出负载均衡算法的实现
二:采用负载均衡轮询算法实现该接口
1.实现上面的LoadBalance接口
package com.springcloudtest.order.config;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
@Component
public class MyLoadBalance implements LoadBalance {
public ServiceInstance instances(List<ServiceInstance> serviceInstanceList) {
return null;
}
}
注意:
注意@Component,需要把该类注入到IOC容器中,以便后续的@Resource获取
2.采用 CAS+自旋锁方式实现轮询算法
package com.springcloudtest.order.config;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.stereotype.Component