一、介绍
(1)该组件作用在客户端,在调用微服务提供的接口时实现负载均衡。
(2)提供了轮询(默认)、随机访问等策略,可以自定义负载均衡策略。
(3)nginx负载均衡:请求交给nginx服务器,服务器结合负载均衡策略将请求转发到对应的服务器上;ribbon负载均衡:客户端获取服务对应的实例清单列表,在结合负载均衡策略从实例列表中挑选一个访问。
(4)ribbon是netflix开发的,故导入eureka的客户端依赖会默认集成上ribbon。
二、ribbon的负载均衡策略
三、针对不同的服务配置不同的负载均衡策略
(1)创建配置类
@Configuration
public class MyRules {
@Bean
public IRule myRule(){
return new RandomRule();
}
}
(2)启动类配置使用该负载均衡策略的服务
@EnableEurekaClient
@SpringBootApplication
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MyRules.class)
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class, args);
}
}
(3)测试
四、负载均衡轮询策略原理
(1)维护一个线程安全的原子变量。
(2)每次自增后去模。