Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

news2025/6/13 19:09:40

引言:为什么 Eureka 依然是存量系统的核心?

       尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eureka 集群,揭秘服务注册的核心逻辑。


一、服务注册与发现架构解析

在这里插入图片描述

核心角色职责:

  • Eureka Server:注册中心集群(接收/维护服务状态)
  • Service Provider:服务提供者(注册自身信息,发送心跳)
  • Service Consumer:服务消费者(获取服务列表,负载均衡调用)

二、搭建生产级 Eureka 高可用集群

步骤 1:单节点 Eureka Server 搭建(Spring Boot 2.x)

// Maven 依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

// 启动类注解
@EnableEurekaServer  
@SpringBootApplication  
public class EurekaServerApp { }

// application.yml 配置
server:
  port: 8761
eureka:
  instance:
    hostname: eureka1
  client:
    registerWithEureka: false # 不向自己注册
    fetchRegistry: false      # 不从自己拉取列表
    serviceUrl:
      defaultZone: http://eureka2:8762/eureka/ # 指向其他节点

步骤 2:双节点互注册实现高可用

# 节点1配置(eureka-server-1.yml)
eureka:
  instance:
    hostname: eureka1
  client:
    serviceUrl:
      defaultZone: http://eureka2:8762/eureka/ # 指向节点2

# 节点2配置(eureka-server-2.yml)
eureka:
  instance:
    hostname: eureka2
  client:
    serviceUrl:
      defaultZone: http://eureka1:8761/eureka/ # 指向节点1

关键配置项说明:

配置项默认值生产建议值作用
eureka.server.enableSelfPreservationtrue根据网络稳定性调整开启/关闭自我保护机制
eureka.instance.leaseRenewalIntervalInSeconds3010~15心跳间隔(直接影响实时性)
eureka.instance.leaseExpirationDurationInSeconds9025~30服务失效阈值

三、服务注册与发现的底层流程

服务提供者注册核心代码:

// 服务提供者配置
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka1:8761/eureka,http://eureka2:8762/eureka

// 启动时自动注册(Spring Cloud 自动完成)

服务消费者发现流程:

  1. 缓存机制:拉取的服务列表在本地缓存(可配置更新周期)
  2. 负载均衡策略:默认轮询,支持自定义(如基于响应时间加权)
@Bean
public IRule ribbonRule() {
    return new WeightedResponseTimeRule(); // 启用响应时间权重策略
}

四、自我保护机制与心跳配置的工业级调优

1. 自我保护机制(Self-Preservation)

85% 以上服务节点心跳丢失 时触发,Eureka 会保留失效节点(防止因网络抖动导致服务全量下线)

生产环境调优策略

网络稳定环境

:关闭自我保护(避免累积失效节点)

eureka:
  server:
    enable-self-preservation: false 

跨机房部署环境

:调高失效阈值比例

eureka:
  server:
    renewal-percent-threshold: 0.75  # 75%节点失联才触发

2. 心跳检测参数黄金法则

# 服务提供者配置(必须小于Server的失效阈值)
eureka:
  instance:
    lease-renewal-interval-in-seconds: 10    # 每10秒发送心跳
    lease-expiration-duration-in-seconds: 25 # 25秒内未收到心跳则标记失效

# Eureka Server配置(需协调所有客户端)
eureka:
  server:
    eviction-interval-timer-in-ms: 30000     # 每30秒清理失效节点

五、常见故障排查清单

  1. 服务列表不同步
    • 检查 defaultZone 地址(集群节点需互指)
    • 确认防火墙开放 8761/8762 端口
  2. 自我保护导致无效节点残留
    • 访问 http://eureka-server:port/status 查看阈值
    • 手动剔除节点:调用 DELETE /eureka/apps/{serviceId}/{instanceId}
  3. 注册延迟超过 30 秒
    • 调整客户端:eureka.client.registryFetchIntervalSeconds=15

结语:Eureka 的不可替代性

在迁移到新注册中心前,请记住:

“稳定运行的系统,永远不要为追新而重构”

对于需要强一致性的场景(如金融交易系统),Eureka 的 AP 设计(高可用)仍是更安全的选择。保留这套技术储备,将是你的架构护城河


新时代农民工

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2407626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…