详解Nacos和Eureka的区别

2023-09-19 06:10:48

Eureka是什么

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

一个Eureka中分为eureka server和eureka clint,其中eurka server是作为服务的注册与发现中心,eureka client既可以作为服务的生产者,又可以作为服务的消费者。

在这里插入图片描述
Eurak2.0之后已经停止开源。

Nacos是什么

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴最新开源的项目,提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。更敏捷和容易地构建、交付和管理微服务平台。

Nacos支持基于DNS和基于RPC的服务发现,动态配置服务(配置中心),动态DNS服务。
在这里插入图片描述

  • Provider APP:服务提供者 Consumer APP:服务消费者 Name Server:通过VIP(Virtual IP)或DNS的方式实现Nacos高可用集群的服务路由 Nacos Server:Nacos服务提供者,里面包含的Open
  • API是功能访问入口,Conig Service、Naming Service是Nacos提供的配置服务、命名服务模块。
  • Consitency Protocol是一致性协议,用来实现Nacos集群节点的数据同步,这里使用的是Raft算法(Etcd、Redis哨兵选举)
  • Nacos Console:控制台

Nacos的实现原理

在这里插入图片描述

1.客户端provider向nacos server的open api发起调用,把自己的服务地址链接,服务名称注册上去
2.nacos server与服务提供者provider建立心跳机制,用来检测服务状态
3.服务消费者consumer查询出提供服务实例列表
4.并且默认10s去nacos server拉取服务实例列表
5.当服务消费者检测到服务异常,基于UDP协议推送更新
6.服务消费者即可调用了

Nacos和Eureka的区别

CAP理论

C一致性,A高可用,P分区容错性

eureka只支持AP

nacos支持CP和AP两种
nacos是根据配置识别CP或AP模式,如果注册Nacos的client节点注册时是ephemeral=true即为临时节点,那么Naocs集群对这个client节点效果就是AP,反之则是CP,即不是临时节点。

#false为永久实例,true表示临时实例开启,注册为临时实例
 spring.cloud.nacos.discovery.ephemeral=true

连接方式

nacs使用的是netty和服务直接进行连接,属于长连接
eureka是使用定时发送和服务进行联系,属于短连接

服务异常剔除

eureka:
Eureka client在默认情况每隔30s想Eureka Server发送一次心跳,当Eureka Server在默认连续90s秒的情况下没有收到心跳, 会把Eureka client 从注册表中剔除,在由Eureka-Server 60秒的清除间隔,把Eureka client 给下线。

EurekaInstanceConfigBean类下
 	private int leaseRenewalIntervalInSeconds = 30;  //心跳间隔30s
    private int leaseExpirationDurationInSeconds = 90;  //默认90s没有收到心跳从注册表中剔除
 	EurekaServerConfigBean  类下
    private long evictionIntervalTimerInMs = 60000L; //异常服务剔除下线时间间隔

也就是在极端情况下Eureka 服务 从异常到剔除在到完全不接受请求可能需要 30s+90s+60s=3分钟左右(还是未考虑ribbon缓存情况下)

nacos:
nacos client 通过心跳上报方式告诉 nacos注册中心健康状态,默认心跳间隔5秒,
nacos会在超过15秒未收到心跳后将实例设置为不健康状态,可以正常接收到请求
超过30秒nacos将实例删除,不会再接收请求

操作实例方式

nacos:提供了nacos console可视化控制话界面,可以对实例列表进行监听,对实例进行上下线,权重的配置,并且config server提供了对服务实例提供配置中心,且可以对配置进行CRUD,版本管理

eureka:仅提供了实例列表,实例的状态,错误信息,相比于nacos过于简单

自我保护机制

相同点:保护阈值都是个比例,0-1 范围,表示健康的 instance 占全部instance 的比例。

不同点:

1)保护方式不同

Eureka保护方式:当在短时间内,统计续约失败的比例,如果达到一定阈值,则会触发自我保护的机制,在该机制下,Eureka Server不会剔除任何的微服务,等到正常后,再退出自我保护机制。自我保护开关(eureka.server.enable-self-preservation: false)

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

2)范围不同

Nacos 的阈值是针对某个具体 Service 的,而不是针对所有服务的。但 Eureka的自我保护阈值是针对所有服务的。

更多推荐

C语言实现 cortex-A7核 点LED灯 (附 汇编实现、使用C语言 循环实现、使用C语言 封装函数实现【重要、常用】)

1汇编实现textglobal_startstart:**************LED1点灯--->PE10**************/**************RCC章节初始化**************/CC_INIT:@1.使能GPIOE组控制器,通过RCC_MP_AHB4ENSETR寄存器设置GPIOE组

openGauss学习笔记-72 openGauss 数据库管理-创建和管理分区表

文章目录openGauss学习笔记-72openGauss数据库管理-创建和管理分区表72.1背景信息72.2操作步骤72.2.1使用默认表空间72.2.1.1创建分区表(假设用户已创建tpcdsschema)72.2.1.2插入数据72.2.1.3修改分区表行迁移属性72.2.1.4删除分区72.2.1.5增加分区7

GSMA SGP.21协议学习

GSMASGP.21协议学习1简介1.1概述本文档提供了一种体系结构方法,作为所有市场中设备的远程SIM配置的建议解决方案。体系结构的主要目标是为设备的远程SIM配置提供必要的凭据以获取移动网络访问权限。该版本专注于消费类市场的设备。请注意,SGP.21V1.0[23]尚未弃用。1.2范围本文档的目的是定义一个通用架构

图像识别在自动驾驶和智能安防中的关键应用

图像识别在自动驾驶和智能安防中的关键应用随着人工智能和深度学习技术的发展,图像识别已经成为了自动驾驶和智能安防领域的关键应用之一。图像识别技术能够通过处理和分析图像数据,帮助自动驾驶车辆和智能安防系统实现更准确、更高效的运行。本文将介绍图像识别在自动驾驶和智能安防中的关键应用及其相关技术。一、图像识别在自动驾驶中的应用

设计模式实战:模版方法

1.模版方法概述在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银

并发编程系列-分而治之思想Forkjoin

我们介绍过一些有关并发编程的工具和概念,包括线程池、Future、CompletableFuture和CompletionService。如果仔细观察,你会发现这些工具实际上是帮助我们从任务的角度来解决并发问题的,而不是让我们陷入线程之间如何协作的繁琐细节(比如等待和通知等)。对于简单的并行任务,你可以使用“线程池+F

数据库顶会 VLDB 2023 论文解读 - Krypton: 字节跳动实时服务分析 SQL 引擎设计

“Krypton源于DC宇宙中的氪星,它是超人的故乡,以氪元素命名”。引言近些年,在复杂的分析需求之外,字节内部的业务对于实时数据的在线服务能力也提出了更高的要求。大部分业务不得不采用多套系统来应对不同的Workload,虽然能满足需求,但也带来了不同系统数据一致性的问题,多个系统之间的ETL也浪费了大量的资源,同时对

区块链(1):区块链简介

区快链是通过密码技术保护的分布式数据库这是比特币背后的技术。本文将逐步带您了解区块链。1区块链BLOCKCHAIN的类的定义区块链有一个区块列表。它从一个单独的块开始,称为genesisblock【创世区块】2区块链BLOCK的类的定义第一个区块叫做Genesis[创世]block,每个块存储以下信息:IndexTim

Android 查看按键信息的常用命令详解

Android查看按键信息的常用命令详解文章目录Android查看按键信息的常用命令详解一、主要命令:二、命令详解1、getevent2、getevent-l3、dumsysinput4、catXXX.kl4、cat/dev/input/eventX5、getevent其他命令6、inputkeyeventXX三、简单

【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。通过插入集合点可以较真实模拟多个用户并发操作。(注意:虽然通过加入集合点可以约束请求同时发送,但不能确保请求同时到达服务器,所以只能说是较真实模拟并发)在JMeter中可以

设计模式再探——宏观篇

目录一、背景介绍二、思路&方案三、过程1.宏观介绍2.目的与意义3.七大原则的定义与边界4.思路由来四、总结五、升华一、背景介绍最近在做产品技术建模的过程中,一些地方刻意用到了设计模式,而一些地方也用到了但是并不是很明确。于是乎就带着这个疑惑来再探设计模式的宏观;也查阅了自己的博文:1.14年有宏观(第一层看山是山,知

热文推荐