Nacos安装
官网:https://nacos.io/zh-cn/docs/quick-start.html
下载压缩包,解压nacos压缩包,并进入到bin目录下启动
sh startup.sh -m standalone
tail -f /root/nacos/nacos/logs/start.out
需要JDK1.8的环境
浏览器访问,默认用户名和密码为nacos
http://192.168.229.129:8848/nacos/
Java使用
1、创建一个父工程,导入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、创建子工程Provider
添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
启动类添加注解@EnableDiscoveryClient
编写配置文件
spring:
application:
name: provider
cloud:
nacos:
discovery:
server-addr: 192.168.229.129:8848
3、创建子工程consumer
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
编写配置文件
spring:
application:
name: Consumer
cloud:
nacos:
discovery:
server-addr: 192.168.229.129
server:
port: 8081
启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
在Provider中创建一个Controller,返回一个字符串
使用openfeign调用Provider项目中的Controller接口,输出Provider接口中输出的内容
启动Consumer项目,可以看到此服务注册到了nacos中,再调用Consumer服务中的接口,进而调用Provider中的接口吗,如果输出成功,则表示使用nacos注册两个服务成功,两个服务之间可以进行通信了
Nacos配置中心
快速入门
导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
创建配置文件
修改配置文件
spring:
application:
name: consumer
cloud:
nacos:
discovery:
server-addr: 192.168.229.129:8848
config:
server-addr: 192.168.229.129:8848
file-extension: yml
server:
port: 8081
修改接口,为了看到加载了在nacos中的配置,输出配置中的version
@RestController
public class TestController {
@Resource
private ProviderClient providerClient;
@Value("${version}")
private String version;
@RequestMapping("/consumer/test")
public String test() {
return providerClient.test() + " " + version;
}
}
启动服务,访问接口http://localhost:8081/consumer/test,结果如下
Hello SpringCloud Alibaba v1.0.0
动态刷新
实现修改nacos中的配置文件,发布后就能使其生效
在Controller类上添加一个注解即可@RefreshScope
此后,每次修改nacos中的配置文件,都可即使生效
例如:修改version为v2.0.0,然后发布,再访问接口,可以看到,内容的确变为v2.0.0了
Hello SpringCloud Alibaba v2.0.0
指定配置文件
指定命名空间namespace
和分组信息group
spring:
application:
name: consumer
cloud:
nacos:
discovery:
server-addr: 192.168.229.129:8848
config:
server-addr: 192.168.229.129:8848
file-extension: yml
namespace: local # 默认为public
group: ROBOt_GROUP # 默认为DEFAULT_GROUP
server:
port: 8081
然后在图形界面创建一个命名空间namespace,在服务列表中切换为此命名空间,再在此namespace下创建配置文件:consumer-local.yml
持久化机制
先关闭nacos服务:sh shutdown.sh
进入到nacos中的conf目录下,修改application.properties
文件
- 将这几个注释打开,配置好自己的数据信息
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.229.129:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
在config目录下还可以看到sql文件:nacos-mysql.sql
,将这个sql中的表数据,导入到上面指定的数据库中(需要创建这个数据库)
配置好后再打开nacos服务:sh startup.sh -m standalone
此时再次创建配置文件后,文件信息都将被保存到数据库中,下次重启服务后,可以直接从数据库中加载,所以持久化了配置文件