一、去掉 Nacos Config 加载:

1、修改 Nacos中的 nacos-user-dev.yaml 配置,去掉 server.port: 8019


2、或者不使用 Nacos Config 配置:

  • 删除或者注释掉bootstrap.properties中的Config配置

#spring.cloud.nacos.config.server-addr=192.168.100.213:8848
#spring.cloud.nacos.config.file-extension=yaml
#spring.cloud.nacos.config.prefix=nacos-user
  • 删除或者注释掉pom.xml中的nacos-config
<!-- <dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency> -->


二、参照《STS多端口多实例启动SpringBoot服务》,启动三个User实例(8887、8888、8889):

注:这时检查Nacos服务列表的nacos-user服务,会看到实例数为3



三、使用 DiscoveryClient 配合 RestTemplate 实现自定义负载均衡:

修改前面创建的Index模块

1、修改pom.xml,添加alibaba-nacos-discovery依赖:


<dependency>
	<!-- 服务注册与发现 -->
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>


2、添加 bootstrap.properties配置文件,并填入如下配置信息:


spring.cloud.nacos.discovery.server-addr=192.168.100.213:8848


3、修改
IndexController类,将前面使用IP+端口访问服务,改成使用DiscoveryClient获取服务访问:


@Controller
public class IndexController {
	@Autowired
	private RestTemplate restTemplate;
	@Autowired
	private DiscoveryClient discoveryClient;

	@GetMapping({ "", "/" })
	public String index(Model m) {

		// 1、获取所有服务,这里能获得3个nacos-user服务
		List<ServiceInstance> instances = discoveryClient.getInstances("nacos-user");

		// 2、使用随机数为索引,取其中一个服务
		int index = new Random().nextInt(instances.size());
		ServiceInstance serviceInstance = instances.get(index);

		// 3、获取一个服务的IP+端口,并拼接成服务URL,供RestTemplate使用
		String url_format = "http://%s:%i/user/2";
		String url = String.format(url_format, serviceInstance.getHost(), serviceInstance.getPort());

		// 4、打印URL,检查是否随机访问不同实例
		System.out.println("******URL:" + url);

		// 通过restTemplate调用用户微服务
		Object obj = restTemplate.getForObject(url, String.class);
		m.addAttribute("test", obj);
		return "index";
	}
}


4、启动
IndexApplication后,刷新多次访问,出现如下结果,即达到了简单的负载均衡效果: