Spring Cloud - Nacos与Eureka区别及如何选型

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处于1.x-2.0开发
厂商 阿里巴巴 Netflix Netflix已长期用于生产,阿里刚起步
生产建议 否 是 Nacos0.8以前不可用于生产,建议生产采用Nacos1.0,便于节省配置中心集群和服务管理
未来发展 是 否 Nacos 2.0主要关注在统一服务管理、服务共享及服务治理体系的开放的服务平台的建设

选型建议

采用Eureka方案的考虑

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

采用Nacos方案的考虑

  • 想在线对服务进行上下线和流量管理
  • 不想采用MQ实现配置中心动态刷新
  • 不想新增配置中心生产集群
  • 考虑引入Spring Cloud Alibaba生态
------ 本文结束------

本文标题:Spring Cloud - Nacos与Eureka区别及如何选型

文章作者:Perkins

发布时间:2019年04月23日

原始链接:https://perkins4j2.github.io/posts/35353/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。