什么是 Eureka?
假设你开了一家超级大商场,里面有很多店铺(比如奶茶店、服装店、玩具店等等)。
但是顾客来商场时,不可能一家一家找店铺,所以商场门口会有一个 「店铺导航牌」,上面写着每家店的名字、位置、是否营业。
Eureka 就是这个「导航牌」,它专门记录所有店铺(在技术里叫「服务」)的信息,方便大家快速找到需要的服务。
Eureka 解决了什么问题?
想象一下,如果没有这个导航牌:
- 顾客想喝奶茶,得在商场里瞎逛,一家一家找,可能还会遇到关门的店,浪费时间。
- 新开的店铺没人知道位置,老店铺关门了也没人更新信息,整个商场会乱成一团。
在互联网世界里,一个大型软件(比如淘宝、抖音)会拆分成很多小服务(比如用户登录服务、支付服务、推荐服务等),这些服务就像商场里的店铺。
Eureka 的作用就是:
- 记录所有服务的位置和状态(比如某个服务的网络地址、是否正常运行)。
- 告诉其他服务去哪里找需要的功能(比如支付服务要找用户登录服务时,先查 Eureka 导航牌)。
Eureka 怎么工作?
1. 服务注册(店铺入驻导航牌)
每个服务启动时,就像新开的店铺一样,会主动告诉 Eureka:
「我是奶茶店,地址在商场 3 楼 A 区,现在开门营业啦!」
Eureka 把这些信息记在自己的「小本本」里,形成一个 服务列表。
2. 服务续约(店铺定期报平安)
服务每隔一段时间(比如 30 秒)会告诉 Eureka:
「我还在营业呢,没关门!」
如果某个服务超过一定时间没「报平安」,Eureka 就会认为它「倒闭了」,把它从列表里删掉。
3. 服务发现(顾客查导航找店铺)
当一个服务需要调用另一个服务时(比如用户下单时需要调用支付服务),它会先问 Eureka:
「支付服务在哪里?现在能访问吗?」
Eureka 会返回支付服务的最新地址和状态,这样就能准确找到对方了。
4. 自我保护模式(防止导航牌误删正常店铺)
如果商场突然断网了,很多店铺暂时没法「报平安」,但其实它们还在营业。
这时候 Eureka 会开启 自我保护模式:不轻易删除列表里的服务,避免误判。
等网络恢复后,再重新更新状态。
为什么需要 Eureka?(对比传统方式)
如果不用 Eureka,服务之间得互相记住对方的地址(比如硬编码写死在代码里),就像每家店铺都要记住其他所有店铺的位置,非常麻烦!
- 地址变了怎么办? 比如某个服务搬家到新地址,所有依赖它的服务都得改代码,成本极高。
- 服务挂了怎么办? 无法自动发现故障,导致整个系统崩溃。
而有了 Eureka,就像有了一个「智能导航中心」:
- 服务地址变更时,自己更新导航牌即可,其他服务自动获取最新信息。
- 自动剔除故障服务,保证调用的都是「存活」的服务。
总结:Eureka 是「服务界的导航地图」
- 核心功能:记录服务信息、帮服务找到彼此、自动管理服务状态。
- 适合场景:大型软件拆分成多个小服务时(微服务架构),需要一个「中间人」来协调服务之间的通信。
- 类比现实:就像外卖平台的商家列表 —— 商家入驻时登记信息,用户下单时平台告诉骑手商家地址,商家歇业时自动从列表移除。