Introduccion
Centros de configuración comunes: SpringBoot + git, zookeeper, redis, etc.
Además de implementar el centro de registro , Nacos también combina el centro de configuración.A través de la función de gestión de configuración de Nacos, podemos concentrar todas las configuraciones dentro de todo el sistema de arquitectura en Nacos Almacenamiento.
Los beneficios de hacer esto:
- La configuración separada de múltiples entornos permite una autoridad de administración más flexible y una mayor seguridad
- El paquete de la aplicación es más puro, para lograr las características del paquete una vez, ejecutándose en múltiples
ubicaciones Configuración de posicionamiento: el modelo de gestión de configuración de Nacos utiliza DataId y Group para localizar el contenido de configuración, además de muchas otras funciones de gestión.
Inicio rápido
A través de un ejemplo simple para presentar cómo crear contenido de configuración en Nacos y cómo cargar la información de configuración de Nacos en la aplicación Spring Cloud.
Crear configuración
El primer paso: ingrese a la página de control de Nacos, en la página de funciones de la lista de configuración, haga clic en el botón "+" en la esquina superior derecha para ingresar a la página de "nueva configuración", complete el contenido de la siguiente manera:
Observaciones
Data ID
: Completaralibaba-nacos-config-client.properties
Group
: Sin modificación, use el valor predeterminadoDEFAULT_GROUP
- Formato de configuración: seleccione Propiedades
- Contenido de configuración: el contenido de configuración que debe cargar la aplicación, aquí solo se usa como ejemplo, para hacer una configuración simple, como: didispace.title = spring-cloud-alibaba-learning
Crear aplicación
Paso 1: Cree una aplicación Spring Boot, que puede llamarse: alibaba-nacos-config-client.
Paso 2: Edite pom.xml y agregue la configuración de dependencia necesaria, como:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<optional>true</optional>
</dependency>
</dependencies>
No hay ningún módulo de descubrimiento de servicios agregado a nacos, por lo que estos dos contenidos se pueden usar de forma independiente
parent
: Defina la versión de Spring Boot
dependencyManagement
: la versión de Spring Cloud y la versión de Spring Cloud Alibaba. Dado que Spring Cloud Alibaba no se ha incluido en la gestión de la versión principal de Spring Cloud, debe agregarse
dependencies
: contenido dependiente para ser utilizado por la aplicación actual. Aquí se agrega principalmente un nuevo módulo de cliente de configuración de Nacos: spring-cloud-starter-alibaba-nacos-config. Dado que la versión se ha introducido en dependencyManagement, no es necesario especificar una versión específica aquí.
Paso 3: Cree la clase de aplicación principal e implemente una interfaz HTTP:
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Slf4j
@RestController
@RefreshScope
static class TestController {
@Value("${didispace.title:}")
private String title;
@GetMapping("/test")
public String hello() {
return title;
}
}
}
@RefreshScope
Explicación de la anotación: deje que el contenido de la configuración de esta clase admita la actualización dinámica, es decir, después de que nuestra aplicación se inicie, después de modificar el contenido de la configuración en Nacos, entrará en vigencia inmediatamente aquí.
Paso 4: Cree un archivo de configuración bootstrap.properties y configure el nombre del servicio y la dirección de Nacos
spring.application.name=alibaba-nacos-config-client
server.port=8001
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
Nota: Debe usar bootstrap.properties, y el
valor spring.application.name debe coincidir con el Id. De datos de configuración creado en la etapa anterior de Nacos (a excepción del sufijo .properties o .yaml).
Paso 5: Verifique la adquisición de la configuración y verifique la actualización dinámica.
Utilice herramientas como curl o cartero para acceder a la interfaz: localhost: 8001 / test. Si todo es normal, se devolverá el aprendizaje spring-cloud-alibaba configurado en Nacos. Luego, a través de la página de Nacos, modifique este contenido, haga clic en el lanzamiento y luego acceda a la interfaz, puede ver que el resultado devuelto ha cambiado.
Al mismo tiempo, en el lado del cliente de la aplicación, también podemos ver los siguientes registros:
2019-01-27 18:39:14.162 INFO 93597 --- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [didispace.title]
Reglas de carga configuradas
Configuración predeterminada de Nacos ::
Data ID
alibaba-nacos-config-client.properties
Group
: DEFAULT_GROUP
explica la configuración aquí y la configuración de los archivos en el proyecto correspondiente
- En Data ID
alibaba-nacos-config-client
: correspondiente a la configuración del clientespring.cloud.nacos.config.prefix
, el valor predeterminadospring.cloud.nacos.config.prefix
es: nombre del servicio - ID de datos
properties
: correspondiente a la configuración del clientespring.cloud.nacos.config.file-extension
, el valor predeterminado esproperties
- Valor de grupo
DEFAULT_GROUP
: corresponde a la configuración del clientespring.cloud.nacos.config.group
, el valor predeterminado esDEFAULT_GROUP
Nota: la aplicación adopta la forma predeterminada de cargar la configuración:Data ID=${spring.application.name}.properties
Group=DEFAULT_GROUP
Ejemplo 1: Cómo cambiar la configuración sin cargar el nombre predeterminado de la aplicación, como Data ID=example.properties
,Group=DEFAULT_GROUP
spring.cloud.nacos.config.prefix=example
Ejemplo 2: si desea cargar contenido en formato yaml en lugar de contenido en formato Propiedades Data ID=example.yaml
,Group=DEFAULT_GROUP
spring.cloud.nacos.config.prefix=example
spring.cloud.nacos.config.file-extension=yaml
Ejemplo 3: Si la configuración de la gestión de grupos, tales como la carga: Data ID=example.yaml
,Group=DEV_GROUP
spring.cloud.nacos.config.prefix=example
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEV_GROUP
Pensando
Existen tres tipos de configuración Nacos correspondencia, en las dos primeras spring.cloud.nacos.config.prefix
y spring.cloud.nacos.config.file-extension
la mayor parte de la configuración por defecto utilizado
pero para spring.cloud.nacos.config.group
ello: Se puede hacer referencia a la función de espacio de nombres, tales como: lo utilizan para distinguir entre diferentes contenidos configuración de los grupos de productos de cada aplicación (nombre de la aplicación puede resolver Problemas conflictivos), o úselo para distinguir el contenido de configuración de diferentes usos, o úselo para distinguir la configuración de diferentes entornos