一、前言

Nacos与Eureka均提供注册中心和服务治理功能,以下为两者差异和选型方案。

二、功能差异

模块

Nacos

Eureka

说明

注册中心

服务治理基本功能,负责服务中心化注册

配置中心

Eureka需要配合Config实现配置中心,且不提供管理界面

动态刷新

Eureka需要配合MQ实现配置动态刷新,Nacos采用Netty保持TCP长连接实时推送

可用区AZ

对服务集群划分不同区域,实现区域隔离,并提供容灾自动切换

分组

Nacos可用根据业务和环境进行分组管理

元数据

提供服务标签数据,例如环境或服务标识

权重

Nacos默认提供权重设置功能,调整承载流量压力

健康检查

Nacos支持由客户端或服务端发起的健康检查,Eureka是由客户端发起心跳

负载均衡

均提供负责均衡策略,Eureka采用Ribion

管理界面

Nacos支持对服务在线管理,Eureka只是预览服务状态

三、部署安装

模块

Nacos

Eureka

说明

MySql

Nacos需要采用MySql进行数据进行持久化

MQ

Eureka需要采用MQ进行配置中心刷新

配置中心

Eureka结合Config或者Consul实现配置中心

配置文件

在线编辑

本地文件或者Git远程文件

Eureka结合Config或者Consul

集群

Nacos需要配置集群ip再启动

四、稳定及扩展性

模块

Nacos

Eureka

说明

版本

1.0.0

1.9.9

Eureka2.0已停止开发,Nacos处于2.0开发

厂商

阿里巴巴

Netflix

Netflix已长期用于生产,阿里刚起步

生产建议

Nacos0.8以前不可用于生产,建议生产采用Nacos1.4,便于节省配置中心集群和服务管理

未来发展

Nacos 2.0主要关注在统一服务管理、服务共享及服务治理体系的开放的服务平台的建设

五、选型建议

采用Eureka方案的考虑

  • 想用Spring Cloud原生全家桶
  • 想用本地文件和Git作为配置管理的,将配置与服务分开管理
  • 考虑短期的稳定性
  • 项目比较老,难装换

采用Nacos方案的考虑(优先)

  • 想在线对服务进行上下线和流量管理
  • 不想采用MQ实现配置中心动态刷新
  • 新增配置中心生产集群
  • 考虑引入Spring Cloud Alibaba生态
  • 可视化更清晰
  • 功能直接包括Netflix的Eureka、Config、Bus

六、总结

随着大趋所致,阿里巴巴的Nacos功能强大,可视化更好,推荐使用!!!