SpringBoot版本:2.7.1
SpringCloud版本:2021.0.3
项目结构
导入依赖
Eureka已集成Ribbon,所以只用导入Eureka即可
要替换或自定义负载均衡算法,需使用接口IRule,这里推荐适配于新版本Boot及Cloud的包 ribbon-loadbalancer
<dependencies>
<!-- https://mvnrepository.com/artifact/com.netflix.ribbon/ribbon-loadbalancer -->
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-loadbalancer</artifactId>
<version>2.7.18</version>
</dependency>
<!--Eureka 已集成Ribbon-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<!--actuaor 完善监控信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--实体类-->
<dependency>
<groupId>com.yl</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
配置文件
server:
port: 80
spring:
application:
name: SPRINGCLOUD-CONSUMER-DEPT
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
register-with-eureka: false #不注册到eureka中
instance:
instance-id: springcloud-consumer-dept80 #描述信息
prefer-ip-address: true #优先使用ip注册,访问显示ip
management:
endpoints:
web:
exposure:
include: "*"
info:
env:
enabled: true
# 暴露端点info
info:
app.name: yl-springcloud
company.name: www.yl.com
build.artifactId: com.yl.springcloud
build.version: 1.0-SNAPSHOT
替换负载均衡算法
@Configuration
public class DiyRule {
@Bean
public IRule myRule(){
return new RandomRule();
}
}
这里有很多种算法,当然也可以重写方法自定义负载均衡算法
主启动类,开启注解
@LoadBalancerClient(name =“SPRINGCLOUD-PROVIDER-DEPT”,configuration = DiyRule.class)
通过源码发现,只要按其要求填写参数即可
@SpringBootApplication
@EnableEurekaClient
@LoadBalancerClient(name ="SPRINGCLOUD-PROVIDER-DEPT",configuration = DiyRule.class)
public class DeptConsumer_80 {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer_80.class,args);
}
}