网站首页 > 博客文章 正文
Nacos除了作为注册中心外是配置中心,配置中心的功能主要是将一些公共配置项配置与配置中心,这样每个微服务都会从配置中心统一读取,便于后面维护,同时也支持热更新,即某个配置项的值在服务启动后,再在配置中心修改,服务也是可以实时感知更新,不过热更新需要开启,否则不支持。(具体看下面)
使用配置中心的相关环境
Nacos注册中心启动,手动增加需要的配置项
1.点击下图加号
2.点击加号看到下面新建配置
DataId:表示新增配置名称,用来我们微服务读取指定配置文件
Group:表示配置项所属组,微服务读取也会取值这个来确认读取指定配置 文件
描述:给配置文件的备注
归属引用:其实就是标志是哪个服务配置的,这个根据需求,不是必填
标签:同理
配置格式:TEXT,JSON,,XML,YAML,HTML,Properties这几种,我们使用
Properties示例
3.填好相关内容,点击发布,就创建好了配置
到此配置项已经配置好了,可以点击详情查看,也可以继续编辑添加。
Nacos准备工作做好,接下来就是微服务的创建加读取了。
建一个服务config-xg: 配置实例服务
pom的jar包引用配置:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud-alibaba.version>2.2.8.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<!-- springboot 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 把服务注册到注册中心的依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!-- 配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
</dependencies>
bootstrap.properties:nacos配置中心相关配置需要放在bootstrap.properties中,否则会报无法解析相关配置字符错误,因为在线参数实时配置需要更高的初始化优先级,而bootstrap.properties高于application.properties被优先解析加载。
#开关控制默认加载哪个配置文件 区分开发与测试环境配置
spring.profile.active=dev
#nacos注册中心ip+端口号,此配置就是把我们的服务注册到指定的nacos注册中心
spring.cloud.nacos.discovery.server-addr=10.45.12.63:8848
#命名空间,读取的配置管理所属,对应nacos的命名空间,绑定了配置项
spring.cloud.nacos.discovery.namespace=public
#读取配置中心配置文件类型有xml,yml,json,properties等
spring.cloud.nacos.config.file-extension=properties
#配置中心Data Id的开始关键字
spring.cloud.nacos.config.prefix=dev-common
#配置文件组
spring.cloud.nacos.config.group=DEFAULT_GROUP
# nacos配置中心是否生效
spring.cloud.nacos.config.enabled=true
application-dev.properties:
#端口号
server.port=8082
#服务名称
spring.application.name=config-xg
#读取配置中心的配置项, $加大括号,中间匹配配置项名称就可以读取到了
redis.host=${redis.host}
读取配置项具体代码使用 ConfigController:
使用@Value的配置需要在当前的类上面加上@RefreshScope注解,就可以支持热更新了,只需要在nacos配置中心修改了值,服务那边也会跟着进行刷新。
package com.config.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author xg
*/
@RestController
@RequestMapping("/config")
// 该注解配合@value支持配置项热更新加载
@RefreshScope
public class ConfigController {
// 改注解可以读取配置项的值
@Value("${redis.host}")
String redisHost;
@GetMapping(value= "/get")
public String get(){
return "redisHost is " + redisHost;
}
}
ConfigApplication启动类:
package com.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @author xg
* @ClassName: ConfigApplication
* @Description: 启动入口
*/
// @EnableDiscoveryClient:服务发现的注解
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
启动服务注册到nacos:
现在的redis.host值是127.0.9.8,我们请求接口看看返回一不一致:
我们看到是一致的,我们再修改nacos注册中心配置的配置项的值,再请求是否动态刷新。
先修改ncaos配置中心:
1.先点击编辑
2.修改
3.发布,在查看详情
4.再次访问接口
与修改后的值一致,动态刷新成功。
读取配置还有其他注解和上下文获取方式,比如@ConfigurationProperties,
@NacosConfigurationProperties注解实现,有兴趣可以继续研究看看,这里就不一一详述了。
接下来讲讲这些配置项在nacos保存在哪里了。
看过我之前nacos启动文章的应该知道nacos启动时相关数据存储有两种方式,默认依赖内置数据库或者改配置mysql数据库。虽然分为两种数据库,但是都是存在相同名称的表中的。
其中默认数据库是derby-data:当你启动nacos后,就可以在nacos\data\derby-data目录下看到对应文件了
至于连接数据库可以直接用idea链接:
需要注意的是derby连接数据库时需要停掉nacos数据中心,不然会报错,这个可能是naocs被占用了,我们一遍使用mysql来当数据源存储。
连接上后发现有这么多表:
接下说几个具体用到的表:
config_info
nacos将配置的基本信息存放在config_info表中,如:dataId、分组、配置描述、配置格式内容等。
config_tags_relation
这张表用来存放一些高级配置参数,如;标签和归属应用等信息,可在nacos控制台UI中,通过他们来过滤查询配置。
his_config_info
这张表nacos用来存放记录相关配置的日志记录,主要用来查询配置的历史信息,当然,nacos的配置历史数据是有时效的,如:只保留30天的历史数据。
config_info_tag
该表用来维护某配置的若干标签基本信息,主要对配置基本信息config_info打了个标签。
config_info_beta
这张表是当我们勾选Beta发布选项后,输入对应下发IP地址(多个用,号分割)时,点击“发布Beta”发布后,对应的beta版配置信息存储在该表中,其是测试版本,与正式版本同时只能存在一个,一般使用较少,停止Beta发布后,实时配置参数即切换为正式版本。
users和roles表:
接下来贴下mysql数据源结构:与上述表结构一致
有些朋友走着走着就丢了,希望我们走路的时候记得回头看看,别搞丢了自己。
猜你喜欢
- 2024-10-01 微服务学习笔记(微服务怎么学)
- 2024-10-01 干货:SpringBoot集成Nacos,填坑篇
- 2024-10-01 记一次把Nacos做成服务并开机启动
- 2024-10-01 Nacos 配置中心与注册中心(nacos配置中心连接超时)
- 2024-10-01 小白入门必知必会-Nacos单机安装(nacos入门教程)
- 2024-10-01 windows系统 安装nacos服务注册与发现中心
- 2024-10-01 网络环境问题导致的nacos集群故障
- 2024-10-01 分布式服务限流降级熔断解决方案Nacos之Dashboard界面配置含义
- 2024-10-01 Nacos你真的理解了吗(nacos百科)
- 2024-10-01 java微服务环境配置——注册中心 配置中心Nacos
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)