1. 概要说明
在使用
Nacos
之前,请在你的虚拟机中下载好Nacos
,再进行连接本机使用
port:8848
本机访问地址:
http://{虚拟机ip}:8848/nacos/
访问账号密码:
nacos/nacos
2. Nacos的作用
2.1 服务发现中心
微服务将自身注册至
Nacos
,从Nacos
获取微服务列表。
下图为注册的微服务列表
2.2 配置中心
微服务众多,它们的配置信息也非常复杂,为了提供系统的可维护性,微服务的配置信息统一在
Nacos
配置。
下图为配置中心的配置列表
3. Nacos的使用
3.1 服务注册中心
在搭建Nacos服务发现中心之前需要搞清楚两个概念:
namespace和group
namespace:
用于区分环境、比如:开发环境、测试环境、生产环境。
group:
用于区分项目,若是同一个微服务项目就用用一个group名称
3.1.1 创建命名空间
登录成功之后,首先创建一个命名空间
如果使用dev命名空间,在下边的配置中对
namespace配置为dev
。
3.1.2 进行服务注册
(1)在父依赖中添加SpringCloud alibaba依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
(2)然后在相关模块中配置服务注册依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(3)在相关模块的配置文件中进行配置Nacos的地址
以及模块的微服务注册信息
#微服务配置
spring:
application:
name: 模块名
cloud:
nacos:
server-addr: IP地址:8848
discovery:
namespace: dev //命名空间
group: project //模块项目名称或所属项目名称
(4)重启服务,观察服务注册列表
3.2 配置中心
3.2.1 配置概要
目的就是通过Nacos去管理项目的所有配置。
先将项目中的配置文件分分类:
(1)每个项目特有的配置
是指该配置只在有些项目中需要配置,或者该配置在每个项目中配置的值不同。比如:spring.application.name每个项目都需要配置但值不一样,以及有些项目需要连接数据库而有些项目不需要,有些项目需要配置消息队列而有些项目不需要。
spring:
application:
name: content-api #1-1
(2)项目所公用的配置
指在若干项目中配置内容相同的配置,比如说,
logging日志
、swagger接口集成服务
##日志文件配置路径
logging:
config: classpath:log4j2-dev.xml
#swagger-ui.html
swagger:
title: "系统"
description: "相关信息进行管理"
base-package: com.xuecheng.content
enabled: true
version: 1.0.0
3.2.1 配置三要素
需要知道nacos如何去定位一个具体的配置文件,即:
namespace
、group
、dataid
通过
namespace
、group
找到具体的环境和具体的项目。
通过dataid找到具体的配置文件,dataid有三部分组成
比如:content-service-dev.yaml配置文件 由(content-service)-(dev). (yaml)三部分组成
content-service:
第一部分,它是在application.yaml中配置的应用名
,即spring.application.name的值
dev:
第二部分,它是环境名,通过spring.profiles.active指定
Yaml:
第三部分,它是配置文件 的后缀
,目前nacos支持properties、yaml等格式类型,本项目选择yaml格式类型。
我们启动项目中传入spring.profiles.active的参数
决定引用哪个环境的配置文件,例如:传入spring.profiles.active=dev
表示使用dev环境的配置文件即content-service-dev.yaml
。
3.2.2 下列实例对content-service进行配置
点击添加配置
对于content-service,sevice层主要进行与数据库的交互,因此在Nacos配置中应放入数据库的配置信息
在本地项目配置文件中进行配置以及添加配置依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
#1-1、#2-2、#3-3
代表配置三要素,配置三要素一定配置在本地配置文件中,不然运行时,项目无法定位Nacos中的配置文件
#微服务配置 content-service-dev.yaml
spring:
application:
name: content-service #1-1
cloud:
nacos:
server-addr: 192.168.101.65:8848
config: #配置文件的相关配置
namespace: dev402
group: xuecheng-plus-project
file-extension: yaml #3-3
refresh-enabled: true
#环境名
profiles:
active: dev #2-2
在微服务项目中,api模块会依赖service模块,因此,所以这里使用
extension-configs
扩展配置文件的方式引用service模块所用到的配置文件
spring:
application:
name: content-api
cloud:
nacos:
server-addr: IP地址:8848
discovery:
namespace: dev
group: xuecheng-plus-project
config:
namespace: dev
group: xuecheng-plus-project
file-extension: yaml
refresh-enabled: true
extension-configs:
- data-id: content-service-${spring.profiles.active}.yaml
group: xuecheng-plus-project
refresh: true
profiles:
active: dev
记住,每向Nacos添加一个配置文件,最好重新运行一次本地项目!!!