8.2LoadBalancer与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 { // 自动配置逻辑 }

服务列表获取

服务发现流程

服务发现流程:

  1. Nacos Discovery 从 Nacos 获取服务列表
  2. LoadBalancer 从 DiscoveryClient 获取服务实例
  3. 根据负载均衡策略选择实例
  4. 执行服务调用

服务实例获取

@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); }

验证集成

验证步骤

验证步骤:

  1. 启动 Nacos Server
  2. 启动服务提供者
  3. 启动服务消费者
  4. 验证服务发现
  5. 验证负载均衡

测试代码

@RestController public class TestController { @Autowired private DiscoveryClient discoveryClient; @GetMapping("/services") public List<String> getServices() { return discoveryClient.getServices(); } }

官方资源

本节小结

在本节中,我们学习了:

第一个是添加 LoadBalancer 依赖。 添加 LoadBalancer 和 Nacos Discovery 依赖。

第二个是 Nacos Discovery 集成。 配置 Nacos Discovery。

第三个是自动配置原理。 LoadBalancer 的自动配置机制。

第四个是服务列表获取。 如何从 Nacos 获取服务实例列表。

这就是 LoadBalancer 与 Nacos 集成。完成集成后,LoadBalancer 可以从 Nacos 获取服务实例并进行负载均衡。

在下一节,我们将学习负载均衡策略。