微服务注册中心 Spring Cloud Eureka是什么?

泻药,人在工位,刚改完 bug,看到"微服务注册中心 + Spring Cloud Eureka"这俩关键词,DNA 动了,必须来答一发。

(文末有彩蛋,不看到最后血亏。)


一、先给结论:

Eureka 就是微服务界的"婚姻介绍所" ,服务 = 单身男女,注册中心 = 红娘,消费者 = 相亲者,调用链 = 谈恋爱 → 结婚 → 离婚(下线)。

一句话:没有红娘,单身狗只能村口尬聊;没有 Eureka,微服务只能 404 自嗨。


二、为什么非得用注册中心?

:我把 IP 写死在配置里,再配个 Nginx 不行吗?
:行,只要你能接受以下彩蛋:

  1. 凌晨 3 点服务扩了个容,运维哥哥手动改 Nginx upstream,手一抖,全站 502;
  2. 新来个实习生,把 192.168.1.3 写成了 192.168.1.38,排查三天,眼睛自带马赛克;
  3. 双十一突然杀疯,临时上了 50 个节点,老板让你 5 分钟搞定,你说"要不我先删库跑路?"

所以,注册中心 = 动态感知 + 自动化 = 保命神器。


三、Eureka 到底怎么当红娘?

  1. 服务启动 → 带着"姓名、年龄、三围(IP、端口、健康检查 URL)"去红娘那里登记;
  2. 红娘把信息记在小本本(ConcurrentHashMap)里,同时同步给闺蜜节点(peer replication);
  3. 消费者每 30 秒拉一次"相亲名单"(delta 增量更新,省流量);
  4. 消费者本地缓存一份, Ribbon 按负载均衡算法挑一个顺眼的,直接约饭(HTTP 调用);
  5. 服务下线(优雅 shutdown)→ 给红娘发"分手短信",否则红娘 90 秒没收到心跳就默认"猝死",直接除名。

四、高可用八卦:

Eureka 自己也是集群,节点之间互相注册、互相复制 ,没有主从,AP 届的扛把子 (CAP 里牺牲 C 保 A)。
场景:网络抖动,机房 1 和机房 2 脑裂,Eureka 集群进入"自我保护"模式------

"老娘最近收到的分手信有点多,怕误杀,先暂停清理,等网络好了再说。"

结果:

  • 服务列表可能短期不一致 ,但不会误踢
  • 消费者本地缓存还能继续撑场面,不会瞬间雪崩
  • 运维同学可以睡个安稳觉,头发 +1

五、代码走读 30 秒:

Server 端

yaml 复制代码
server:
  port: 8761
eureka:
  instance:
    hostname: eureka1
  client:
    register-with-eureka: false   # 自己是红娘,不相亲
    fetch-registry: false
    service-url:
      defaultZone: http://eureka2:8762/eureka/,http://eureka3:8763/eureka/

Client 端

yaml 复制代码
spring:
  application:
    name: user-service
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:8761/eureka/
  instance:
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 30
    lease-expiration-duration-in-seconds: 90

启动类加 @EnableEurekaServer / @EnableDiscoveryClient,完事儿。

(别问我为什么知道,当年 copy 错了注解,排查到怀疑人生。)


六、Eureka 的"黑历史":

  1. 2.x 停更:Netflix 官宣"不玩了",社区一度哭晕;
  2. 替代品内卷
    • Nacos:阿里系,同时支持 DNS + RPC + 配置中心,国产之光;
    • Consul:HashiCorp 出品,带 KV 存储 + 多数据中心,Go 写的高并发;
    • Etcd:K8s 御用,强一致,云原生亲儿子;
  3. Spring Cloud 2022 起官方移除了 Netflix 除 Eureka 外的全套 ,但 Eureka 依旧活得好好的,老项目存量之王,面试八股文常驻嘉宾。

七、 FAQ 时间:

Q1 :Eureka 能跨机房吗?
A:能,但延迟高就自我保护疯狂报警,建议双注册 + 双消费(Nacos 的多数据中心更香)。

Q2 :k8s 里还用 Eureka 是不是傻?
A :k8s 自带 DNS + Service,原生就能做服务发现;但老项目无缝迁移、语言异构、灰度场景,Eureka 依旧能顶半边天。存在即合理,别急着喷

Q3 :怎么优雅下线?
A

  1. 先发 POST /eureka/apps/{appID}/{instanceID}/status?value=OUT_OF_SERVICE
  2. 等流量归零,再 shutdown
  3. 或者直接用 Spring Boot 的 GracefulShutdown + actuator人间清醒

八、彩蛋:

当年某大厂双十一, Eureka 集群 TPS 飙到 4w,监控图直接画出心电图,运维大佬边喝咖啡边吐槽:

"这哪是注册中心,分明是心跳检测仪------服务活着,我也活着;服务挂了,我血压 180。"


九、总结一句话:

Eureka 老矣,尚能饭;新人可上 Nacos,老系统安心躺平。

技术选型没有银弹,合适业务 + 能 hold 住 + 半夜不炸,就是牛逼。


关注我,下一篇聊聊《Nacos 真香现场:从 Eureka 无痛迁移踩坑记》,点个赞再走吧,毕竟头发换来的干货。

相关推荐
一条咸鱼_SaltyFish12 小时前
[Day15] 若依框架二次开发改造记录:定制化之旅 contract-security-ruoyi
java·大数据·经验分享·分布式·微服务·架构·ai编程
2503_9469718614 小时前
【Kernel/Consensus】2026年度第二周内核重构与分布式共识战争基准索引 (Benchmark Index)
网络安全·微服务·重构·数据集·分布式系统·系统内核
程序猿阿伟15 小时前
《Python生态事件溯源与CQRS轻量化落地指南》
大数据·python·微服务
超级小猪15 小时前
007-spring cloud alibaba之Sentinel限流
微服务
喵叔哟16 小时前
18.核心服务实现(下)
数据库·后端·微服务·架构
indexsunny16 小时前
互联网大厂Java求职面试实战:微服务与Spring Boot在电商场景中的应用
java·数据库·spring boot·微服务·kafka·hibernate·电商
wangbing112517 小时前
平台介绍-开放API后台微服务
数据库·微服务·架构
jasnet_u17 小时前
SpringBoot3.x+SpringCloudAlibaba2023+JDK17微服务基础框架搭建
微服务·云原生·架构
一条咸鱼_SaltyFish17 小时前
[Day16] Bug 排查记录:若依框架二次开发中的经验与教训 contract-security-ruoyi
java·开发语言·经验分享·微服务·架构·bug·开源软件
没有bug.的程序员18 小时前
Kubernetes 与微服务的融合架构:调度、弹性、健康检查深度协同
jvm·微服务·云原生·架构·kubernetes·健康检查·弹性伸缩