服务注册发现技术对比

服务注册和发现组件的详细对比与选型建议:Eureka、Consul、ZooKeeper、Etcd 和 Nacos Eureka:Netflix 开源,Spring Cloud 生态系统中默认的服务注册中心,采用客户端-服务器架构。Consul:HashiCorp 开发,提供服务发现、健康检查、键值存储等功能,基于 Raft 协议保证数据一致性。ZooKeeper:Apache 基金会项目,提供分布式数据存储、配置管理等功能,利用树形数据结构存储服务信息。Etcd:CoreOS 开发,分布式键值存储系统,基于 Raft 协议实现高可用、强一致性数据存储。Nacos。 阅读详情

技术对照表

CAP模型

CAP 这3个字母代表:

  • Consistence(一致性)
  • Availability(可用性)
  • Partition Tolerance(分区容错性)

在一个分布式系统中,这3者不可兼得。

由于网络的原因,分布式系统中 P 是必备的,意味着只能选择 AP 或者 CP。

CP 代表数据一致性是第一位的,AP 代表可用性是第一位的。

他们4个只有 Eureka 是 AP 的,Eureka 在数据不一致的情况下也可以使用,只要数据最终一致即可。

如果想更多的了解 CAP 可以参见:

架构设计中的 CAP 和 BASE 理论

数据一致性

ZAB 是 zookeeper 的原子广播协议,基于 Paxos 算法改的。

Raft 是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。

这两个算法都没毛病,都可以实现分布式一致性,只是实现方式不同。

Eureka 选择的是 AP,不要求强一致性,自然没有使用数据一致性算法。

Paxos 和 Raft 参考资料:

分布式一致性算法 Paxos

分布式一致性算法 Raft

多数据中心

就是多机房,只有 Consul 支持。

zookeeper 不支持多数据中心是指,如果你跨多个机房部署了一套 zookeeper,一旦出现网络划分,那么就不可用了。

Consul 是通过 Gossip 协议实现的。

Gossip 协议中的消息会以一传十、十传百的指数级速度在网络中快速传播。

网络中任何节点的异常都不会影响 Gossip 消息传播,分布式系统容错性极强。

Gossip 协议是去中心化的,所有节点对等,节点无需知道整个网络状况,只要网络是连通的,任意一个节点就可以把消息散播到全网。

Watch

Zookeeper 的 watch 实现比较简单,就是 TCP Ping。

Long Polling(长轮询)是拉模式,客户端每隔一段时间请求拉取一次数据。

客户端发起 Long Polling,如果服务端没有数据,会等待,直到服务端有数据,或者等待到超时,返回后,客户端会再次发起 Long Polling。

多语言支持

Zookeeper 多语言客户端比较成熟。

Consul 支持 DNS 比较有意思,如果你第一次看到可能不太理解。

DNS 方式允许应用程序使用服务发现,而无需与Consul进行任何高度集成。

例如,不需要向 Consul 发送 HTTP 请求,可以使用 DNS 服务器直接通过名字查找,如
redis.service.us-east-1.consul,就会自动转查找位于 us-east-1 这个数据中心提供 redis 服务的节点。

使用DNS的方式可以在程序中集成一个DNS解析库,也可以自定义本地的DNS Server。

自定义本地 DNS Server 是指将 .consul域的请求全部转发到 Consul Agent。

服务健康检查

心跳方式比较简单,客户端上报自己的存活状态即可。

但存活不代表健康,例如一个应用的服务层没问题,但数据库连接故障了,那么就无法正常提供服务,这就是存活但不健康。

Eureka 支持服务自定义健康检查逻辑。

Consul 支持的很全面,可以配置服务自定义的健康检查接口地址,还有完善的管理界面,可以查看所有服务和节点的健康检查状态。

SpringCloud之Eureka,Consul,nacos服务注册与发现对比 Eureka:Netflix 开源的服务注册与发现组件,基于 REST 协议,AP 系统(高可用、分区容忍)。Consul:HashiCorp 开源的分布式服务发现与配置管理工具,支持多数据中心,CP 系统(强一致性)。Nacos:阿里巴巴开源的服务发现与配置管理平台,支持 AP 和 CP 模式切换,集成动态配置功能。轻量级快速开发:Eureka 简单易用,但功能有限。多数据中心与强一致:Consul 是跨云场景的理想选择。全功能一体化:Nacos 更适合需要服务与配置联动的复杂系统。 阅读详情

相关推荐

技术分享| 分布式系统中服务注册发现组件的原理及比较

文章总结了分布式系统中常用的服务注册发现解决方案,基于Zookeeper、Etcd、Consul框架方案核心思想是通过一组实例(3个或者5个)提供线性强一致性(Linearizable)分布式高可用Key-Value存储服务,将Key-Value存储作为服务注册中心,当相关Key发生变化时监视器能及时通知客户端,通知机制配合服务健康检查当有服务实例启动或故障时客户端能及时感知服务拓扑变化以实现智能路由,从实现方式上看它们可以看作是中心化的服务发现方案。

anyRTC的博客 1491

Eureka vs. Zookeeper:微服务注册与发现的对比

Eureka是Netflix开源的服务发现组件,主要用于AWS云环境中的服务注册与发现。它是Spring Cloud生态系统中的核心组件之一,特别适合用于构建基于REST的微服务架构。Eureka采用了AP设计理念,强调高可用性和分区容忍性。Eureka和Zookeeper都是优秀的服务注册与发现工具,但它们的设计理念和适用场景有所不同。Eureka强调高可用性和分区容忍性,适合用于云环境中的微服务架构;而Zookeeper强调一致性和可靠性,适合用于需要强一致性的分布式系统。

weixin_39033358的博客 837

Java Spring 框架的服务发现与注册技术选型与实践

随着微服务架构的普及,服务发现与注册成为分布式系统的基础设施之一。本文旨在为Java开发者提供Spring框架下服务发现与注册的全面指南,涵盖技术选型、原理分析、实践案例和性能优化等方面。本文首先介绍服务发现的基本概念,然后深入分析Spring Cloud支持的主流服务发现组件,接着通过实际案例展示具体实现,最后讨论选型建议和未来趋势。服务注册(Service Registration): 服务实例启动时向服务注册中心注册自己的网络位置信息服务发现(Service Discovery)

AI开发架构师 771

服务注册与发现总结

本文对比了主流的五种服务注册与发现中间件,可为项目方案选择作为参考。另外讲解了服务注册与发现的核心功能,便于读者充分解服务注册与发现的原理

weixin_38597669的博客 2166

Dubbo和Spring Cloud微服务架构对比——服务注册和发现.docx

Dubbo和Spring Cloud微服务架构对比——服务注册和发现,精心收集对比,绝对干活,对初学者及有一定使用的基础的绝对使用。

Mac本地部署OpenClaw:从零搭建企业级知识库AI助手

大语言模型(LLM)作为当前人工智能的核心技术,通过其强大的自然语言理解和生成能力,正在深刻改变信息交互方式。其原理是基于海量数据训练的深度神经网络,能够根据上下文预测并生成连贯文本。这一技术的核心价值在于,它能够作为智能中枢,理解和执行复杂指令,从而将通用AI能力转化为解决特定业务问题的生产力。在工程实践中,通过AI Agent框架(如OpenClaw)将LLM与外部工具和知识系统连接,是实现其价值的关键。这涉及到**本地部署**与**私有化**部署,以确保数据安全与成本可控。具体应用场景包括企业知识库问

weixin_33402252的博客 380

服务发现的基本原理与比较: Eureka,Consul,zookeeper

前言: 在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册于发下组件时必不可少的。在传统的服务架构中,服务的规模处于运维人员可控范围内。当部署服务的多个节点时,一般使用静态配置信息设定。在微服务应用中,服务实例的数量和乌昂罗地址都是动态变化的,这对系统运维提出了巨大的挑战。因此动态的的服务注册与发现显得尤其重要。 解决的问题 在一个分布式系统中,服务注册发现逐渐主要解决俩个问题:服...

qzqanzc的博客 1098

别再为CAD和GIS数据对不上而头疼了!一份完整的ArcGIS for AutoCAD坐标系定义与数据套合指南

本文详细介绍了如何通过ArcGIS for AutoCAD插件解决CAD与GIS数据坐标系不匹配的问题,实现数据的精准套合。文章从坐标系冲突分析、插件核心功能解析到五步标准化工作流,提供了完整的解决方案,帮助工程师和设计师提升跨平台协作效率。

weixin_42531886的博客 217

13张图解分布式系统服务注册与发现机制,给你整明白

在微服务架构或分布式环境下,服务注册与发现技术不可或缺​,这也是程序员进阶之路必须要掌握的核心技术之一,本文通过图解的方式带领大家轻轻松松掌握。 一、引入服务注册与发现组件的原因 先来看一个问题,假如现在我们要做一个商城项目,作为架构师的你应该怎样设计系统的架构?你心里肯定在想:这还不容易直接照搬淘宝的架构不就行了。但在现实的创业环境中一个项目可能是九死一生,如果一开始投入巨大的人力和财力,一旦项目失败损失就很大。 作为一位有经验的架构师需要结合公司财力、人力投入预算等现状选择最适合眼下的架.

华科硕士,大厂打工中。编程问题咨询,请私我 5901

【数据集处理】DroneVehicle数据集处理方法

DroneVehicle数据集由无人机采集的56,878张图像组成,其中一半是RGB图像,其余为红外图像。作者为这五个类别制作了带有定向边界框的丰富注释。

qq_44102942的博客 5052

西门子TM PosInput1模块SSI编码器配置与速度测量实战

本文详细介绍了西门子TM PosInput1模块配置SSI绝对值编码器的实战步骤,涵盖硬件组态、工艺对象配置、编程实现与速度测量优化。重点解析了高分辨率编码器的数值处理技巧和常见调试问题,帮助工程师快速实现高精度位置与速度检测,提升自动化项目效率。

emacs5lisp的博客 340

consul集群安装以及服务的注册和发现

consul集群安装 用springboot写了几个项目,leader说服务可以试着向consul上边迁移,于是搭建了consul的测试集群,至于为什么不用eureka,可以看下边这个表 Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳 ...

maoyeqiu的专栏 1万+

仿真学习系列(四十二):Sigrity仿真之走线阻抗和耦合检查

在高速电路设计中,走线的阻抗和信号线之间的耦合是影响信号完整性的重要因素。设计中可能会出现多种情况,导致阻抗变化或不匹配,例如线宽的变化、跨层分割等。传统的人工检查方法常常不够高效且易忽视细节。借助仿真软件,可以快速定位问题区域,并进行精确分析,从而有效避免或减少信号反射和串扰带来的影响。

案例文章,高速信号 425

如何在Java应用中实现服务发现与注册:Eureka与Consul的实战应用

本文介绍了如何在Java应用中使用Eureka和Consul进行服务注册与发现的实战应用。通过这些示例代码,相信你可以更好地理解服务注册与发现的具体实现。大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务发现与注册是一个非常重要的部分。今天我们来聊聊如何在Java应用中使用Eureka和Consul进行服务发现与注册。Eureka是Netflix开源的一个服务发现框架,它提供了服务注册和发现的功能。下面是如何在Java应用中集成Eureka的实战代码。

技术研究中心 1848

【ComfyUI】Wan2.2 Animate 动作迁移重绘视频生成

本文介绍了一个基于ComfyUI的Wan2.2 Animate视频生成工作流,通过动作迁移和视频重绘技术实现高质量视频创作。该系统融合视频帧重建、动作迁移、图像重绘和音频合成等多种AI技术,核心采用Wan2.2 Animate 14B_fp8模型配合专属VAE解码器和LoRA微调模块。工作流程包含输入预处理、模型加载、特征提取、动作采样生成、解码输出和资源清理六个阶段,通过WanVideo系列节点实现从图像/视频输入到最终视频输出的完整处理。系统支持对参考图像进行视觉特征提取和嵌入生成,结合文本/动作嵌入进

Mr数据杨 2451

CATIA文件的网页预览方案

CATIA是工业设计中广泛使用的专业软件,产出`.CATPart`或 `.CATProduct`等文件类型,当资产数量较大时,我们希望快捷预览这些文件,就有了`CATPart`文件网页预览的需求 但我们知道,网页上无法直接渲染`CATPart`这种复杂的文件, CATIA生成的文件(如 `CATPart` 和 `CATProduct`)不仅包含三维几何信息(例如点、线和曲面),还涵盖了丰富的元数据与专业设计特征。 那有没有办法,能实现CATIA文件在网页上的便捷预览?

weixin_44211633的博客 1452

13张图彻底搞懂分布式系统服务注册与发现原理

在微服务架构或分布式环境下,服务注册与发现技术不可或缺,这也是程序员进阶之路必须要掌握的核心技术之一,本文通过图解的方式带领大家轻轻松松掌握。引入服务注册与发现组件的原因先来看一个问题,...

Java笔记虾 720

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

服务注册与发现

本系列所有文章均为个人学习笔记所需,所以过多要求文章思路、对每段文字精雕细琢,随心所欲地记录想到的每个知识点,用自己最通俗的语言!

usenameR的专栏 1881

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Java服务注册与发现核心原理】:深入剖析主流实现方案及最佳实践

掌握Java服务注册发现实现的核心原理与最佳实践,解决微服务架构中的动态服务管理难题。涵盖ZooKeeper、Eureka、Nacos等主流方案选型、适用场景及高可用设计,助力系统解耦与弹性扩展。值得收藏的实战指南,点击了解实现细节。

CodePulse的博客 1098

分布式系统服务注册与发现原理 & SpringCloud 学习笔记

分布式系统服务注册与发现原理 & SpringCloud 学习笔记

m0_47396773的博客 1005

Java微服务16-Java服务注册与发现:构建高可用服务体系

本文介绍了Java微服务架构中的服务注册与发现机制,重点讲解了Eureka的实现方案。服务注册与发现通过中心化注册表动态管理服务实例,解决了微服务环境下服务定位和健康检查问题。文章详细阐述了Eureka的AP架构设计,包括如何搭建Eureka Server集群、配置服务注册(Eureka Client)以及通过RestTemplate和Feign实现服务调用。Eureka作为Spring Cloud生态的核心组件,其高可用特性和简单配置使其成为构建弹性微服务系统的理想选择。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

微服务架构中,常见的服务注册与发现的技术组件一览

在微服务架构中,服务注册与发现是核心功能之一,它允许微服务实例动态注册自身并被其他服务发现,以便进行相互通信。

www_tlj的专栏 1115

python 微服务 etcd_etcd套路(十一)微服务架构之理解服务注册与发现

今天博友私信问我看我的etcd真的很难理解什么是微服务的服务注册与发现,当然也许这涉及到架构,接触的比较少听起来感觉牛逼哄哄非常嘎达上,但实际上也没什么!今天我们来详细聊聊到底什么是服务注册与发现!天下文章一大抄抄抄抄抄抄!RPC远程过程调用中,存在2个角色,一个服务提供者、另一个服务消费者。那如何让调用者知道,存在哪些服务可以调用呢?即如何让别人使用我们的服务呢?有同学说很简单嘛,告诉使用者服务...

weixin_40006133的博客 204
上一篇: 比Redis还快5倍的中间件,为啥这么快?
下一篇: 生产事故!线上四台机器同一时间全部 OOM
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值