Microservice - 一文上手Nacos
注意
由于技术日新月异,本文具有时效性,以官方文档 (opens new window)为准。
什么是 Nacos
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
# 应用场景
# 服务配置
可将 application.yml
中的配置写在 nacos 中,可使得在微服务集群中灵活修改配置。
笔记
在启动服务时,添加指定环境参数 spring.profiles.active
,实现灵活切换配置。
# 服务发现
可将微服务注册到 nacos 上,使得网关服务能将请求转发到对应微服务上。
笔记
这就跟 DNS 一样,对于用户来讲,不需要关心某个网站的 ip 地址是多少,只要在浏览器输入指定的域名就可以访问到该网站(如 google.com
),也就不用担心因为网站更换了服务器导致 ip 地址变更导致的访问失败。
# 快速开始
# 下载
# 传统
Releases · alibaba/nacos (opens new window)
# docker
Nacos Docker 快速开始 (opens new window)
# 启动
注:Nacos 的运行需要以至少 2C4g60g*3 的机器配置下运行。
# Linux/Unix/Mac
启动命令 (standalone 代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是 ubuntu 系统,或者运行脚本报错提示 [[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
# Windows
启动命令 (standalone 代表着单机模式运行,非集群模式):
startup.cmd -m standalone
http://127.0.0.1:8848/nacos/index.html
username: nacos
password: nacos
# 示例
# 配置管理
Nacos config · alibaba/spring-cloud-alibaba Wiki (opens new window)
nacos 添加命名空间
添加时需指定 id 与环境变量名称一致,如 dev
,确保切换环境时能正确匹配,如不指定 id,nacos 会自动生成一个随机 id,不便于使用。
nacos 添加配置
- Data Id:相当于配置文件名,需包含后缀,如
hello-service.yml
添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
笔记
版本号与 Spring Boot 版本号一致
在服务中创建 bootstrap.yml
配置文件
spring:
profiles:
#启动环境配置
active: #spring.profiles.active#
application:
name: 应用名称("my-application")
cloud:
nacos:
config:
server-addr: ${my.nacos.config-server:192.168.1.123:8848}
namespace: ${my.nacos.config-namespace:${spring.profiles.active}}
file-extension: yml
参考配置:
点击查看
spring:
profiles:
#启动环境配置
active: #spring.profiles.active#
application:
name: 应用名称("my-application")
cloud:
nacos:
config:
# 读取机器bootstrap.yml 开发环境使用server-addr
server-addr: ${my.nacos.config-server:192.168.1.123:8848}
# 生产环境是阿里云ACE服务 需要使用endpoint连接
endpoint: ${my.nacos.config-endpoint:}
namespace: ${my.nacos.config-namespace:${spring.profiles.active}}
file-extension: yml
group: DEFAULT_GROUP
extension-configs:
- data-id: common-configuration.yml
group: DEFAULT_GROUP
- data-id: resources-config.yml
group: DEFAULT_GROUP
- data-id: common-config.yml
group: DEFAULT_GROUP
- data-id: db.yml
group: DEFAULT_GROUP
如何实现加载不同环境的配置?
在不同环境运行应用时,启动时添加 spring.profiles.active
指定运行环境,如果没有指定( my.nacos.config-namespace
)命名空间参数,默认使用 spring.profiles.active
作为命名空间名称。
默认会加载哪些配置?
${spring.application.name}.${file-extension:properties}
${spring.application.name}-${profile}.${file-extension:properties}
# 服务注册
# 生产者
导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
- Maven Repository: com.alibaba.cloud » spring-cloud-starter-alibaba-nacos-discovery (opens new window)
- Nacos 版本说明 (opens new window),Spring Cloud Alibaba 对 Spring Boot 版本有对应要求,一般都不是最新版的 Spring Boot
配置
spring:
application:
name: service-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
启动类注解
@EnableDiscoveryClient
# 消费者
略,将在网关文章中详述。