详细介绍:[特殊字符]️ Spring Cloud Eureka 三步通:搭建注册中心 + 服务注册 + 服务发现,通俗易懂!

news/2025/10/26 10:08:16/文章来源:https://www.cnblogs.com/tlnshuju/p/19166526

详细介绍:[特殊字符]️ Spring Cloud Eureka 三步通:搭建注册中心 + 服务注册 + 服务发现,通俗易懂!

2025-10-26 10:07  tlnshuju  阅读(0)  评论(0)    收藏  举报

引言:什么是服务注册与发现?

在微服务架构中,我们通常会将一个大型系统拆分成多个小服务,比如:

  • 用户服务(user-service)

  • 订单服务(order-service)

  • 支付服务(payment-service)

这些服务可能会​​相互调用​​,比如订单服务要查询用户信息,就需要调用用户服务。

但问题来了:​​订单服务怎么知道用户服务在哪里(IP + 端口)?​

​这就是服务注册与发现要解决的问题!​


什么是 Eureka?

​Eureka 是 Netflix 开源的服务注册与发现组件,Spring Cloud 对其进行了封装,让我们可以非常方便地搭建和使用服务注册中心。​

简单来说:

  • ​Eureka Server​​:就是“服务登记处”,所有服务都来这里“注册”自己的信息(如 IP、端口、服务名)。

  • ​Eureka Client​​:就是“服务提供者 & 消费者”,它们会向 Eureka Server 注册自己,或者从 Eureka Server 查询其他服务。


✅ 一、Eureka 三步通概述

我们要实现的目标很简单,分为三个步骤:

  1. ✅ ​​第一步:搭建 Eureka 注册中心(Eureka Server)​

  2. ✅ ​​第二步:服务注册(让服务自己“登记”到 Eureka)​

  3. ✅ ​​第三步:服务发现(让一个服务找到另一个服务)​


第一步:搭建 Eureka 注册中心(Eureka Server)

这是我们的“服务登记处”,其他服务都会来这里注册。

1.1 创建一个 Spring Boot 项目

使用 Spring Initializr快速生成,或者用 IDE 创建,选择以下依赖:

  • Spring Web

  • ​Eureka Server​​(在 Spring Cloud Dependencies 下)

或者,如果你本地已有 Spring Boot 项目,直接添加依赖:

Maven 依赖(pom.xml):

org.springframework.cloudspring-cloud-starter-netflix-eureka-server
并确保你引入了 Spring Cloud 的 BOM(版本管理),比如:
org.springframework.cloudspring-cloud-dependencies2022.0.4 pomimport

1.2 开启 Eureka Server

在你的主启动类上加上注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer  //  这个注解表示这是一个 Eureka 服务端
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

1.3 配置 Eureka Server(application.yml 或 application.properties)

application.yml 示例:

server:port: 8761  # Eureka Server 默认端口
eureka:instance:hostname: localhostclient:register-with-eureka: false  # 是否将自己注册到 Eureka(自己是服务器,不需要)fetch-registry: false        # 是否从 Eureka 获取注册信息(自己就是服务器)service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/  # Eureka Server 地址

1.4 启动并访问 Eureka 控制台

启动项目后,访问:

 http://localhost:8761

你会看到 Eureka 的管理界面,默认情况下还没有任何服务注册进来,别急,接下来我们来做“服务注册”。


️ 第二步:服务注册(让服务自己登记到 Eureka)

现在我们来创建一个“用户服务”(user-service),让它向 Eureka Server 注册自己的信息。

2.1 创建用户服务(Spring Boot 项目)

同样使用 Spring Initializr 创建,或者用已有项目,引入以下依赖:

Maven 依赖:

org.springframework.cloudspring-cloud-starter-netflix-eureka-client

org.springframework.bootspring-boot-starter-web

2.2 开启 Eureka 客户端

在主启动类上添加注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient  //  表示这是一个 Eureka 客户端,会向 Eureka 注册
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}
}

2.3 配置服务注册信息(application.yml)

server:port: 8081  # 用户服务端口
spring:application:name: user-service  # 服务名称,很重要!Eureka 通过这个名称识别服务
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/  # Eureka Server 地址instance:prefer-ip-address: true  # 可选,使用 IP 注册而不是主机名

2.4 添加一个测试接口(可选)

@RestController
public class UserController {@GetMapping("/hello")public String hello() {return "Hello from User Service!";}
}

2.5 启动服务,查看 Eureka 控制台

启动 UserServiceApplication,然后​​再次访问 Eureka 控制台:http://localhost:8761

你会看到一个名为 ​​USER-SERVICE​​ 的服务已经注册上去了!

它显示了 IP、端口、运行状态等信息。


第三步:服务发现(一个服务调用另一个服务)

现在,我们来创建一个“订单服务”(order-service),它会通过 Eureka 找到 ​​user-service​​,然后调用它的接口!

3.1 创建订单服务(Spring Boot 项目)

同样引入依赖:

org.springframework.cloudspring-cloud-starter-netflix-eureka-client

org.springframework.bootspring-boot-starter-web

org.springframework.cloudspring-cloud-starter-openfeign  

或者使用 ​​RestTemplate​​(传统方式)也可以。


3.2 开启 Eureka 客户端

主启动类加上:

@SpringBootApplication
@EnableEurekaClient
public class OrderServiceApplication {public static void main(String[] args) {SpringApplication.run(OrderServiceApplication.class, args);}
}

3.3 配置 Eureka 客户端(application.yml)

server:
  port: 8082

spring:
  application:
    name: order-service

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

3.4 通过服务名调用 user-service(重点!)

方法一:使用 RestTemplate(推荐先学这个)

① 配置 RestTemplate 并加上 @LoadBalanced(关键!)
@Bean
@LoadBalanced  //  这个注解让 RestTemplate 具备服务发现能力
public RestTemplate restTemplate() {return new RestTemplate();
}
② 在 Controller 或 Service 中通过 ​​服务名​​ 调用
@Autowired
private RestTemplate restTemplate;
@GetMapping("/call-user")
public String callUserService() {// 注意:这里不是写死 IP,而是服务名!String result = restTemplate.getForObject("http://user-service/hello",  //  通过服务名调用String.class);return "OrderService 调用了 UserService,返回:" + result;
}

✅ 你没有写死 user-service 的 IP 和端口,而是通过 ​​服务名 user-service​​ 去 Eureka 找到它的实际地址,这就是服务发现!

方法二(可选):使用 Feign(更优雅的声明式调用)

  1. 开启 Feign:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients  //  开启 Feign 客户端
public class OrderServiceApplication { ... }

定义一个 Feign 接口:

@FeignClient("user-service")  //  指定要调用的服务名
public interface UserServiceClient {@GetMapping("/hello")String hello();
}

注入并调用

@Autowired
private UserServiceClient userServiceClient;
@GetMapping("/call-user-feign")
public String callUserWithFeign() {String result = userServiceClient.hello();return "通过 Feign 调用 UserService,返回:" + result;
}

3.5 启动并测试

  • 启动:EurekaServer、UserService、OrderService

  • 访问 OrderService 的接口:http://localhost:8082/call-user

你会看到它成功调用了 UserService 的 /hello接口,并返回了内容!

​这就是服务发现的魅力:你不需要关心对方服务跑在哪台机器、哪个端口,只需要通过服务名调用即可!​


✅ 总结:Eureka 三步通,轻松搞定微服务注册与发现!

步骤

操作

说明

​第1步:搭建 Eureka Server​

创建一个 Spring Boot 项目,引入 Eureka Server 依赖,加 @EnableEurekaServer,启动后访问 http://localhost:8761

这是“服务登记中心”

​第2步:服务注册​

创建业务服务(如 user-service),引入 Eureka Client 依赖,加 @EnableEurekaClient,配置 Eureka Server 地址,启动后会自动注册到 Eureka

服务会告诉 Eureka:“我在这儿!”

​第3步:服务发现​

创建另一个服务(如 order-service),通过服务名(如 http://user-service/hello)调用其它服务,结合 RestTemplate 或 Feign,无需关心 IP

服务通过 Eureka 找到目标服务并调用


附加说明

问题

答案

Eureka 用在什么场景?

微服务架构中,服务之间需要动态发现与调用

Eureka Server 可以有多个吗?

✅ 可以集群部署,相互同步注册信息

Eureka 与 Nacos、Consul 有什么区别?

它们都是服务注册与发现组件,Eureka 是 Netflix 出品,Nacos 功能更丰富(注册+配置),Consul 是 HashiCorp 出品

Spring Boot 3 / Spring Cloud 202x 还能用 Eureka 吗?

✅ 可以,但官方推荐使用其它组件如 Nacos 或 Spring Cloud LoadBalancer


写在最后

通过 Eureka 的这三步:

  1. 搭建注册中心 →

  2. 服务注册上去 →

  3. 其它服务发现并调用它

你就掌握了 ​​微服务最核心的机制之一:服务注册与发现!​

​下一步,你可以尝试:​

  • 多个服务互相调用

  • 加入网关(如 Gateway)

  • 使用配置中心(如 Nacos Config)

  • 搭建 Eureka 集群

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

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

相关文章

2025年10月中国办公家具定制公司推荐:口碑排行榜与权威解析

引言与现状分析 当企业准备搬迁、扩租或升级办公空间时,决策者往往面临“时间紧、预算有限、品牌多、标准杂”的四重压力。2025年第三季度,全国办公空间装修备案项目同比增长18.6%,其中67%的项目涉及家具定制,平均…

2025年10月中国办公家具定制公司推荐:主流口碑排行榜与避坑指南

正在准备搬迁新办公室的李总最近很焦虑:预算卡在800元每工位,却希望员工一坐下就能感受到“总部级”质感;采购部同事担心环保报告不过关,被第三方审计打回;行政小赵则反复追问“能不能45天内交付,还要包除甲醛?…

2020 级课前测试试卷-电子商务大数据分析 爬取京东商品评论数据,基于hadoop实现数据分析以及数据可视化

前言: 本文参考诸多文章和视频,在下文中都有说明 以下操作只具有参考性,遇到问题欢迎留言讨论。 具体技术可能因为版本不同而操作不同。 数据采集: 要求Python 编写程序爬取京东手机评论数据,生成Json形式的数据文…

2025年10月暖风机评测指南:客观数据助您精准避坑

引言与现状分析 霜降一过,长江以北夜间室温普遍跌破10℃,南方湿冷叠加无集中供暖,使得“开机三分钟、全屋暖洋洋”成为刚需。京东商智2024取暖季数据显示,暖风机类目销量同比增47%,其中石墨烯发热机型占比由11%升…

芯片落地之道

在现代集成电路(IC)设计中,“物理实现”是从逻辑构想到可制造布局的重要桥梁。在这一阶段,设计不仅要“看得见”,更要“用得好”。今天,就让我们一起探索这一关键环节的奥秘。 1、起点:从逻辑到芯片的“落地” …

关于克服 libwebsockets 库编译时遇到的困难的实用的方法:

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年10月暖风机口碑榜:主流机型对比与选购避坑指南

寒冬将至,客厅、卧室、办公室甚至母婴房都需要一台“升温快、不干燥、噪音低”的暖风机。用户常遇到的痛点集中在三点:一是传统PTC机型热量集中、远端冰凉;二是长时间使用皮肤紧绷、喉咙干痒;三是夜间运行嗡嗡作响…

《React vs Vue:选择适合你的前端框架》 - 指南

《React vs Vue:选择适合你的前端框架》 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

2025 年 10 月展示柜厂家最新推荐,技术实力与市场口碑深度解析

为帮助零售商家精准识别兼具技术实力与良好市场口碑的展示柜厂家,2025 年 10 月,中国商业设备协会联合第三方权威测评机构启动专项评估工作。本次测评覆盖全国 230 余家展示柜生产企业,以 “技术实力” 和 “市场口…

107.计组--四章

107.计组--四章指令系统 终于有个简单的一掌让我整整了 学习周期很短结束一.指令系统概述 指令系统:指令集体系结构(ISA)中最核心的部分 其完整定于了硬件和软件之间的接口 ISA规定内容: 1.指令格式 指令寻址方式 操…

LazyLLM学习:使用提示词工程+RAG创建AI女友

LazyLLM学习:使用提示词工程+RAG创建AI女友 背景 本篇文章为了1024lazyLLM的200元京东e卡 昨天学习了LazyLLM,一款很棒的AI流开发工具,而且想看看他的Langchain有什么不一样的地方,但是捣鼓半天有点迷糊,最后使用…

2025 年 10 月铝合金切削液厂家最新推荐,高性能与可靠性兼具的优质品牌

铝合金因轻量化、高强度特性,广泛应用于航空航天、汽车、3C 电子等领域,但加工时易产生积屑瘤、表面划伤,且铝合金表面氧化膜易被切削液破坏,对切削液的润滑性、清洁性及防氧化能力要求极高。当前市场部分切削液因…

详细介绍:K8s StorageClass配置实战:从入门到精通

详细介绍:K8s StorageClass配置实战:从入门到精通pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

2025 年 10 月硬质合金切削液厂家最新推荐,精准检测与稳定性能深度解析

硬质合金因高硬度、高耐磨性,广泛应用于刀具制造、模具加工、航空航天构件等领域,但加工时切削温度可达 800-1200℃,易导致刀具磨损加剧、工件表面烧伤,对切削液的极压抗磨性、高温稳定性及冷却性能要求严苛。当前…

2025 年 10 月钛合金切削液厂家最新推荐,聚焦高端定制需求与全案交付能力

钛合金因高强度、低密度及优异耐腐蚀性,广泛应用于航空航天、医疗等高端领域,但加工时易产生高温粘连、刀具磨损快等问题,对切削液的极压润滑性、抗高温氧化能力及生物相容性(医疗领域)要求极高。当前市场上多数切…

2025 年 10 月铜材切削液厂家最新推荐,精准检测与稳定性能深度解析

铜材因良好的导电性与导热性,广泛应用于电子、电器、卫浴等领域,但加工时易出现氧化变色、表面精度下降等问题,对切削液的抗铜腐蚀性能、润滑冷却性及环保性要求严苛。当前市场部分切削液因缓蚀剂配比不当,导致铜材…

实用指南:proxy_pass和location匹配路径的拼接逻辑

实用指南:proxy_pass和location匹配路径的拼接逻辑pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

【System Beats!】第四章 处理器体系结构

ISA指令集架构(ISA)是连接计算机软件与硬件的一座桥梁,定义了程序如何与底层硬件进行交互。 ISA的设计覆盖从应用程序到物理芯片的整个软硬件协作过程。 即Application → Compiler → OS → ISA → CPU → Circuit…

申威 SW-64 架构安装 MySQL 8.0.18 (KY10系统 RPM包) 步骤指南

申威 SW-64 架构安装 MySQL 8.0.18 (KY10系统 RPM包) 步骤指南​ 这是一个在采用申威SW-64处理器的服务器上,安装特定版本 ​MySQL 8.0.18 数据库的简单教程。使用的安装包是专门为申威架构和麒麟KY10操作系统适配的R…

java learning

public class Demo {public static void main(String[] args){for(int i = 1988; i< 2019; i++) {if ((i%4==0 && i%100 != 0) || i%400 ==0) {System.out.println(i);}}} }public class Demo1 {public sta…