Nacos是综合型解决方案
服务治理
服务的发现
配置管理
nacos:注册中心
解压到,非中文名的文件夹下,进入bin目录中,在路径处,输入cmd打开密令窗口
正常启动命令:startup.cmd -m standalone
集群启动命令:startup.cmd -m cluster
验证是否成功启用: http://localhost:8848/nacos
提交配置信息:post请求http://localhost:8848/nacos/v1/cs/configs地址发送请求提交配置信息dataId、group、content三个参数,content为配置内容
获取配置信息:get请求http://localhost:8848/nacos/v1/cs/configs地址发送请求获取配置信息dataId、group两个参数
默认使用的嵌入式数据库,增删改查不方便
可以使用mysql数据库进行存储nacos数据,在数据库中创建nacos_config库,执行nacos/conf/nacos-mysql.sql文件,创建表结构和数据
修改nacos1.4.2\conf\application.properties文件,将数据库信息修改完整
IP地址、库名、账号、密码等,配置信息如下: spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=root
修改完成后,运行nacos
点击+按钮
添加配置信息,配置格式固定,并点击提交按钮
com.alibaba.nacos nacos-client1.3.2
public class SimpleDemoMain { public static void main(String[] args) throws NacosException { // nacos的访问地址 String serverAddr = "192.168.16.125:8848"; // data id String dataId = "nacos-simple-demo.yaml"; // group String group = "DEFAULT_GROUP"; // 创建properties属性,作用是将dataId和group两个属性放进去,先创建出来 Properties properties = new Properties(); // 指定nacos地址添加到properties属性中 properties.put("serverAddr", serverAddr); // 获取配置 ConfigService configService = NacosFactory.createConfigService(properties); // 传递的三个属性:dataId、group、超时时间 String config = configService.getConfig(dataId, group, 5000); System.out.println("配置信息:" + config); } }
对于nacos的配置管理,通过Namespace命名空间、group分组、Data ID文件名称,能够定位到一个配置集
一个配置文件就是一个配置集,一个配置集可以包含系统的各种配置信息,例如:一个配置集可以包含了数据源、线程池、日志级别等配置项,每个配置集可以定义一个有意义的名称,就是配置集的ID即Data ID
配置集中包含的一个个的配置内容就是配置项,它代表一个具体的可配置的参数与其值域,通常以key=value的形式存在,例如:配置系统的日志输出级别 logLevel=INFO|WARN|EROR 就是一个配置项
配置分组是对配置集进行分组,通过一个有意义的字符串来表示,不同的配置分组下可以有相同的配置集(Data ID),当在Nacos上创建一个配置时,如果未填写配置分组名称,则配置分组的名称默认采用DEFAULT_GROUP,配置分组的常用场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义group为:STUDENT_GROUP
命名空间可用于进行不同环境的配置隔离,例如可以隔离开发环境、测试环境和生产环境,因为他们的配置各不相同,或者时隔离不同的用户,不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离,不同的命名空间下,可以存在相同名称的配置分组(Group)或配置集
Namespace:代表不同环境,如:开发、测试、生产环境;
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件
作用:将配置信息进行隔离
Nacos中的数据
向properties属性中添加命名空间ID,就会从指定的命名空间中读取配置信息,
properties属性中不添加命名空间ID,默认会读取保留空间(public)的配置信息
命名空间的切换
增、删、批量删、遍历、详情、查询等
导出、导入:可以将配置文件导出到本地,可以将配置文件从本地导入到nacos页面
克隆:可以将一个命名空间的配置文件克隆到另一个命名空间
命名空间的切换
通过Data ID和Group查询历史修改记录
查看历史修改记录的详情
可以通过历史记录进行回滚
当后台有程序进行监听nacos配置修改情况时,可以查询到监听的地址
也可以通过服务器IP地址查询监控的配置Data ID和Group
后端监听代码
运行结果
org.springframework.security spring-security-core5.5.4
代码如下:
public static void main(String[] args) { // 获取加密密码 String encode = new BCryptPasswordEncoder().encode("123"); System.out.println("加密后的密码:"+encode); }
运行结果:123:$2a$10$k91omOHSw36IqsjxpiTlw.M93m.ZZWXlZCnppfS52c2sZmYAJRmQy
Sql:向用户表和角色表添加信息,将生成的密码添加进去
INSERT INTO USERS(username,PASSWORD,enabled) VALUES('小马','a$o/OZjz/JOO/Vi0H4iu9LeeOdtunj4ru35IJQrxAUdbrQCbA9gUCWW',true);
INSERT INTO roles (username,role) VALUES('小马','ROLE_ADMIN');
测试登录
修改nacos1.4.2\conf\application.properties配置文件,配置信息如下
spring.security.enabled=false management.security=false security.besic.enabled=false nacos.securtiy.ignore.urls=/**
修改后重新启动nacos,关闭浏览器重新访问:localhost:8848/nacos
子项目继承父项目
pom UTF_8 UTF_8 1.8 com.alibaba.cloud spring-cloud-alibaba-dependencies2.1.0.RELEASE pom import org.springframework.cloud spring-cloud-dependenciesGreenwich.RELEASE pom import org.springframework.boot spring-boot-dependencies2.1.3.RELEASE pom import org.springframework.boot spring-boot-maven-plugin
service1com.alibaba.cloud spring-cloud-starter-alibaba-nacos-configorg.springframework.boot spring-boot-starter-web
注意:该配置要放在bootstrap.xml配置文件中,千万不要放在application.xml配置文件中,bootstrap.xml优先级大于application.xml的优先级,文件拓展名dataId和测试组名称要与nacos中对应,namespace是nacos中的命名空间id,一定要与nacos的各属性名称一致
spring: application: name: service1 cloud: nacos: config: # 配置中心地址 server-addr: 192.168.16.125:8848 # 配置文件扩展名 data ID的名称就是application的name加file-extension service1.yaml # 如果这里是properties文件,就设置为:properties,相对应配置文件扩展名 data ID就为service1.properties file-extension: yaml # 开发环境,这里的值是nacos中的命名空间id,从nacos中获取 namespace: 5149b373-af61-4bdd-a19c-589d2c71179e # 测试组,从nacos中获取 group: TEST_GROUP
这里直接在启动类进行的测试,可以自定义controller类进行测试
在bootstrap.xml配置文件中添加配置
# 读取多个配置文件,下标从0开始 ext-config[0]: # 设置dataId 如果不设置group默认为DEFAULT_GROUP data-id: ext-config-common01.properties # 未设置动态刷新配置,所以在nacos中修改会不会刷新 ext-config[1]: data-id: ext-config-common02.properties group: GLOBALE_GROUP # 设置了动态配置所以可以动态刷新 ext-config[2]: data-id: ext-config-common03.properties group: REFRESH_GROUP # 动态刷熊 refresh: true
进行测试:
测试结果:
Nacos中的配置:
注意:这个配置方式只能识别分组名称为DEFAULT_GROUP(默认)的文件,在bootstrap.xml配置文件中添加配置
# 读取多个nacos配置文件,只识别组名为DEFAULT_GROUP(默认)的文件 shared-dataids: ext-config-common01.properties,ext-config-common02.properties,ext-config-common03.properties # 设置文件可以动态刷新配置文件 refreshable-dataids: ext-config-common01.properties
进行测试:
测试结果:
Nacos中的配置:
至少三个nacos
将每个nacos文件的端口号设置成不同的例如:8848、8849、8850
设置ip地址:127.0.0.1
修改完成后,项目的配置文件也要修改ip地址和端口号,多个用逗号分割
文件名修改为cluster.conf
修改里面内容,格式为:ip地址:端口号,分别指定所有nacos,例如:
192.168.16.101:8847
192.168.16.102:8848
192.168.16.103:8849
集群启动命令:startup.cmd -m cluster
当nacos启动后,有一个nacos宕机后,nacos还可以正常使用
上一篇:SQL 面试总结