Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供「注册中心」、「配置中心」和「动态DNS服务」三大功能。
使用的相关版本:
- nacos server:0.9.0
- nacos client:0.9.1
- spring boot:1.5.17.RELEASE
- spring cloud:Edgware.SR4
- spring-cloud-starter-alibaba-nacos-discovery:0.1.1.RELEASE(对应spring boot 1.x版本)
nacos官方文档:https://nacos.io
部署nacos server,按照官方文档部署就行(分为单机部署和集群部署,两者的启动方式稍有不同),现已支持拆分部署
下面介绍的是和spring cloud做集成
相关对比
比较点 | Eureka | Zookeeper | Consul | Nacos |
---|---|---|---|---|
运维熟悉度 | 相对陌生 | 熟悉 | 更陌生 | 陌生 |
一致性(CAP) | AP | CP | AP | AP |
一致性协议 | HTTP 定时轮训 | ZAB | RAFT | ~ |
通讯方式 | HTTP REST | 自定义协议 | HTTP REST | ~ |
更新机制 | Peer 2 Peer(服务器之间) + Scheduler(服务器和客户端) | ZK Watch | Agent 监听的方式 | ~ |
适用规模 | < 30K | <20K | <5K | 100K+ |
性能问题 | 简单的更新机制、复杂设计、规模较大时 GC 频繁 | 扩容麻烦、规模较大时 GC 频繁 | 3K 节点以上,更新列表缓慢 | 刚开源 |
dashboard | 有 | 没有,可以自己实现 | 有 | 有 |
各自缺点:
Eureka:
- 客户端注册服务上报所有信息,节点多的情况下,网络,服务端压力过大,且浪费内存
- 客户端更新服务信息通过简单的轮询机制,当服务数量巨大时,服务器压力过大。
- 集群伸缩性不强,服务端集群通过广播式的复制,增加服务器压力
- Eureka2.0 闭源(Spring Cloud最新版本还是使用的1.X版本的Eureka)
Zookeeper:
- 维护成本较高,客户端,session状态,网络故障等问题,会导致服务异常
- 集群伸缩性限制,内存,GC和连接
- 主节点挂的情况下,会进行leader选举,在此过程中服务将不可用
- 无控制台管理
Consul:
- 未经大规模市场验证,无法保证可靠性
- Go语言编写,内部异常排查困难
Nacos:
- 刚刚开源不久,社区热度不够,依然存在bug
上面对比摘自与 小马哥技术周报
简单使用
加入依赖:
1 | <dependency> |
注意点:
- spring-cloud-starter-alibaba-nacos-discovery 依赖的版本和 spring boot 版本有关
- spring-cloud-starter-alibaba-nacos-discovery 默认使用的 nacos-client 的版本较低,会有问题(比如namespace设置无效),这里替换了较高的版本
application.properties:
1 | spring.application.name=nacos-test |
其它配置可以参考官网
注意:这里设置的namespace是界面上显示的id,不设置会进入public默认的命名空间
namespace:常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
启动服务: