Ribbon
负载均衡
明确:负载均衡要在客户端进行设置
原理图片:


spring-cloud系列之ribbon
基本配置:
1.引入jar包
<!-- Ribbon相关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
2.需要访问eureka中查询可用服务列表
server:
port: 80
eureka:
client:
register-with-eureka: false --不向注册中心注册自己
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
上述目前是访问的eurke集群
3.在配置configuretion中的resttemplate中设置负载均衡的标志
@Bean
@LoadBalanced//Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。
public RestTemplate getRestTemplate()
{
return new RestTemplate();
}
4.访问eureka中的服务(已经添加负载均衡)
spring-cloud系列之ribbon

目前的Ribbon支持的算法
spring-cloud系列之ribbon
核心组件:
spring-cloud系列之ribbon
ribbon源码解析

github中

1.iRuler.java
2.Iloaderbalancer.java
3.abstractloaderbalance实现Iloaderbalance
4.在继承abstractloaderbalance这个抽象类里面的choose方法就是负载均衡的算法
spring-cloud系列之ribbon

默认为轮询算法,如果使用其他算法的配置
1.重新选择的随机算法替代默认的轮询
@Bean
public IRule myRule()
{
//return new RoundRobinRule();
return new RandomRule();//达到的目的,用我们重新选择的随机算法替代默认的轮询。
}
2.使用自定义算法
1.主启动类添加@RibbonClient使用自定义配置类
spring-cloud系列之ribbon
name就是客户端需要在eureka访问的服务端
configuration 就是自定义的配置类
2.
spring-cloud系列之ribbon

2.1.规定不能建在componentScan这个注解下--> 也就是说不能和主启动类同包
需要新建一个包
spring-cloud系列之ribbon

2.2配置自定义规则
2.2.1配置文件
@Configuration
public class MySelfRule
{
@Bean
public IRule myRule()
{
//return new RoundRobinRule();// Ribbon默认是轮询,我自定义为随机
return new MyRule();//
}
}



2.2.2自定义算法,书写你需要的算法就可以了
public class MyRule extends AbstractLoadBalancerRule ----注意需要继承

相关文章: