Nacos服务管理
注:基于SpringBoot项目
一、服务注册
1. 依赖引入
# 首先父工程中引入 SpringCloudAlibaba 版本管理依赖,其中会包含 nacos 的版本
<!-- SpringCloudAlibaba --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
# 在需要进行服务注册的项目中引入 nacos-discovery ,类似于 eureka-client,注意,两者不要同时引入
<!-- nacos-discovery --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
2. nacos 地址配置:application.yml
spring:
cloud:
nacos:
server-addr: localhost:8848
3. nacos 的服务调用和负载均衡配置与 eureka 一致
参考:https://www.cnblogs.com/zhousjcn/p/15511161.html
二、Nacos服务分级模型
1. 如何设置实例的集群属性
修改application.yml文件,添加spring.cloud.nacos.discovery.cluster-name属性即可
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos 服务地址
discovery:
cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州
2. Nacos服务分级存储模型
一级是服务,例如 userservice、orderService等等
二级是集群,例如 杭州 或 上海
三级是实例,例如杭州机房的某台部署了userservice的服务器
三、本地集群调用
本地集群调用,即杭州(HZ)的服务,在调用其他服务时,优先调用本地(杭州-HZ)服务,在本地的服务列表中随机选择服务调用,其次才是调用其他集群的服务。
步骤:
1. 在配置集群时,名称相同,例如有 orderService和userService同时配置为 HZ
2. 修改负载均衡规则为 nacosRole
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
3. 跨集群调用服务会有警告信息打印
四、权重配置
说明:
- 权重值一般在 0 ~ 1 之间,包含 0 和 1
- 权重越小,服务被访问的概率越低,当服务权重设置为 0 时,该服务将不被访问
- 服务权重配置最基本的用法是调整某些服务被访问的概率,例如降低运行在服务器性能比较低的服务访问概率等
- 服务权重配置可以应用在服务升级、发版时,首先将服务权重设置为 0 ,新服务启动成功后逐渐条高权重,使得访问量逐渐提高,这样加入新服务存在问题,那么影响范围也比较小
1. 打开某个服务的服务列表,点击需要修改权重服务的编辑按钮
2. 在权重条码直接修改权重值即可
五、环境隔离
处于不同命名空间的服务之间无法访问。
1. 命名空间配置
点击确认后,创建的命名空间会出现在列表中,其中 命名空间ID 会在服务配置中使用到
2. 服务中配置指定命名空间
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos 服务地址
discovery:
cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州
namespace: 13ad45bc-1fa3-4702-b7b8-9310aedaf8bd # 这里配置命名空间的ID
六、配置非临时实例
1. 临时实例和非临时实例的区别
- 与Eureka差别在于服务提供者,Nacos会将服务提供者划分为临时实例和非临时实例
- 临时实例心跳有服务提供者发出,每30秒一次,一旦心跳停止,Nacos会直接从服务列表剔除
- 非临时实例不会主动发起心跳,由服务注册中心Nacos发起询问,频率高于临时实例,且询问得不到回复时,并不会将服务提供者从服务列表剔除
2. 配置方式
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos 服务地址
discovery:
cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州
namespace: 13ad45bc-1fa3-4702-b7b8-9310aedaf8bd # 这里配置命名空间的ID
ephemeral: false # 设置为非临时实例,默认为 true,表示服务为临时实力注册到服务注册中心