8.2、LoadBalancer与Nacos集成
分类: Spring Cloud LoadBalancer
LoadBalancer 与 Nacos 集成
LoadBalancer 需要与服务发现组件集成才能获取服务实例列表。本节将学习 LoadBalancer 与 Nacos 集成。
本节将学习:添加 LoadBalancer 依赖、Nacos Discovery 集成、自动配置原理,以及服务列表获取。
添加 LoadBalancer 依赖
Maven 依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>
Nacos Discovery 依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
完整依赖配置
<dependencies> <!-- Nacos Discovery --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- LoadBalancer --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> </dependencies>
Nacos Discovery 集成
配置文件
spring: application: name: user-service cloud: nacos: discovery: server-addr: localhost:8848 namespace: public group: DEFAULT_GROUP
启动类配置
@SpringBootApplication @EnableDiscoveryClient public class UserServiceApplication { public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } }
自动配置原理
LoadBalancer 自动配置
LoadBalancer 自动配置:
- 检测到服务发现客户端时自动启用
- 自动创建 LoadBalancerClient
- 自动配置负载均衡策略
- 与服务发现组件集成
配置类
@Configuration @ConditionalOnClass(LoadBalancerClient.class) @AutoConfigureAfter(DiscoveryClientAutoConfiguration.class) public class LoadBalancerAutoConfiguration { // 自动配置逻辑 }
服务列表获取
服务发现流程
服务发现流程:
- Nacos Discovery 从 Nacos 获取服务列表
- LoadBalancer 从 DiscoveryClient 获取服务实例
- 根据负载均衡策略选择实例
- 执行服务调用
服务实例获取
@Autowired private DiscoveryClient discoveryClient; public List<ServiceInstance> getInstances(String serviceId) { return discoveryClient.getInstances(serviceId); }
LoadBalancer 使用
@Autowired private LoadBalancerClient loadBalancerClient; public ServiceInstance chooseInstance(String serviceId) { return loadBalancerClient.choose(serviceId); }
验证集成
验证步骤
验证步骤:
- 启动 Nacos Server
- 启动服务提供者
- 启动服务消费者
- 验证服务发现
- 验证负载均衡
测试代码
@RestController public class TestController { @Autowired private DiscoveryClient discoveryClient; @GetMapping("/services") public List<String> getServices() { return discoveryClient.getServices(); } }
官方资源
- Spring Cloud LoadBalancer 官方文档:https://spring.io/projects/spring-cloud-loadbalancer
- Nacos 服务发现:https://nacos.io/docs/use-nacos-with-spring-cloud.html
本节小结
在本节中,我们学习了:
第一个是添加 LoadBalancer 依赖。 添加 LoadBalancer 和 Nacos Discovery 依赖。
第二个是 Nacos Discovery 集成。 配置 Nacos Discovery。
第三个是自动配置原理。 LoadBalancer 的自动配置机制。
第四个是服务列表获取。 如何从 Nacos 获取服务实例列表。
这就是 LoadBalancer 与 Nacos 集成。完成集成后,LoadBalancer 可以从 Nacos 获取服务实例并进行负载均衡。
在下一节,我们将学习负载均衡策略。