服务注册与发现----Eureka

服务注册与发现的详细概述和核心功能请参考上篇博客:https://blog.youkuaiyun.com/Simba_2/article/details/155570100?spm=1011.2124.3001.6209

一、Eureka 详解

Eureka 是 Netflix 开源的服务注册与发现组件,基于 REST 通信,采用客户端-服务器架构。其设计遵循 AP 原则,在网络分区发生时优先保障系统的可用性,允许存在短时的数据不一致。另外客户端-服务器架构对应两类角色,如下:

  • Eureka Server:作为服务注册中心,负责记录服务信息心跳监控
  • Eureka Client:内嵌于各个微服务中,负责服务注册服务续约失效剔除服务发现

         ①Provider:服务提供者

                 注册自己的信息到EurekaServer;

                 每隔30秒向EurekaServer发送心跳;

         ②Consumer:服务消费者

                  根据服务名称从EurekaServer拉职服务列表;

                  基于服务列表做负载均衡,选中一个微服务后发起远程调用;

Server 与 Client 之间通过 REST API 进行通信,数据默认以 JSON 格式传输。

二、核心功能

1. 服务注册

微服务实例在启动时,自动向 Eureka Server 发送其元数据(包括服务名、IP地址、端口及健康状态等)进行注册,宣告自身可被调用。

2. 服务续约与失效剔除

注册后,客户端每30秒向 Server 发送一次心跳以维持租约;若Server在90秒(三个心跳周期)内未收到续约,则会判定该实例失效,并将其从注册列表中安全剔除,完成服务下线的闭环。

3. 服务发现

客户端会定期(默认30秒) 从 Server 拉取并全量缓存服务注册表;当需要调用其他服务时,直接通过服务名从本地缓存中查询实时的、健康的实例列表,实现解耦的透明调用。

4. 自我保护机制

这是 Eureka 的关键容错特性。当短时间内丢失大量客户端心跳(通常因网络分区),Eureka 会进入保护模式,暂停剔除所有疑似失效的实例。这有效防止了因短暂网络波动而导致的服务被大规模误删,优先保障了注册信息的可用性

5. 多区域部署

支持将服务实例按逻辑或物理位置划分为不同的区域。客户端可配置调用策略,优先路由至同区域的服务,以实现就近访问、降低延迟,并为跨区域的容灾部署提供基础。

三、Eureka使用步骤

1. 搭建注册中心 EurekaServer

①引入eureka-server依赖

②添加@EnableEurekaServer注解

③在application.yml中配置eureka地址

2. 服务注册 Provider

①引入eureka-client依赖

②在application.yml中配置eureka地址

③提供者提供API 接口

3. 服务发现 Consumer

①引入eureka-client依赖(同上)

②在application.yml中配置eureka地址(同上)

③给RestTemplate添加@LoadBalanced注解

④消费者远程调用提供者的服务

四、调用过程注意事项

  • 客户端需配置正确的 eureka.client.serviceUrl.defaultZone,指向可用的 Eureka Server 地址。
  • 服务消费者应实现负载均衡策略(如 Ribbon),避免单点调用故障。
  • 高并发场景下建议调整客户端缓存刷新间隔(eureka.client.registryFetchIntervalSeconds)。
  • 生产环境建议部署至少两个 Eureka Server 实例,组成集群互相注册以实现高可用。
  • 服务下线时应主动调用 shutdown 方法,避免服务残留问题。

五、Eureka与nacos对比

1. 共同点
  • 都支持服务注册和服务拉取
  • 都支持服务提供者心跳方式做健康检测
2.区别
特性EurekaNacos
一致性模型AP,高可用优先AP + CP,可切换,更灵活
功能范围服务注册与发现服务注册发现、动态配置、元数据管理
健康检查客户端心跳,时效慢(~90秒)TCP/HTTP/心跳,时效快(秒级)
易用性与生态与Spring Cloud Netflix集成深,但已停更与Spring Cloud Alibaba集成,生态活跃,持续更新

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨中云~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值