nacos的配置功能比springcloud原生的要强大,更简洁。
配置nacos
使用mysql持久化
- 创建一个mysql数据库,例如
create database nacos
- 将
nacos/cofn/nacos-mysql.sql
中的sql语句在该数据库中执行。 修改
nacos/conf/application.properties
,在文件之后追加1
2
3
4
5spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=GMT
db.user=root
db.password=xxxx启动nacos
startup.cmd
解决不支持mysql8.x的问题
- clone 源码
git clone https://github.com/alibaba/nacos.git
- 修改nacos-all的pom文件中的依赖,将mysq-conncetor-java和cglib的版本升级
1
2
3
4
5
6
7
8
9
10
11<!-- JDBC libs -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2</version>
</dependency>
-在nacos-naming 项目下找到com.alibaba.nacos.naming.healthcheck.MysqlHealthCheckProcessor
修改 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource
为 import com.mysql.cj.jdbc.MysqlDataSource;
- 打包
mvn -Prelease-nacos clean install -U
,输出的项目根目录\distribution\targe下的nacos即可使用
登录问题
生成加密密码BCryptPasswordEncoder().encode("密码")
,注意盐值是随机的,所以生成密码每次可能不一样。1
2
3
4
5public class PasswordEncoderUtil {
public static void main(String[] args) {
System.out.println(new BCryptPasswordEncoder().encode("yourPawword"));
}
}
插入用户以及对应的密码的散列值1
2INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
依赖
1 | <dependency> |
配置文件
bootstrap.yaml,不能是application.yaml1
2
3
4
5
6
7
8
9spring:
application:
name: service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8844
#配置文件的扩展名,支持yaml和properties
file-extension: yaml
之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。
在 Nacos Spring Cloud 中,dataId
的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix
默认为spring.application.nam
e 的值,也可以通过配置项 spring.cloud.nacos.config.prefix
来配置。
spring.profile.active
即为当前环境对应的 profile
,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension
来配置。目前只支持 properties
和yaml
类型
发布于获取配置
发布
方法一:在web界面中创建dataId后直接编辑
方法二:执行POST请求curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=service&group=DEFAULT_GROUP&content=useLocalCache=true
获取
curl -X GET http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test
启动类
1 |
|
依旧可以使用@RefreshScope
实现自动刷新,比springcloud原生 config简单很多。
集群搭建
与nacos配置中心搭建时类似
nacos配置
修改
nacos/conf/applicaton.properties
,这里使两个数据库作为准备模式1
2
3
4
5
6spring.datasource.platform=mysql
db.num=2
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=GMT
db.url.1=jdbc:mysql://127.0.0.1:3306/nacos2?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=GMT
db.user=root
db.password=root修改
nacos/conf/cluster.conf
,如果使用localhost
或者127.0.0.1
会出错;三台机器的ip:端口
1
2
310.xx.xx.23:8844
10.xx.xx.23:8845
10.xx.xx.23:8846启动每一台机器
startup.cmd -m cluster
,以集群模式启动。
配置文件
1 | spring: |