在微服务架构中,服务之间不再是固定连接,而是高度动态、短暂存在的。如何让每个服务准确找到彼此,是分布式系统治理的核心问题之一。服务注册发现机制,正如神经系统之于人体,承担着连接、协调、感知变化的关键角色。
本文将围绕 Netflix 开源的服务注册发现组件 Eureka 展开,深入剖析其原理,并以 Spring Cloud 实战为导向,帮助你掌握服务治理的第一步。
一、为什么需要服务注册发现?
在单体架构中,服务调用是简单的本地方法调用。但微服务的分布式特性彻底改变了游戏规则:
// 单体架构:直接调用内部模块
OrderService.orderCreate();// 微服务架构:需跨网络调用独立进程
http://192.168.1.101:8080/order/create
当服务实例动态变化时,传统方式面临三重暴击:
- 实例动态性:Kubernetes自动扩缩容导致IP随时变化
- 故障处理:实例宕机后调用方无法自动感知
- 配置地狱:手工维护成百上千个IP端口
注册中心的本质是分布式电话簿:
- 服务注册:实例启动时向中心上报自身信息(IP/端口/健康状态)
- 服务发现:调用方实时查询可用实例列表
- 健康监控:自动剔除故障节点(心跳检测)
正是这种动态协调能力,使微服务架构具备弹性伸缩和自愈能力的核心特性。
二、认识Eureka:Netflix的轻量级解决方案
Eureka 是 Netflix 开源的一款服务注册与发现组件,专为弹性云环境设计。它在微服务体系中扮演“服务目录”的角色,记录每个服务的可用实例信息,支持注册、查询、剔除、续约等基本能力。