Java essay Java essay
首页
  • Java基础
  • Java进阶
  • 设计模式
  • Java你不知道的小事
  • Spring初识
  • Spring进阶
  • SpringBoot基础
  • SpringBoot进阶
  • 什么是微服务
  • SpringCloud全家桶
  • Dubbo
  • SpringCloud Alibaba
  • Zookeeper
  • Nginx
  • RabbitMQ
  • RocketMQ
  • Docker入门到精通
  • 性能分析工具
  • 数据库性能优化
  • 性能优化
  • Java基础面试必问
  • JavaWeb面试必问
  • Java框架面试必问
  • 数据库面试必问
  • 中间件面试必问
  • 分布式微服务面试必问
  • Linux面试必问
  • 计算机网络面试必问
  • 开放性问题面试问必问
  • 简介
  • 联系我

Mr.Fire

后端程序员一枚
首页
  • Java基础
  • Java进阶
  • 设计模式
  • Java你不知道的小事
  • Spring初识
  • Spring进阶
  • SpringBoot基础
  • SpringBoot进阶
  • 什么是微服务
  • SpringCloud全家桶
  • Dubbo
  • SpringCloud Alibaba
  • Zookeeper
  • Nginx
  • RabbitMQ
  • RocketMQ
  • Docker入门到精通
  • 性能分析工具
  • 数据库性能优化
  • 性能优化
  • Java基础面试必问
  • JavaWeb面试必问
  • Java框架面试必问
  • 数据库面试必问
  • 中间件面试必问
  • 分布式微服务面试必问
  • Linux面试必问
  • 计算机网络面试必问
  • 开放性问题面试问必问
  • 简介
  • 联系我
  • 微服务概述

  • SpringCloud全家桶

  • SpringCloudAlibaba

    • Alibaba Nacos快速入门(一)
    • Alibaba Nacos快速入门(二)
    • Alibaba Nacos快速入门(三)
    • Alibaba Nacos快速入门(四)
      • 前言
      • 1、启动Nacos Server
      • 2、创建项目nacos-config
      • 3、Nacos配置管理相关参数
      • 4、配置获取类
      • 5、测试效果
      • 6、创建命名空间
      • 7、环境切换
      • 8、克隆
      • 9、灰度发布
      • 10、版本问题
      • 总结
    • Alibaba Nacos配置中心动态感知原理
  • 分布式锁

  • 分布式微服务
  • SpringCloudAlibaba
Mr.Fire
2023-02-12
目录

Alibaba Nacos快速入门(四)

# 前言

回顾一下之前所讲Nacos概述,其中一个功能就是动态配置服务,本节主要就介绍Nacos配置中心,实现配置的动态变更,以及Nacos管理界面基本操作。

# 1、启动Nacos Server

startup.cmd -m standalone
1

# 2、创建项目nacos-config

依赖:

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
    <spring-alibaba.version>2.2.6.RELEASE</spring-alibaba.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 3、Nacos配置管理相关参数

在bootstrap.properties中添加如下配置

#spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.file-extension=yml
spring.cloud.nacos.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP
#不配置默认取的是spring.application.name
#spring.cloud.nacos.config.prefix=nacos-config
1
2
3
4
5
6
  • file-extension :文件后缀

  • server-addr:nacos服务地址

  • group: 分组,默认分组可不配置

  • prefix:文件名前缀,默认为spring.application.name

dataId格式:

${prefix}-${spring.profiles.active}.${file-extension}
1

# 4、配置获取类

通过 Spring Cloud 原生注解 @RefreshScope实现配置自动更新


@RestController
@RefreshScope
public class ConigTestController {

    @Value("${custom.name:fire}")
    private String name;

    @Value("${custom.pwd:fire123}")
    private String pwd;

    @GetMapping("/test-config")
    public String testConfig(){
        return String.format("自定义属性:name=%s,pwd=%s",name,pwd);
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 5、测试效果

访问http://localhost:8083/test-config

nacos后台添加配置

再次调用测试接口

扩展:通过调用 API 向 Nacos Server 发布配置:dataId 为nacos-config.yml


curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=custom.name=lisi"

1
2
3

# 6、创建命名空间

主要用来区分不同环境配置,服务管理,ID不填写则默认生成

# 7、环境切换

通过后缀的方式切换环境,动态修改配置,bootstrap中添加配置

#激活test环境配置
spring.profiles.active=test
#对应Nacos命名空间ID
spring.cloud.nacos.config.namespace=fd70562a-dd6e-4498-883a-657eab78d50c
1
2
3
4

# 8、克隆

克隆一份配置,dataId按照规则添加后缀test,命名空间勾选创建好的test,修改内容,发布

测试效果

# 9、灰度发布

灰度配置指的是指定部分客户端IP进行新配置的下发,其余客户端配置保持不变,用以验证新配置对客户端的影响,保证配置的平稳发布。灰度配置是生产环境中一个比较重要的功能,对于保证生产环境的稳定性非常重要。Nacos 支持了以IP为粒度的灰度配置,具体使用步骤如下:

编辑配置->勾选Beta版本发布,选择发布的客户端IP,发布Beta即可,想取消则停止Beta

# 10、版本问题

最初使用版本为:

SpringBoot:2.6.1+SpringCloud:2021.0.0+Cloud Alibaba:2021.1

测试配置刷新无效果,检查配置没有问题

解决方案:降低版本

最终使用版本:

SpringBoot:2.3.2.RELEASE+SpringCloud:Spring Cloud Hoxton.SR9+Cloud Alibaba:2.2.6.RELEASE

# 总结

Nacos支持与Spring,SpringBoot等整合实现服务配置动态变更,本文主要讲Nacos与Spring Cloud的集成,如何实现配置中心,统一管理服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

源码:https://gitee.com/firegitspace/springcloud_demo (opens new window)

版本:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 (opens new window)

Nacos:https://nacos.io/zh-cn/docs/what-is-nacos.html (opens new window)

#Nacos#SpringCloudAlibaba
最后更新时间: 2023/02/25, 22:23:14
Alibaba Nacos快速入门(三)
Alibaba Nacos配置中心动态感知原理

← Alibaba Nacos快速入门(三) Alibaba Nacos配置中心动态感知原理→

最近更新
01
分布式系统核心理论CAP和BASE理论
03-05
02
分布式锁的几种实现方式
03-05
03
一文详解ThreadLocal是什么
03-01
更多文章>
Theme by Vdoing | Copyright © 2021-2023 Mr.Fire | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式