Eureka和Nacos

发布时间 2023-09-09 18:29:15作者: 牧丶归

Eureka是什么

Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心,由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用于实现AWS云的中服务定位,以实现中间层服务器的负载均衡和故障转移,遵循着CAP理论中的A(可用性)P(分区容错性)

Eureka详解

一个Eureka中分为eureka server和eureka clint,其中eurka server是作为服务的注册与发现中心,eureka client既可以作为服务的生产者,又可以作为服务的消费者
Eurak2.0之后已经停止开源

Nacos是什么

Nacos是阿里巴巴最新开源的项目,提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。更敏捷和容易地构建、交付和管理微服务平台。功能强于Eureka,而且是开箱即用的组件,在国内很流行
Nacos它提供了服务注册与发现、配置管理以及服务健康监测等功能,可以帮助开发者构建和管理微服务架构。

Nacos 具有以下特点:

  1. 服务注册与发现:Nacos 提供了服务注册与发现的功能,允许服务实例在启动时向 Nacos 注册自己的信息,其他服务可以通过查询 Nacos 获取可用服务实例的信息,并实现服务间的动态调用和负载均衡。
  2. 配置管理:Nacos 提供了分布式配置管理的能力,可以集中管理服务所需的配置信息。开发者可以将配置信息存储在 Nacos 中,通过配置中心将配置信息动态地推送给应用程序,实现配置的集中管理和动态刷新。
  3. 服务健康监测:Nacos 支持对服务实例的健康状态进行监测和管理。它通过周期性地向注册中心上报心跳信息,实现对服务实例的状态监测和故障自动摘除,保证系统的可靠性和稳定性。
  4. 动态 DNS 服务:Nacos 提供了服务 DNS 解析的能力,可以根据服务名直接解析服务的 IP 地址。这样,在服务实例发生变化时,其他服务可以自动获取到最新的服务地址,无需手动修改配置。
  5. 权限控制:Nacos 支持对服务实例和配置信息进行访问权限的管理。开发者可以配置不同的权限策略,确保只有具有合法权限的用户或服务可以访问敏感信息。
  6. 开放性和扩展性:Nacos 提供了丰富的开放接口和插件机制,可以与其他开源技术(如 Spring Cloud、Dubbo、Kubernetes 等)进行集成,满足不同场景下的需求。

总之,Nacos 是一个功能强大的服务发现和配置管理平台,可以帮助开发者构建和管理分布式系统中的微服务架构。它提供了服务注册与发现、配置中心、服务健康监测等核心功能,简化了分布式系统的开发和运维工作。

nacos的部署方式与springcloud eureka不太一样,euraka是需要创建springboot项目,然后将euraka服务端通过gav的方式加载进来,然后部署项目。nacos是直接从阿里巴巴nacos的官网下载jar包,启动服务。

Nacos的服务实例分为两种类型:

  1. 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
  2. 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

Nacos与eureka的共同点:

  1. 都支持服务注册和服务拉取
  2. 都支持服务提供者心跳方式做健康检测

Nacos与Eureka的区别

Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

临时实例心跳不正常会被剔除,非临时实例则不会被剔除

Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

1、范围不同。

Nacos的阈值是针对某个具体Service的,而不是针对所有服务的;但Eureka的自我保护阈值是针对所有服务的。nacos支持CP和AP两种;eureka只支持AP。nacos使用netty,是长连接;eureka是短连接,定时发送

2、保护方式不同。
Eureka保护方式:当在短时间内,统计续约失败的比例,如果达到一定阈值,则会触发自我保护的机制,在该机制下,Eureka Server不会剔除任何的微服务,等到正常后,再退出自我保护机制。

Nacos保护方式:当域名健康实例(Instance)占总服务实例的比例小于阈值时,无论实例是否健康,都会将这个实例返回给客户端。这样做虽然损失了一部分流量,但是保证了集群的剩余健康实例能正常工作。

3、连接方式不同。

nacos支持动态刷新,在控制器(controller)上加@RefreshScope注解即可,采用Netty连接,是长连接;eureka本身不支持动态刷新,需要配合MQ完成动态刷新,且是短连接,是定时发送。

4、架构设计:Nacos采用集中式架构,所有的服务实例信息都存储在Nacos Server中;而Eureka采用去中心化架构,每个服务实例都可以充当服务注册中心。
5、功能特性:Nacos提供了更多的功能,包括配置管理、动态路由、服务熔断等;而Eureka主要专注于服务注册与发现方面的功能。
6、社区支持:Nacos由阿里巴巴进行维护和支持,社区活跃度高;而Eureka由Netflix维护,社区虽然较为活跃,但相对于Nacos来说支持相对较少。
总的来说,Nacos在功能和生态方面更加全面,而Eureka则更加专注于服务注册与发现的基本功能。选择使用哪个组件应根据具体的需求和项目特点来决定。