nacos注册中心详解
# 一、查看服务列表
首先从最简单的信息开始看起:服务列表中aservice-rbac启动了一个实例,aservice-sms启动两个实例。并且所有实例都通过了nacos服务注册中心的健康检查。点击“详情”可以查看服务状态,以及服务所有启动实例的状态。

# 二、集群的划分
某些大型企业,为了满足异地容灾的需要,通常将应用部署在不同的机房。不同机房的服务器组通常被称为一个“集群”。但是nacos的集群与我们之前学过的apollo有所不同:
- apollo的集群信息是需要我们手动添加的,一个微服务在A集群使用一套配置,在B集群使用另一套配置。
- 而nacos集群理论上指的是nacos server所组成的集群。通过Nacos-Sync (opens new window)将服务信息双向同步。
对于注册在nacos server(集群A)上面的微服务实例,就是集群A的实例。同理,注册在nacos server (集群B)上面的微服务实例就是集群B的实例。所以nacos的“集群”信息是不需要我们手动添加的,微服务注册在哪个集群的nacos上,它逻辑上就属于那个集群。
我们实验的实例之注册在一组nacos server上,所以我们所有的实例都是1个集群。
# 三、微服务group分组
nacos的微服务分组概念,有两层含义:
- 不同分组的微服务,彼此之间不能发现对方,也就不能进行远程服务调用。所以一个公司内部根据项目的逻辑独立性进行分组是最好的,不存在彼此的服务调用一组项目成为一个group。
- 将微服务分组,方便我们查看,以及方便我们后面章节会为大家介绍的配置管理分类。
可以通过如下属性对微服务分组进行配置。
spring.cloud.nacos.discovery.group=
1
# 四、健康保护阈值
- 设置健康保护阈值的目的:为了防止过多微服务实例挂掉之后,导致流量全部流向健康实例 ,继而造成流量压力把健康实例也压垮,并形成雪崩效应,导致整个集群服务崩溃。
- 健康保护阈值是一个 0 到 1 之间的浮点数。当健康实例占总服务实例的比例小于该值时,无论被请求的实例是否健康,都会将这个实例返回给客户端。这样做虽然导致一部分请求失败,但是保证了集群的剩余的健康实例能一定程度上维持系统的整体服务。
# 附录:nacos-discovery客户端配置项
| 配置项 | Key | 默认值 | 说明 |
|---|---|---|---|
| 服务端地址 | spring.cloud.nacos.discovery.server-addr | 无 | Nacos Server 启动监听的ip地址和端口 |
| 服务名 | spring.cloud.nacos.discovery.service | ${spring.application.name (opens new window)} | 给当前的服务命名 |
| 服务分组 | spring.cloud.nacos.discovery.group | DEFAULT_GROUP | 设置服务所处的分组 |
| 权重 | spring.cloud.nacos.discovery.weight | 1 | 取值范围1到100,数值越大,权重越大 |
| 网卡名 | spring.cloud.nacos.discovery.network-interface | 无 | 当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址 |
| 注册的IP地址 | spring.cloud.nacos.discovery.ip | 无 | 优先级最高 |
| 注册的端口 | spring.cloud.nacos.discovery.port | -1 | 默认情况下不用配置,会自动探测 |
| 命名空间 | spring.cloud.nacos.discovery.namespace | 无 | 常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 |
| AccessKey | spring.cloud.nacos.discovery.access-key | 无 | 当要上阿里云时,阿里云上面的一个云账号名 |
| SecretKey | spring.cloud.nacos.discovery.secret-key | 无 | 当要上阿里云时,阿里云上面的一个云账号密码 |
| Metadata | spring.cloud.nacos.discovery.metadata | 无 | 使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息 |
| 日志文件名 | spring.cloud.nacos.discovery.log-name | 无 | |
| 接入点 | spring.cloud.nacos.discovery.enpoint | UTF-8 | 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址 |
| 是否集成Ribbon | ribbon.nacos.enabled | true | 一般都设置成true即可 |
| 是否开启NacosWatch | spring.cloud.nacos.discovery.watch.enabled | true | 可以设置成false来关闭watch |
上次更新: 2022/06/13, 18:30:58