本文主要面向 Spring Cloud 的使用者,通过示例介绍如何使用 MSE Nacos 来实现配置管理。
说明
注意
通过私网连通时,容器服务集群需要和微服务引擎实例处于同一个 VPC。
通过控制台发布配置
登录 Nacos 控制台,操作说明参见 登录 Nacos 控制台。
在左侧菜单栏,单击 配置管理 > 配置列表。
单击添加图标。
在 新建配置 页面添加配置参数。
example.properties
useLocalCache=true
通过 OpenAPI 发布配置
支持通过调用 Nacos Open API 向 Nacos Server 发布配置。其中 ServiceIP 为 MSE Nacos 的私网或公网访问地址,支持在微服务引擎实例的 基本信息 > 私网地址 或 公网地址 位置查看。
curl -X POST "http://${ServiceIP}:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
说明
mse-demo-config Spring Boot 工程默认端口为 8080
。
说明
POM 文件中 Spring Boot 的版本信息参见 Nacos 接入版本对应关系。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR12</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>2.1.2</version> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
在 src\main\resources
路径下创建文件 bootstrap.properties
。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=example spring.cloud.nacos.config.username=nacos spring.cloud.nacos.config.password=nacos
参数 | 说明 |
---|---|
spring.cloud.nacos.discovery.server-addr | Nacos Server 的地址,即 MSE Nacos 实例私网或公网访问地址,支持在微服务引擎实例的 基本信息 > 私网地址 或 公网地址 位置查看。 |
spring.application.name | 应用的名称。 |
spring.cloud.nacos.config.username | Nacos 账号用户名。 |
spring.cloud.nacos.config.password | Nacos 账号密码。 |
说明
spring.application.name
,以匹配 DataId。详情参见 Nacos Spring Cloud 快速开始。nacos
,与控制台访问用户名相同。后续如需更改,支持通过控制台或 OpenAPI 实现。在 src\main\java
路径下创建名为 com.bytedance.mse
的 Package。
在 com.bytedance.mse
中创建类 ConfigApplication,代码如下。
package com.bytedance.mse; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Document: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html */ @SpringBootApplication public class ConfigApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); } }
在 com.bytedance.mse
中创建 Java 类 ConfigController
,代码如下。ConfigController
通过 Spring Cloud 原生注解 @RefreshScope
实现配置自动更新。
package com.bytedance.mse; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/config") @RefreshScope public class ConfigController { @Value("${useLocalCache:false}") private boolean useLocalCache; /** * http://{{yourAddress}}/config/get */ @RequestMapping("/get") public boolean get() { return useLocalCache; } }
在项目路径添加 Dockerfile。
说明
路径地址示例 /Users/bytedance/IdeaProjects/mse-demo-config
。
FROM openjdk:11-jdk-slim ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]
在 Terminal 执行以下操作。
mvn package && docker build -t mse-demo/mse-demo-config .
推送 Docker 镜像至镜像仓库,操作说明参见 推送和拉取镜像。
在容器服务创建无状态负载。操作说明参见 创建无状态负载。
通过编辑 Nacos 配置文档中的配置内容,动态变更容器服务的配置。
http://{{容器服务外部端点地址}}/config/get
,返回内容是 true
。useLocalCache=false
。操作说明参见 发布配置。http://{{容器服务外部端点地址}}/config/get
,此时返回内容为false
。