You need to enable JavaScript to run this app.
微服务引擎

微服务引擎

复制全文
微服务应用开发
基于 Spring Cloud 使用 Nacos 配置中心
复制全文
基于 Spring Cloud 使用 Nacos 配置中心

本文主要面向 Spring Cloud 的使用者,通过示例介绍如何使用 MSE Nacos 来实现配置管理。

说明

  • 本文介绍如何使用配置中心,如果需要支持服务发现功能,需要配置注册中心,详细说明参见 基于 Spring Cloud 使用 Nacos 服务注册中心
  • 通过私网连通时,集群和微服务引擎实例需要部署在相同 VPC中。关于 Nacos Spring Cloud 的详细说明参见 Nacos Config

背景信息

  • Spring Cloud 是一系列微服务场景解决方案的集合。Spring Cloud 基于 Spring Boot 的开发便利性,实现了分布式系统基础设施的一键启动和部署。例如发现注册、配置中心、负载均衡等产品的一键启动和部署。
  • Spring Boot 是由 Pivotal 团队提供的开发框架,用于简化新 Spring 应用的初始搭建以及开发过程。

前提条件

  • 已创建微服务引擎实例,操作说明参见 创建实例
  • 已创建容器服务集群,并开启 公网访问,操作说明参见 创建集群

    注意

    通过私网连通时,容器服务集群需要和微服务引擎实例处于同一个 VPC。

  • 已安装 Maven,操作说明参见 Downloading Apache Maven
  • 已安装 Docker,操作说明参见 Get Docker

操作步骤

步骤一:发布配置

通过控制台发布配置

  1. 登录 Nacos 控制台,操作说明参见 登录 Nacos 控制台

  2. 在左侧菜单栏,单击 配置管理 > 配置列表

  3. 单击添加图标。

  4. 新建配置 页面添加配置参数。

    • Data ID:example.properties
    • 配置格式:TEXT
    • 配置内容:useLocalCache=true

    alt

通过 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

  1. 创建名称为 mse-demo-config 的 Maven 工程。
  2. pom.xml 文件中添加依赖:

    说明

    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>
  1. 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-addrNacos Server 的地址,即 MSE Nacos 实例私网或公网访问地址,支持在微服务引擎实例的 基本信息 > 私网地址公网地址 位置查看。
    spring.application.name应用的名称。
    spring.cloud.nacos.config.usernameNacos 账号用户名。
    spring.cloud.nacos.config.passwordNacos 账号密码。

    说明

    • 需要配置 spring.application.name,以匹配 DataId。详情参见 Nacos Spring Cloud 快速开始
    • MSE Nacos 默认开启鉴权,用户必须配置鉴权后才能使用。初始用户名和密码为都为 nacos,与控制台访问用户名相同。后续如需更改,支持通过控制台或 OpenAPI 实现。
  2. src\main\java 路径下创建名为 com.bytedance.msePackage

  3. 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);
        }
    }
    
  4. 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;
        }
    }
    
  5. 在项目路径添加 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"]
    
  6. 在 Terminal 执行以下操作。

    mvn package && docker build -t mse-demo/mse-demo-config .
    
  7. 推送 Docker 镜像至镜像仓库,操作说明参见 推送和拉取镜像

  8. 在容器服务创建无状态负载。操作说明参见 创建无状态负载

结果验证

通过编辑 Nacos 配置文档中的配置内容,动态变更容器服务的配置。

  1. 访问 http://{{容器服务外部端点地址}}/config/get,返回内容是 true
  2. 重复发布配置,将配置内容改为 useLocalCache=false。操作说明参见 发布配置
    alt
  3. 再次访问 http://{{容器服务外部端点地址}}/config/get,此时返回内容为false
最近更新时间:2024.01.02 16:40:45
这个页面对您有帮助吗?
有用
有用
无用
无用