一.nacos介绍
Nacos致力于帮助您发现,配置和管理微服务。它提供了一组简单有用的功能,使您能够实现动态服务发现,服务配置,服务元数据和流量管理。Nacos使构建,交付和管理微服务平台变得更容易,更快捷。它是通过微服务或云原生方法支持以服务为中心的现代应用程序体系结构的基础架构。
二:Nacos服务安装
1.1 下载
地址:Releases · alibaba/nacos · GitHub
1.2 解压
1.3 运行
windows执行bin目录下的startup命令 :startup.cmd -m standalone 或者 修改 startup.cmd中set MODE="standalone"单体项目 然后双击startup.cmd启动
1.4 访问
访问Nacos,端口8848:http://127.0.0.1:8848/nacos/index.html ,用户名和密码都是:nacos
1.5 基于数据库持久化Nacos (nacos服务注册表持久化到数据库)
1.5.1 找到nacos安装目录config/application.properties 文件,编辑数据库信息
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1234
1.5.2 找到config/ nacos-mysql.sql 文件 ,创建数据库 nacos,然后导入该sql脚本文件
三:Nacos服务注册
1.父工程的依赖
<!--公共的一些配置-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--SpringBoot-->
<parent>
<groupId> org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<!--SpringCloud-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
2. 创建自服务 服务注册到Nacos
2.1 子服务导入依赖
<!--nacos 服务注册-->
<dependency>
<groupId>com.alibaba.cloud </groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.2 启动类 略
2.3 yaml配置 服务名 IP 注册中心地址
server:
port: 1001
spring:
application:
name: user-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #注册中心地址
2.4 controller
2.5 测试 输入 localhost:1001/user/1 就可以在nacos服务列表看到该服务
四:服务通信 使用openFeign进行服务通信
1. 消费者服务order导入openfeign的依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2. 启动类开启feign
@EnableFeignClients // 开启feign支持
3. 创建userFeignClient接口 和 User接口一致
4. order的controller注入userFeignClient使用。
五:Nacos配置管理 配置文件统一管理
1. Nacos添加配置
1.1 第一步:打开Nacos监控面板 - 进入配置列表 -点击 “+” 图标添加配置
1.2 第二步:填写Data ID,选择YAML,编辑配置文件内容
server:
port: 1001 #端口
spring:
application:
name: service-user #服务名
cloud:
sentinel:
transport:
dashboard: localhost:1111
datasource:
flow:
nacos: #限流持久配置
server-addr: localhost:8848 #使用nacos的持久
dataId: application-user-flow-dev #获取限流的数据源的dataId
groupId: DEFAULT_GROUP
rule-type: flow #类型:限流
nacos:
discovery:
server-addr: localhost:8848 #注册中心地址 服务发现
2. 客户端接入配置中心
1. 需要nacos管理配置的服务 导入nacos的config包
<!-- 配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. 删除application.yaml 添加 bootstrap.yam文件配置nacos
spring:
profiles:
active: dev #开发环境
cloud:
nacos:
config:
server-addr: localhost:8848 #nacos地址
prefix: application-order #前缀
file-extension: yaml #后缀
shared-configs:
- application-common-dev.yaml # 公共配置文件名
feign:
sentinel:
enabled: true #熔断
3.测试
localhost:1001/user/1
4. 命名空间
命名空间可以用来隔离不同项目的配置文件,在Nacos中配置了命名空间后,那么Java客户端需要指定命名空间后才能拉取到该命名空间下的配置文件。 创建 指定
nacos
config
namespace: 8ef8c1e5-6d20-4efc-80c8-2b2c05541fa3 #命名空间的ID