Nacos实现配置中心
创始人
2024-05-30 02:14:07
0

文章目录

    • 配置中心提供的基础功能
    • Nacos实现配置中心
      • 1、在配置文件增加配置(application.yml)
      • 2、使用@Value来引用配置
    • 使用配置中心,怎样的配置方式呢
      • 一、安装nacos
      • 二、启动服务发现
        • 1、引入依赖
        • 2、配置文件
        • 3、开启服务注册发现功能
        • 4、启动服务
      • 三、启动配置管理
        • 1、引入依赖
        • 2、获取Nacos server的配置信息
        • 3、新建配置bootstrap.yml文件
      • 四、配置自动刷新
        • 1:引入依赖
        • 2:配置类加入@RefreshScope注解


配置中心提供的基础功能

  • 统一管理不同环境、不同集群的配置
  • 配置修改实时生效(热发布)
  • 版本管理,每次配置的修改都会有版本记录,可随时回滚
  • 权限管理。配置中心可交给专人来管理,做到配置的权限管理

Nacos实现配置中心

使用配置中心之前,一般这样实现配置,把配置都放到配置文件中,Java代码通过@Value去拿配置或者通过@PropertySource来进行配置:

1、在配置文件增加配置(application.yml)

shortLink:url: https://openapidev.xinchengyue.comappId: 2020092275789623479853728privateKeyIsv: MIIEvgIBADANBgqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCe7DUtSpPMpejhC6vg5HR6Xl15A3QwOueu

2、使用@Value来引用配置

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class Test {@Value("${shortLink.url}")private String url;@Value("${shortLink.appId}")private String appId;@Value("${shortLink.privateKeyIsv}")private String privateKeyIsv;@RequestMapping("/test")public String test(){return "url:" + url + "
appId:" + appId + "
privateKeyIsv:" + privateKeyIsv;} }

启动服务,访问 http://localhost:8080/test 返回信息

url:https://openapidev.xinchengyue.com
appId:2020092275789623479853728
privateKeyIsv:MIIEvgIBADANBgqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCe7DUtSpPMpejhC6vg5HR6Xl15A3QwOueu

使用配置中心,怎样的配置方式呢

一、安装nacos

参考:安装步骤
启动后如图所示:
在这里插入图片描述
访问:http://localhost:8848/nacos/index.html

用户名: nacos 密码:nacos
在这里插入图片描述

二、启动服务发现

接下来,讲一下如何在您的 Spring Cloud 项目中启用 Nacos 的服务发现功能。配置服务,从而服务可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上。

1、引入依赖

		com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery2.1.1.RELEASE

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

2、配置文件

application.yml中配置 Nacos server 的地址和应用名。

spring:application:name: nacos-testcloud:nacos:discovery:server-addr: localhost:8848

3、开启服务注册发现功能

通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能。

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient
public class XlfTestApplication {public static void main(String[] args) {SpringApplication.run(XlfTestApplication.class, args);}
}

4、启动服务

启动服务,然后到Nacos server查看是否注册成功。
在这里插入图片描述

三、启动配置管理

1、引入依赖

		com.alibaba.cloudspring-cloud-starter-alibaba-nacos-config2.1.1.RELEASE

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

2、获取Nacos server的配置信息

在Nacos server上增加配置信息(配置管理->配置列表->新增配置)
  在这里插入图片描述
在这里插入图片描述

3、新建配置bootstrap.yml文件

spring:application:name: nacos-testcloud:nacos:config:server-addr: localhost:8848group: DEFAULT_GROUPfile-extension: ymlrefresh-enabled: trueprefix: nacos-test

为什么要新建bootstrap.yml配置文件,而不是直接在原来的application.yml中新增配置呢?是因为要实现nacos配置中心里面的配置要优先于系统配置文件中的配置,假如两个地方同时配置了,会优先取nacos的配置

配置说明:

  • spring.application.name 配置应用的名称,用于获取配置
  • spring.cloud.nacos.config.server-addr 配置nacos服务的地址
  • spring.cloud.nacos.config.group 配置分组
  • spring.cloud.nacos.config.file-extension 配置文件后缀,用于拼接配置配置文件名称
  • spring.cloud.nacos.config.refresh-enabled 配置自动刷新
  • spring.cloud.nacos.config.prefix 配置文件的前缀

启动项目,访问 http://localhost:8080/test

返回信息

url:nacos------https://openapidev.xinchengyue.com
appId:nacos------2020092275789623479853728
privateKeyIsv:nacos------MIIEvgIBADANBgqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCe7DUtSpPMpejhC6vg5HR6Xl15A3QwOueu

说明已经读到nacos中的配置了,而且本地配置文件和nacos中同时配置的,取的是nacos中的配置

四、配置自动刷新

在配置的类增加@RefreshScope就可以实现自动刷新配置,当nacos中的配置修改后,项目无需重启就可以自动生效,这个在实际生产环境中是很有用的,有时候你需要修改线上的配置,如果没有配置中心,你需要重启服务

1:引入依赖

		org.springframework.bootspring-boot-starter-actuator

2:配置类加入@RefreshScope注解

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
@RefreshScope//自动刷新配置
public class Test {@Value("${shortLink.url}")private String url;@Value("${shortLink.appId}")private String appId;@Value("${shortLink.privateKeyIsv}")private String privateKeyIsv;@RequestMapping("/test")public String test(){return "url:" + url + "
appId:" + appId + "
privateKeyIsv:" + privateKeyIsv;} }

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
AWSECS:哪种网络模式具有... 使用AWS ECS中的awsvpc网络模式来获得最佳性能。awsvpc网络模式允许ECS任务直接在V...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...