什么是Nacos
官方解释:一个更易于构建云原生应用的动态服务发现(Nacos Discovery)、服务配置(Nacos Config)和服务管理平台。
集注册中心+配置中心+服务管理的一个平台
Nacos关键特性:
- 服务发现和服务健康监测
- 动态配置服务
- 动态DNS服务
- 服务及其元数据管理
核心功能
服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Naocs Server接收到注册请求后,就会把这些元数据信息储存在一个双层的内存Map中。
服务心跳:在注册服务后,Nacos Client会维护一个定时心跳来维持通知Naxos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。
服务同步:Nacos Server集群之前会互相同步服务实例,用来保证服务信息的一致性。
服务发现:服务消费者(Nacos Client)会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性设置为false(客户端服务发现时不会发现),如果某个实例超过30s没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)
主流的注册中心的区别
CAP C一致性 A可用性 P分区容错性
- | Nacos | Eureka | Consul | CoreDNS | Zookerper |
---|---|---|---|---|---|
一致性协议 | CP+AP | AP | CP | — | CP |
健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | — | Keep Alive |
负载均衡策略 | 权重/metadata/Selector | Ribbon | Fabio | RoundRobin | — |
雪崩保护 | 有 | 有 | 无 | 无 | 无 |
自动注销实例 | 支持 | 支持 | 支持 | 不支持 | 支持 |
访问协议 | HTTP/DNS | HTTP | HTTP/DNS | DNS | TCP |
监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 | 支持 |
Dubbo集成 | 支持 | 不支持 | 支持 | 不支持 | 支持 |
K8S | 支持 | 不支持 | 支持 | 支持 | 不支持 |
Nacos Server部署
下载地址
点击查找历史版本

找到1.4.1版本

点开
Asswts
,下载zip文件。gz文件是linux环境用的。
下载好以后,先解压,然后进入
bin
文件夹,其中startup.cmd
是windows的启动文件,startup.sh
是linux的启动文件。双击startup.cmd
文件,等到出现use embedded storage
后,Nacos Server就启动成功了。nacos的默认端口是8848

Spring Cloud alibaba版本选型
组件版本关系
Spring Cloud alibaba Version | Sentinel Version | Nacos Version | RocketMQ Version | Dubbo Version | Seate Version |
---|---|---|---|---|---|
2.2.4.RELEASE | 1.8.0 | 1.4.1 | 4.4.0 | 2.7.8 | 1.3.0 |
2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE | 1.8.0 | 1.3.3 | 4.4.0 | 2.7.8 | 1.3.0 |
2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE | 1.7.1 | 1.2.1 | 4.4.0 | 2.7.6 | 1.2.0 |
2.2.0.RELEASE | 1.7.1 | 1.1.4 | 4.4.0 | 2.7.4.1 | 1.0.0 |
2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE | 1.7.0 | 1.1.4 | 4.4.0 | 2.7.3 | 0.9.0 |
2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE | 1.6.3 | 1.1.1 | 4.4.0 | 2.7.3 | 0.7.1 |
Nacos管理界面详细介绍
命名空间

在服务列表的左上角有一个
public
,这个是服务的命名空间,默认给的就是public
。实际开发中可能会有非常多的服务,如果全部把它们都放在public
中会显得非常的乱,难以管理。我们可以在目录中找到
命名空间
,可以看见只有一个默认的public
。点击新建命名空间

可以先随便写下,看下最终效果。

点击确定后,可以看见命名空间多出了我们刚才新建的命名空间。在服务列表的左上角也多出了刚才新建的命名空间


隐藏空服务

隐藏空服务对应的是右边的
创建服务
。点击创建服务,随便填一下,保护阈值先写0。
我们把隐藏空服务按钮关掉的话,会多出刚才新建的服务,打开就会隐藏掉。因为我们新建的服务没有服务被注册,所以可以被隐藏掉

更多配置
配置项 | Key | 默认值 | 说明 |
---|---|---|---|
服务端地址 | spring.cloud.nacos.discovery.server-addr | 无 | Nacos Server 启动监听的ip地址和端口 |
服务名 | spring.cloud.nacos.discovery.service | ${spring.application.name} | 给当前的服务命名 |
服务分组 | 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.cluster-name | DEFAULT | 配置成Nacos集群名称 |
接入点 | spring.cloud.nacos.discovery.enpoint | UTF-8 | 地狱的某个服务入口域名,通过此域名可以动态地拿到服务端地址 |
是否集成Ribbon | robbon.nacos.enabled | true | 一般设置成true即可 |
是否开启Nacos Watch | spring.cloud.nacos.discovery.watch.enabled | true | 可以设置成false来关闭watch |
网友评论