微服务注册中心 Nacos 比 Eureka的优势

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 微服务注册中心 Nacos 比 Eureka的优势

为什么要使用注册中心

有使用过ip:port地址直接调用服务的开发经历么?该段痛苦的经历在此处省略500字......,该种方式的缺点:

  • 需要手动的维护所有的服务访问ip地址列表。
  • 单个服务实现负载均衡需要自己搭建,例如使用nginx负载均衡策略,或者基于容器化多实例部署单个服务,在实例之间做负载均衡。
  • 服务提供者:向注册中心根据服务名称提供服务访问的ip:port以及其他信息。
  • 注册中心:根据服务名称,存储对应的ip:port以及其他信息。
  • 服务消费者:根据服务名向注册中心获取调用服务的ip:port以及其他相关的信息集合,然后根据负载均衡策略获取最终的服务器ip:port访问地址。

使用springcloud时,常用的是eureka和nacos作为注册中心,如何选择呢 ?(nacos eureka项目案例fhadmin.cn)

服务提供者

主动向注册中心注册,续约,下线,获取注册表。服务注册成功后,定时向注册中心发送心跳,保证服务不被剔除。

注册中心

存储服务实例,定时扫描注册表,剔除过期的服务实例。通过同步复制方式实现高可用,先获取注册表,然后再向其他注册中心注册自己,属于AP模式。在实际项目中,会根据环境,例如dev,test,prod配置不同的注册中心集群,如果不同的项目使用统一的注册中心,只能根据服务名称做区分。

重点介绍一下Eureka自我保护机制。如果出现大量的服务实例过期被剔除,则注册中心进入自我保护模式,注册表中信息不再被剔除,目的是提高eureka的可用性。默认情况下,统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期。

讲述一次惨痛的上线经历,错误描述如下:

当时服务部署成功,在Eureka注册中心已经显示该服务已经注册成功,但是,前端请求经过网关再转发到该服务时,一直就没有反应,服务调用一直不成功。nginx转发,网关转发都在确认问题到底发生在哪里,几经折磨,在网关直接通过ip地址转发到上线的服务,快速的解决该问题。

后续,复盘,应该Eureka的自我保护机制,导致的问题。在注册中心注册的服务是一个不可用的服务,但是,由于自我保护机制,Eureka Server没有将无效的服务剔除。

后续的解决方法是,设置enableSelfPreservation=false关闭自我保护机制,把renewalPercentThreshold 比例降低,在Eureka Server端,如果出现无效的服务就会将该服务剔除。

nacos注册中心

nacos是springcloud的扩展,注册中心功能通过NacosDiscoveryClient 继承DiscoveryClient,在springcloud中,与Eureka可以无侵入的切换。注册中心可以手动剔除服务实例,通过消息通知客户端更新缓存的实例信息

nacos重点需要了解下其领域模型Nacos 数据模型 Key 由三元组唯一确定, Namespace命名空间,分组group,service服务。详情可以参考官网Nacos 架构。

nacos与Eureka相比优势如下:

  • nacos在自动或手动下线服务,使用消息机制通知客户端,服务实例的修改很快响应;Eureka只能通过任务定时剔除无效的服务。
  • nacos可以根据namespace命名空间,DataId,Group分组,来区分不同环境(dev,test,prod),不同项目的配置。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
运维 监控 API
后端开发中的微服务架构:优势与挑战
【8月更文挑战第16天】在软件开发的世界中,微服务架构已经成为一种流行和强大的设计模式。它通过将应用程序分解为一组小型、独立的服务来促进敏捷开发和快速迭代。本文旨在深入探讨微服务架构的核心优势以及实施过程中可能遇到的挑战,帮助读者更好地理解这一现代软件设计方法。
|
2月前
|
运维 监控 持续交付
后端开发中的微服务架构:优势与挑战
【8月更文挑战第20天】随着云计算和容器化技术的发展,微服务架构已经成为现代软件开发中的一种流行趋势。本文将探讨微服务架构的核心优势以及在实施过程中可能遇到的技术和组织挑战。我们将从微服务的定义入手,进而深入分析其设计哲学、技术特性以及在实际应用中的效益与问题。
164 56
|
16天前
|
Kubernetes Nacos 容器
nacos注册不上
我正在使用开源的Nacos,并已在Kubernetes中部署了Nacos服务,通过端口映射可在集群外访问Nacos控制台。Kubernetes使用NodePort类型暴露了8848、9848、9849、7848和9555端口,但在尝试注册时遇到问题,出现“Client not connected, current status: STARTING”的错误,导致启动失败。
|
27天前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
2月前
|
Cloud Native Java Nacos
微服务注册中心-Nacos概述
该博客文章提供了对Nacos的全面概述,包括其基本介绍、与Spring Cloud集成的优势、主要功能以及如何在Spring Cloud Alibaba项目中作为服务注册中心使用Nacos。文章解释了Nacos是一个动态服务发现、配置管理和服务管理平台,支持服务发现、健康监测、动态配置、DNS服务和元数据管理。还介绍了如何下载和启动Nacos服务器,以及如何将微服务注册到Nacos中,包括修改pom.xml文件引入依赖、配置application.properties文件和使用@EnableDiscoveryClient注解开启服务注册发现功能。
微服务注册中心-Nacos概述
|
24天前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
|
2月前
|
负载均衡 Java Nacos
EureKa详解:微服务发现与注册的利器
EureKa详解:微服务发现与注册的利器
|
2月前
|
Kubernetes Nacos 微服务
微服务注册与发现的原理与实现
微服务注册与发现的原理与实现
|
2月前
|
运维 监控 数据库
后端开发中的微服务架构:优势与挑战
【8月更文挑战第17天】在软件开发领域,微服务架构已成为构建复杂系统的重要方法。它通过将应用程序拆分成小型、独立的服务,提高了系统的可维护性、可扩展性和灵活性。然而,这种架构风格也带来了新的挑战,如服务间的通信、数据一致性和运维复杂性等。本文将深入探讨微服务架构的优势和面临的主要问题,并分析如何在实际应用中平衡这些利弊。
|
2月前
|
存储 缓存 Java
Eureka原理与实践:深入探索微服务架构的核心组件
在微服务架构日益盛行的今天,服务之间的注册与发现成为了保证系统高可用性和灵活性的关键。Eureka,作为Netflix开源的服务注册与发现框架,凭借其简单、健壮的特性,在微服务领域占据了举足轻重的地位。本文将深入剖析Eureka的原理,并通过实践案例展示其在实际项目中的应用,以期为开发者提供一个高端、深入的视角。