Nacos 注册中心与服务监测
服务注册与发现
在父工程添加依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- 这里引入最新的SpringCloud依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 这里引入最新的SpringCloudAlibaba依赖,2021.0.1.0版本支持SpringBoot2.6.X -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
在需要被发现的微服务中添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
修改微服务的配置文件
server:
# 之后所有的图书服务节点就81XX端口
port: 8101
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://cloudstudy.mysql.cn-chengdu.rds.aliyuncs.com:3306/cloudstudy
username: test
password: 123456
# 应用名称 bookservice
application:
name: bookservice
cloud:
nacos:
discovery:
# 配置Nacos注册中心地址
server-addr: localhost:8848
Nacos后台服务列表(登录的账号密码默认都是nacos)
使用Feign实现服务发现远程调用以及负载均衡
此处为语雀内容卡片,点击链接查看:查看详情
Nacos 服务分为临时实例和非临时实例
临时实例:和Eureka一样,采用心跳机制向Nacos发送请求保持在线状态,一旦心跳停止,代表实例下线,不保留实例信息。
非临时实例:由Nacos主动 进行联系,如果连接失败,那么不会移除实例信息,而是将健康状态设定为false,相当于会对某个实例状态持续地进行监控。
设置为非临时的spring.cloud.nacos.discovery.ephemeral=false
集群分区
可以将一部分实例划分为蔟(群组)
添加配置spring.cloud.nacos.discovery.cluster-name=Group1
尝试将用户服务的两个实例划分为两个Group
接着我们在借阅服务中开启nacos的负载均衡 spring.cloud.loadbalancer.nacos.enabled=true
开启后,借阅服务(在Group1中)中如果使用到用户服务,将优先调用同蔟的实例,若该蔟没有用户服务实例或者实例挂了,就会调用其他蔟的用户服务
如果同蔟中有多个用户服务实例,可以设置实例的权重spring.cloud.nacos.discovery.weight=1
权重默认为1 ,权重越大越优先调用
配置中心
在配置管理中添加一个用户服务的dev配置
在用户服务的pom文件添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
添加新的配置文件bootstrap.yml
spring:
application:
name: "UserService"
profiles:
# 环境也是和配置文件保持一致
active: dev
cloud:
nacos:
config:
# 配置文件后缀名
file-extension: yaml
# 配置中心服务器地址,也就是Nacos地址
server-addr: localhost:8848
命名空间
我们还可以将配置文件或是服务实例划分到不同的命名空间中,区分开发、生产环境
给微服务添加配置spring.cloud.nacos.discovery.namespace="dev-namespace"
可将服务从默认的public划分到dev命名空间
不同命名空间的服务不能相互调用