当前位置:网站首页>【consul、eureka、nacos异同点】

【consul、eureka、nacos异同点】

2020-12-03 11:22:40 Mrchai521

配置中心

  • eureka 不支持
  • consul 支持,但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新
  • nacos 支持,用起来简单,符合springBoot的命名风格,支持动态刷新

注册中心

1.eureka:

  • 应用内/外:直接集成到应用中,依赖于应用自身完成服务的注册与发现
  • ACP原则:遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快,但牺牲了一定的一致性。
  • 版本迭代:目前已经不进行升级
  • 集成支持:只支持SpringCloud集成
  • 访问协议:HTTP 雪崩保护:支持雪崩保护
  • 界面:英文界面,不符合国人习惯 上手:容易
  1. consul:
  • 应用内/外:属于外部应用,侵入性小
  • ACP原则:遵循CP原则(一致性+分离容忍) 服务注册稍慢,由于其一致性导致了在Leader挂掉时重新选举期间真个consul不可用。
  • 版本迭代:目前仍然进行版本迭代
  • 集成支持:支持SpringCloud K8S集成
  • 访问协议:HTTP/DNS
  • 雪崩保护:不支持雪崩保护
  • 界面:英文界面,不符合国人习惯
  • 上手:复杂一点
  1. nacos:
  • 应用内/外:属于外部应用,侵入性小
  • ACP原则:通知遵循CP原则(一致性+分离容忍) 和AP原则(可用性+分离容忍)
  • 版本迭代:目前仍然进行版本迭代
  • 集成支持:支持Dubbo 、SpringCloud、K8S集成
  • 访问协议:HTTP/动态DNS/UDP
  • 雪崩保护:支持雪崩保护
  • 界面:中文界面,符合国人习惯
  • 上手:极易,中文文档,案例,社区活跃

功能差异

模块 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需要配合MQ实现配置动态刷新,Nacos采用Netty保持TCP长连接实时推送
配置中心 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生态

版权声明
本文为[Mrchai521]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4490996/blog/4771792