Nacos是阿里巴巴的产品,现在是spring cloud中的一个组件.相比Eureka功能更加丰富,在国内受欢迎度较高

Nacos服务分级存储模型

1) 一级是服务, 例如user service
2) 二级是集群, 例如杭州或上海
3) 三级是实例, 例如杭州机房的某一台部署了user service的服务器
image.png

如何设置实例的集群属性

1) 修改application.yml文件,例如spring.cloud.nacos.discovery.cluster-name属性 即 可

NacosRule负载均衡策略

① 优先选择同集群服务实例列表
② 本地集群找不到提供者,采取其他集群寻找,并且会发出警告
③ 确定了可用实例列表后,在采用随机负载均衡挑选实例

Nacos权重负载均衡

实例的权重控制

① Nacos控制台可以设置实力的权重值,0~1之间
② 同集群内的多个实例,权重越高月被访问的频率越高
③ 权重设置为0则完全不会被访问

环境隔离 - namespace

Nacos中服务存储和数据存储的最外层都是一个名为
namespace的东西,用来做最外层隔离
image.png
① namespace用来做环境隔离
② 每个namespace都有唯一的id
③ 不同namespace下的服务不可见

Nacos注册中心原理

image.png

Nacos与Eureka的共同特点

① 都支持服务注册和服务拉取
② 都支持服务提供者心跳方式做健康检测

Nacos与Eureka的区别

① Nacos支持服务端主动检测提供者状态: 临时实例采用心跳模式,非临时采用主动检测模式
② 临时实例心跳不正常会被剔除,非临时实例则不会
③ Nacos支持服务列表变更的消息推送模式,服务列表更新及时
④ Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

Nacos配置管理

image.png
image.png

将配置交给Nacos管理的步骤

  1. 在Nacos中添加配置文件
  2. 在微服务中引入nacos的config依赖
  3. 在微服务中添加bootstrap.yml,配置nacos的地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件

配置自动刷新

image.png
image.png

nacos配置更新后,微服务可以实现热更新,方式:

  • 通过@Value注解注入,结合@RefreshScope来刷新
  • 通过@Configuration Properties注入,自动刷新

    注意事项:

  • 不是所有的配置都适合放到配置中心,维护起来比较麻烦

  • 建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置

    多环境配置环境共享