微服务注册中心 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 无痛迁移踩坑记》,点个赞再走吧,毕竟头发换来的干货。

相关推荐
麦聪聊数据1 天前
利用SQL2API模式重构微服务中的数据查询层
数据库·sql·低代码·微服务·架构
九皇叔叔1 天前
【03】微服务系列 之Nacos 注册中心(服务注册)
java·微服务·nacos·架构·注册中心·服务注册
what丶k1 天前
微服务稳定性守护者:Sentinel 全面使用指南(从入门到企业级落地)
微服务·架构·sentinel
九皇叔叔1 天前
【04】微服务系列 之 Nacos 注册中心(服务发现)
java·微服务·nacos·服务发现
猿小羽1 天前
领域驱动设计(DDD)在电商系统中的架构落地指南(含中英术语对照与图表)
微服务·架构·ddd·领域驱动设计
小信丶1 天前
@Activate 注解详解:应用场景与实战示例
java·spring boot·后端·spring·spring cloud·微服务·dubbo
未来之窗软件服务1 天前
商业应用(3)建材城商铺租赁管理系统—东方仙盟练气期
大数据·微服务·架构·商业应用·仙盟创梦ide·东方仙盟
编程彩机1 天前
互联网大厂Java面试:从Spring MVC到微服务架构场景解析
java·spring cloud·微服务·分布式事务·spring mvc
夜月蓝汐1 天前
若依微服务版集成阿里云oss
java·阿里云·微服务
编程彩机1 天前
互联网大厂Java面试:从Spring Boot到微服务的技术场景解读
spring boot·微服务·消息队列·java面试·分布式系统