微服务实践(二)Nacos
Nacos下载
官网下载地址:https://github.com/alibaba/nacos/releases
选择一个最新的稳定版本。zip是Windows版本,tar.gz是Linux版本

Nacos安装
下载完成之后,解压,进入目录,如下

bin:可执行命令;conf:配置文件;target:nacos应用jar包。
当nacos运行起来之后,还会有data、logs。data:数据;logs:运行日志
进入到conf文件夹

- application.properties是nacos单机启动配置文件。
- application.properties.example单机默认配置文件。
- cluster.conf.example是nacos集群默认配置文件。
- nacos-logback.xml是日志配置文件。
- nacos-mysql.sql是mysql数据库初始化脚本。
- schema.sql是Derby 数据库初始化脚本。
接下来导入数据库初始化脚本,在本地mysql新建nacos数据库并执行nacos-mysql.sql脚本

然后编辑application.properties文件修改数据连接信息。

然后切到bin目录下,修改启动脚本startup.cmd,nacos默认使用的集群模式cluster,需要修改为单机模式standalone。

然后使用startup.cmd来启动nacos。
访问 http://localhost:8848/nacos/index.htm登录nacos管理后台,账号密码默认 nacos/nacos。
进入到命名空间页面,命名空间一般用于不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。这里我们创建两个环境 :local,dev用于区分本地和开发环境。

接下来进入到配置列表进行添加配置。

在 Nacos Spring Cloud 中,Data ID
的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
注意:当 spring.profiles.active
为空时,对应的连接符 -
也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
整合SpringBoot
这里以创建好的订单服务为例
- 添加配置中心依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
2.添加注册中心依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
更多版本对应关系参考:版本说明 Wiki
3.在 bootstrap.yml
中配置 Nacos server 的地址和应用名
spring:
application:
name: order-center-server
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: a506f87b-88c7-4fb9-bea4-c59881e140e8
discovery:
server-addr: 127.0.0.1:8848
namespace: a506f87b-88c7-4fb9-bea4-c59881e140e8
server:
port: 8092
namespace、group不填默认为 public和DEFAULT_GROUP,这里namespace填上 local对应的namespace ID。 添加好依赖和配置后在应用上添加注解@EnableDiscoveryClient开启服务注册发现功能:
@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderCenterServiceApplication.class, args);
}
}
启动应用,可以看到打印的注册信息。


可以看到注册成功,接下来为订单服务新建一条配置信息内容如下:
配置内容目前只添加了数据库信息,可根据自己业务需求添加对应的配置

通过 Spring Cloud 原生注解 @RefreshScope
实现配置自动更新:
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${testConfig}")
private String useLocalCache;
@RequestMapping("/get")
public String get() {
return useLocalCache;
}
}
访问http://localhost:8091/config/get 可以看到配置进行了刷新。
参阅资料
https://nacos.io/zh-cn/docs/v2/concepts.html
https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html
Leave a Reply