一、Nacos安装部署
下载Nacos安装包:https://github.com/alibaba/nacos/releases。
解压后目录结构如下:
启动脚本在bin目录下:
1、单机安装
windows下:
1
| startup.cmd -m standalone
|
Linux下:
1
| startup.sh -m standalone
|
下面以windows安装为例演示:
启动成功后,访问:http://127.0.0.1:8848/nacos/, 用户名/密码 默认:nacos/nacos
2、集群安装
以windows安装为例
将解压后的文件夹再复制2份,共3份,使用本地测试,本地IP为192.168.0.105,使用不同端口来区分
nacos-1: 192.168.0.105:8848
nacos-2: 192.168.0.105:8849
nacos-3: 192.168.0.105:8850
修改conf/cluster.conf(没有的话,新增一个)内容如下:
1
| 192.168.0.105:8848 192.168.0.105:8849 192.168.0.105:8850
|
nacos-1、nacos-2、nacos-3 都修改为以上内容;
新增mysql数据库:nacos,将conf/nacos-mysql.sql 脚本导入到nacos数据库中;
修改conf/application.properties配置文件(3个文件夹下server.port都相应调整下):
1 2 3 4 5 6 7
| server.port=8848 spring.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&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=nacos db.password=nacos
|
配置修改完成后,分别到nacos-1/bin, nacos-2/bin, nacos-3/bin 文件夹下,使用命令启动
集群启动成功后,可以在nacos后台查看:
二、与SpringCloud整合
新建maven项目:springcloud-nacos
添加依赖:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent>
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.9.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>0.9.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
|
在bootstrap.yml(一定是bootstrap.yml文件,不是application.yml文件)文件配置以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13
| spring: application: name: nacos cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml prefix: nacos profiles: active: dev
|
在上面的配置中,配置了nacos config server的地址,配置的扩展名是ymal(目前仅支持ymal和properties)。注意是没有配置server.port的,sever.port的属性在nacos中配置。上面的配置是和Nacos中的dataId 的格式是对应的,nacos的完整格式如下:
1
| ${prefix}-${spring.profile.active}.${file-extension}
|
prefix 默认为 spring.application.name 的值,也可以通过配置项 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 类型。
进入Nacos Console,新建一个Data ID。
新建启动类如下:
1 2 3 4 5 6 7 8 9 10 11
| import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class NacosApplication { public static void main(String[] args) { SpringApplication.run(NacosApplication.class, args); } }
|
新建Controller,加上@RefreshScope注解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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 ConfigController { @Value("${username}") private String username; @RequestMapping("username") public String getConfig() { return username; } }
|
启动NacosApplication ,从控制台可以看出,tomcat端口号从nacos中读取8081。
此时访问:http://127.0.0.1:8081/username,可以看到返回配置的内容:Jason,此时修改nacos中 username的值,会立即同步到应用中。