SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址

Spring Cloud原生的配置中心Config Server是注册到注册中心eureka server,客户端启动时,从注册中心获取配置中心的IP地址,然后再去配置中心获取配置中心中的配置。这种方式有几个优点:

  • 可以动态获取配置中心地址。配置中心的IP地址可以随意更换,而不需要更改客户端配置文件。只需要将注册中心注册到注册中心上。
  • 可以实现配置中心的动态扩容,实现配置中的高可用。当客户端较多,配置中心的压力较大,容易造成配置中心宕机,此时,可以再启动若干配置中心,注册到注册中心即可。

使用nacos作为配置中心,由于nacos灭有注册到注册中心上,nacos server的地址需要写在bootstrap.properties配置文件中。当我们需要更改配置中心的地址或者要增加nacos集群的数量,需要修改每台客户端的配置文件。很麻烦。

然而1.1.0版本发布的同时提供了地址服务器,解决了这一问题。在客户端只需要配置地址服务器集群的地址,注册中心以及配置中心的地址都是通过地址服务器动态获取。

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第1张图片

 


前面已经做过客户端自动获取注册中心地址的测试,下面我们做一个客户端自动获取配置中心地址的测试:

客户端通过地址服务器动态获取配置中心地址

前提:已启动:

  • 一台nacos addres地址服务器(本次测试地址:114.116.3.65:8080)
  • 两台单机模式启动的nacos server(本次测试地址:114.116.3.65:8848、132.232.159.88:8848)

大家可以自行查找资料启动或者看前面的博客nacos单机模式启动、单机模式地址服务器启动

客户端工程:

pom.xml



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.4.RELEASE
		 
	
	com.xjl
	nacos-discovery
	0.0.1-SNAPSHOT
	nacos-discovery
	Demo project for Spring Boot

	
		1.8
		Greenwich.SR2
		0.9.0.RELEASE
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-devtools
			runtime
			true
		
		
			org.projectlombok
			lombok
			true
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		

		
		
			org.springframework.cloud
			spring-cloud-starter-alibaba-nacos-config
		
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring-cloud.version}
				pom
				import
			
			
				org.springframework.cloud
				spring-cloud-alibaba-dependencies
				${spring.cloud.alibaba.version}
				pom
				import
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


bootstrap.properties启动配置文件:

server.port=8081
spring.application.name=nacos-producer
management.endpoints.web.exposure.include=*

spring.cloud.nacos.config.endpoint=114.116.3.65

controller层添加接口

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

	@Value("${test.name}")
	private String name;
	@Value("${test.age}")
	private Integer age;

	@GetMapping("/test")
	public String test() {
		return "name is " + name + " age is " + age;
	}

}

整个工程目录如下:

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第2张图片

Nacos Server服务器设置

在两台nacos服务器上分别创建nacos-producer.properties配置文件:如下图所示:

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第3张图片

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第4张图片

Nacos Address地址服务器设置

想地址服务器添加nacos server地址

可以通过linux命令行:

curl -X POST '114.116.3.65:8080/nacos/v1/as/nodes?ips=114.116.3.65'

也可以通过postman

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第5张图片

添加后查看server地址列表

可以通过命令行

curl -X GET '114.116.3.65:8080/nacos/serverlist'

或者通过postman:

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第6张图片

启动客户端:

请求地址http://localhost:8081/test可以看到如下图所示

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第7张图片

与114.116.3.65:8848  nacos server上的配置文件相符

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第8张图片

修改Nacos Address 地址服务器的nacos 列表

linux命令行:

curl -X DELETE '114.116.3.65:8080/nacos/v1/as/nodes?ips=114.116.3.65'

或者通过postman:

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第9张图片

添加132.232.159.88nacos地址到地址服务器

curl -X POST '114.116.3.65:8080/nacos/v1/as/nodes?ips=132.232.159.88'

postman同上:

修改后nacos列表如下:

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第10张图片

重启客户端:(未修改配置文件)

请求结果已发生那个变化

SpringCloud Alibaba Nacos作为配置中心(十一)--------客户端通过地址服务器动态获取Nacos Server地址_第11张图片

 

 

 

 

 

 

你可能感兴趣的:(springcloud,alibaba)