SpringCloud四个注册中心的比较

【云原生】SpringCloud Alibaba 之 Nacos注册中心实战 什么是 Spring Cloud Alibaba,Nacos又是什么,快速入门Naocs! 阅读详情

一、概述

springcloud是一个非常优秀的微服务框架,要管理众多的服务,就需要对这些服务进行治理,也就是我们说的服务治理,服务治理的作用就是在传统的rpc远程调用框架中,管理每个服务与每个服务之间的依赖关系,可以实现服务调用、负载均衡、服务容错、以及服务的注册与发现。
      

如果微服务之间存在调用依赖,就需要得到目标服务的服务地址,也就是微服务治理的服务发现。要完成服务发现,就需要将服务信息存储到某个载体,载体本身即是微服务治理的服务注册中心,而存储到载体的动作即是服务注册。


springcloud支持的注册中心有Eureka、Zookeeper、Consul、Nacos


1.1 eureka

Spring Cloud Netflix 在设计 Eureka 时就紧遵AP原则,Eureka Server 也可以运行多个实例来构建集群,解决单点问题,但不同于 ZooKeeper 的选举 leader 的过程,Eureka Server 采用的是Peer to Peer 对等通信。这是一种去中心化的架构,无 master/slave 之分,每一个 Peer 都是对等的。在这种架构风格中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。每个节点都可被视为其他节点的副本。

在集群环境中如果某台 Eureka Server 宕机,Eureka Client 的请求会自动切换到新的 Eureka Server 节点上,当宕机的服务器重新恢复后,Eureka 会再次将其纳入到服务器集群管理之中。当节点开始接受客户端请求时,所有的操作都会在节点间进行复制(replicate To Peer)操作,将请求复制到该 Eureka Server 当前所知的其它所有节点中。

Eureka的集群中,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。除此之外,Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

·Eureka不再从注册表中移除因为长时间没有收到心跳而过期的服务;

·Eureka仍然能够接受新服务注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用);

·当网络稳定时,当前实例新注册的信息会被同步到其它节点中;

因此,Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使得整个注册服务瘫痪

Eureka保证高可用(A)和最终一致性:

  • 服务注册相对要快,因为不需要等注册信息replicate到其他节点,也不保证注册信息是否replicate成功

  • 当数据出现不一致时,虽然A, B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求A查不到,但请求B就能查到。如此保证了可用性但牺牲了一致性。


1.2 zookeeper

与 Eureka 有所不同,Apache Zookeeper 在设计时就紧遵CP原则,即任何时候对 Zookeeper 的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是 Zookeeper 不能保证每次服务请求都是可达的。从 Zookeeper 的实际应用情况来看,在使用 Zookeeper 获取服务列表时,如果此时的 Zookeeper 集群中的 Leader 宕机了,该集群就要进行 Leader 的选举,又或者 Zookeeper 集群中半数以上服务器节点不可用(例如有三个节点,如果节点一检测到节点三挂了 ,节点二也检测到节点三挂了,那这个节点才算是真的挂了),那么将无法处理该请求。所以说,Zookeeper 不能保证服务可用性。

1.3 consul

Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、windows和Mac OS X)。Consul 内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等),使用起来也较为简单。


Consul 遵循CAP原理中的CP原则,保证了强一致性和分区容错性,且使用的是Raft算法,比zookeeper使用的Paxos算法更加简单。虽然保证了强一致性,但是可用性就相应下降了,例如服务注册的时间会稍长一些,因为 Consul 的 raft 协议要求必须过半数的节点都写入成功才认为注册成功 ;在leader挂掉了之后,重新选举出leader之前会导致Consul 服务不可用。

Consul强一致性(C)带来的是:

  • 服务注册相比Eureka会稍慢一些。因为Consul的raft协议要求必须过半数的节点都写入成功才认为注册成功

  • Leader挂掉时,重新选举期间整个consul不可用。保证了强一致性但牺牲了可用性。


1.4 Nacos

Nacos是阿里开源的,Nacos 支持基于 DNS 和基于 RPC 的服务发现。Nacos除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。一句话概括就是Nacos = 注册中心 + 配置中心。

二、功能异同

这四个组件虽然都实现了注册中心的功能,但是他们的功能和实现方式都有不同的地方,也各有各的优点,单从注册中心方面来比价四个注册中心(如果不了解CAP定理可先阅读下一章节):

2.1 基本实现不同

eureka就是个servlet程序,跑在servlet容器中; Consul则是go编写而成。


2.2 功能支持度不同

三、CAP定理

cap定理

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。参考 阮一峰博客。

·Consistency 一致性:所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

·Availability 可用性:在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)

·Partition Tolerance 容错性:以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。如果在某个分布式系统中数据无副本, 那么系统必然满足强一致性条件, 因为只有独一数据,不会出现数据不一致的情况,此时C和P两要素具备,但是如果系统发生了网络分区状况或者宕机,必然导致某些数据不可以访问,此时可用性条件就不能被满足,即在此情况下获得了CP系统,但是CAP不可同时满足。

因此在进行分布式架构设计时,必须做出取舍。当前一般是通过分布式缓存中各节点的最终一致性来提高系统的性能,通过使用多节点之间的数据异步复制技术来实现集群化的数据一致性。通常使用类似 memcached 之类的 NOSQL 作为实现手段。虽然 memcached 也可以是分布式集群环境的,但是对于一份数据来说,它总是存储在某一台 memcached 服务器上。如果发生网络故障或是服务器死机,则存储在这台服务器上的所有数据都将不可访问。由于数据是存储在内存中的,重启服务器,将导致数据全部丢失。当然也可以自己实现一套机制,用来在分布式 memcached 之间进行数据的同步和持久化,但是实现难度是非常大的

CAP定理关注的粒度是数据,而不是整体的架构。

例如,根据CAP定理将NoSql数据分成了满足CA原则、满足CP原则和满足AP原则的三大类:

·CA-单点集群,满足一致性可用性的系统,扩展能力不强

·CP-满足一致性和容错性系统,性能不高

·AP-满足可用性、容错性的系统,对一致性要求低一些。

 - END -

推荐阅读:

ThreadLocal为什么要使用弱引用和内存泄露问题

JAVA锁优化和膨胀过程

京东研发团队 - 领域驱动设计(DDD)实践

Netflix 如何解决身份验证问题?

24 亿级用户超级 APP 背后的全技术大揭秘

关注我

学习架构知识

互联网后端架构

SCL3400硬件避坑指南:引脚兼容性测试+模式切换异常处理 本文针对村田SCL3400双轴倾角计在实际硬件设计中的常见问题,提供了详细的避坑指南。重点解析了从SCL3300迁移时的引脚兼容性真相,包括SPI时序、电源去耦等关键差异,并深入探讨了模式切换中超量程错误的复现原因与软件容错方案。同时,指导了如何根据应用场景配置低通滤波器,并给出了无自动唤醒功能下的可靠电源与长线SPI通信管理策略。 阅读详情

相关推荐

【2022KaliLinux】openvas/gvm 没有scan configs 或者是 scan config error “XXXXXXXXXXX”

gvm/openvas的configuration的scan config为空

zbossz的学习小分队 3606

SpringCloud服务注册中心

SpringCloudAlibaba框架讲解和使用案例

蓝影铁哥的博客 1973

北京绿盟科技安服实习生面经

记一次绿盟校招技术面经历,人生第一次面试,该说不说还是很紧张的,以下是技术面的一些问题,欢迎各位大佬在评论区补充纠正对于面试的问题,都应该自己下来深度去拓展学习,面试官问的问题刚好可以检测我们自己对某个模块的学习情况,借此更好的进行总结和学习。

qq_51690690的博客 3228

SpringCloud(2) 注册中心Eureka、Nacos

SpringCloud(2) 注册中心Eureka、Nacos

ACGkaka的博客 1174

Unity开源游戏源码精选:17个亲测可运行教学项目

Unity游戏开发中,掌握真实项目结构与工程实践远比熟记API更重要。本文围绕‘Unity开源项目’和‘游戏源码’两大核心概念,解析高质量开源资源的本质特征——结构清晰、逻辑可溯、修改即时反馈。从基础的MonoBehaviour生命周期组织,到进阶的ScriptableObject数据驱动、事件总线解耦,再到架构级的DOTS ECS设计与网络同步模式,技术价值在于将抽象原理落地为可调试、可验证、可迁移的代码范式。适用于新手建立开发直觉、中级开发者突破系统设计瓶颈,以及团队构建可维护框架。所有项目均基于Uni

weixin_31528001的博客 716

【Windows】 解决联想为主的所有自带摄像头(integrate camera)打不开的毛病(特别点名小新、thinkbook、thinkpad、y7000...)

解决联想系列电脑打不开自带摄像头的问题

Iamruzi的csdn博客 3万+

SpringCloud学习之Eureka、Zookeeper、Consul注册中心

SpringCloud Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的 微服务:是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着基本业务进行...

L_Mr_ll的博客 2100

GitLab教程(四):分支(branch)和合并(merge)

命令进行合并时,Git具备一定的智能自动化处理能力:如果一个分支仅修改了文件A,而另一个分支独立地修改了文件B,Git能够无缝整合这些更改,自动完成合并过程——即最终的代码既包含了对A文件的修改也包含了对B文件的修改。同样地,若两个分支虽然都修改了同一个文件,但涉及的是文件中互不重叠的部分,比如一个改动发生在第一行,另一个则在第二行,Git同样能巧妙地自动合并这些非冲突性修改。获取了远程分支的最新变化,或者当你想要合并本地的一个分支到当前分支时,就会用到这个命令。,默认会尝试合并远程分支到当前分支。

TracyCoder的博客 7885

注册中心对比和选型:Zookeeper、Eureka、Nacos、Consul和ETCD

讲解5种常用的注册中心,对比其流程和原理,无论是面试还是技术选型,都非常有帮助。 往期精选: 如何看待程序员35岁职业危机? 2年经验总结,告诉你如何做好项目管理 Java全套学习资料(14W字),耗时半年整理 我肝了三个月,为你写出了GO核心手册 消息队列:从选型到原理,一文带你全部掌握 RPC框架从原理到选型,一文带你搞懂RPC 微服务网关选型,请收下我的膝盖! 更多... 大家好,我是楼仔!对于注册中心,在写这篇...

飞楼踏梦 7687

某银行大数据分析平台之云原生架构

软考架构师论文

doudoudouy的博客 768

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

注册中心大作战:Spring Cloud核心组件选型攻略

在微服务架构中,注册中心扮演着至关重要的角色,它负责服务的注册、发现以及元数据的存储。Spring Cloud 提供了多种注册中心的实现,包括 Nacos、Eureka、Consul 和 Zookeeper。每个组件都有其独特的特性和优势,本文将对这四个注册中心进行对比分析,帮助您为项目选择最合适的注册中心。

weixin_42326548的博客 1462

【2026最新】3分钟Windows极速部署OpenClaw,完整可复制命令+全链路避坑指南

很多新手在Windows环境部署OpenClaw时,总会遇到各种玄学问题:WSL环境配置失败、Docker镜像拉取超时、容器启动后无法访问、权限报错、数据丢失……网上大量教程要么是Linux环境的,要么是早已过时的旧版本配置,照着操作不仅没法3分钟部署,反而要花几小时踩坑填坑。

2601_94871597的博客 493

springcloud四个注册中心的比较

参考文章:springcloud四个注册中心的比较 一、概述 springcloud是一个非常优秀的微服务框架,要管理众多的服务,就需要对这些服务进行治理,也就是我们说的服务治理,服务治理的作用就是在传统的rpc远程调用框架中,管理每个服务与每个服务之间的依赖关系,可以实现服务调用、负载均衡、服务容错、以及服务的注册与发现。 ​ 如果微服务之间存在调用依赖,就需要得到目标服务的服务地址,也就是微服务治理的服务发现。要完成服务发现,就需要将服务信息存储到某个载体,载体本身即是微服务治理的服务注册中心,而存

justlpf的专栏 658

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

springcloud四个注册中心的比较学习记录

文章目录一、概述1.1 eureka1.2 zookeeper1.3 consul1.4 Nacos二、 功能异同2.1 基本实现不同2.2 功能支持度不同 ++++++++++++++++++++++++++++++++++++++++ 原文:https://www.jianshu.com/p/9b8a746e0d90 参考:https://blog.youkuaiyun.com/fly910905/article/details/100023415 http://www.ruanyifeng.com/blog/2

CEVERY的博客 319

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SpringCloud与Dubbo的比较

SpringCloud与Dubbo的比较及异同点

程序大视界 11万+

精雕软件(JDpaint) 5.5 绿色版

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

SpringCloud注册中心

可以发现,这里Nacos的依赖于服务注册时一致,这个依赖中同时包含了服务注册和发现的功能。因为任何一个微服务都可以调用别人,也可以被别人调用,即可以是调用者,也可以是提供者。基于Docker来部署Nacos的注册中心,首先我们要准备MySQL数据库表,用来存储Nacos的数据。服务发现除了要引入nacos依赖以外,由于还需要负载均衡,因此要引入SpringCloud提供的LoadBalancer依赖。接下来,服务调用者就可以去订阅服务了。因此,服务调用者必须利用负载均衡的算法,从多个实例中挑选一个去访问。

小林的博客 1173

SpringCloud Eureka(注册中心)

spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解,另外对于“微服务架构” 也要有一定的了解。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 9万+

SpringCloud框架下的注册中心比较:Eureka与Consul的实战解析

在探讨SpringCloud框架中的两种注册中心之前,有必要回顾单体架构与分布式架构的特点。单体架构将所有业务功能集成在一个项目中,优点是架构简单、部署成本低,但耦合度高。分布式架构则根据业务功能对系统进行拆分,每个模块作为独立服务开发,降低了服务间的耦合,便于升级和扩展,然而其复杂性增加,运维、监控和部署难度也随之提高。在当今快速发展的信息技术领域,软件架构的选择对于系统的性能、可维护性和扩展性起着至关重要的作用。单体架构和分布式架构作为两种常见的架构模式,各自有着鲜明的特点和适用场景。

Xs_20240309的博客 1402

SpringCloud——注册中心

是目前国内使用最广泛的微服务框架。集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

weixin_51991393的博客 3273

springcloud-注册中心

注册中心是微服务架构中的服务发现机制的核心实现。它允许服务在启动时将自身信息(如 IP 地址和端口)注册到注册中心,其他服务通过注册中心查找服务实例,实现服务间的动态通信。Spring Cloud 的注册中心为微服务架构提供了核心支撑,通过动态服务发现和注册,可以显著降低服务间的耦合度,并提升系统的扩展性。本文以 Eureka 为例,详细讲解了注册中心的实现步骤及关键配置,并简单介绍了其他注册中心(如 Nacos)的使用方法。

Flying_Fish_roe的博客 1734

SpringCloud常见服务注册中心

SpringCloud常用注册中心组件:eureka(netfix),zookeeper(java),consul(Go),nacos(java阿里巴巴)

程序员小王的博客 8375

SpringCloud与SpringCloudAlibaba的比较

一. SpringCloud组件的升级与替换 过去两年里,由于SpringCloud Netflix原先的一些组件进入停更维护状态,因此这些组件逐渐被一些新技术所替代 项目 替换前 替换后 服务注册中心 Eureka Zookeeper、Consul、Nacos(推荐) 配置中心 Config Nacos 服务总线 Bus Nacos 负载均衡 Ribbon LoadBalancer 服务调用 Feign OpenFeign、Dubbo 服务网关 Zuul gateway

wanger61的博客 7122

【SpringCloud】Eureka注册中心

Eureka 结构和作用 以及它服务的注册和发现

bit me的博客 1567

【SpringCloud】Nacos注册中心

那是一个悲伤的月份,2018年6月,Eureka 宣布闭源(但是1.x版本仍为活跃项目),同年的 7 月,阿里巴巴站出来了,宣布 Nacos 开源,并快速成为了国内最受关注的开源产品。作为 Eureka 的替代品,阿里巴巴的 Nacos 已经成为了国内开发者的首选。

程序猿教你打篮球的博客 4790

SpringCloud之Eureka服务注册中心

SpringCloud Eureka

light的博客 5823
上一篇: Netflix 如何解决身份验证问题?
下一篇: 京东配运基础数据缓存瘦身实践
qianshanding0708
博客等级 码龄11年 424粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值