跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

基于 Java 和 Spring Boot 构建微服务架构:服务注册与发现实战

微服务架构将应用划分为独立服务。基于 Java 和 Spring Boot 框架,利用 Spring Cloud Eureka 实现服务的注册、发现与治理。通过配置 Eureka Server 及客户端,结合 Feign 或 RestTemplate 完成服务间调用。文中提供了从项目创建、依赖引入、配置文件编写到代码实现的完整步骤,并包含用户服务与订单服务的实际案例演示,帮助开发者理解微服务通信机制及搭建流程。

Stephaine Walsh发布于 2026/3/16更新于 2026/10/2589 浏览
基于 Java 和 Spring Boot 构建微服务架构:服务注册与发现实战

初入微服务架构

微服务架构是一种将单一应用程序划分为一组小的、独立服务的架构风格。每个微服务负责特定功能,并通过轻量级的协议(如 HTTP REST)进行通信。

在当今快速发展的 Java 开发领域,微服务架构因其灵活性、可扩展性及快速迭代能力而受到广泛关注。

技术栈选型

在实战项目中,使用 Spring Boot 来搭建微服务架构,同时利用 Spring Cloud 来处理服务的注册、发现和治理。

当时选择的是 Java8 + Spring Boot 能快速构建微服务,减少配置麻烦,以及使用 Spring Cloud 提供的工具,比如 Eureka、Ribbon、Hystrix 等组件,让服务管理变得简单。

其它的细节这里就不具体展开了,主要围绕本篇文章 Eureka 注册中心进行展开。

服务注册与发现

在微服务架构中,服务注册与发现是实现服务间通信的基础,下文使用项目中的 Spring Cloud Eureka 来复现这一功能。

3.1 Eureka Server 配置

  1. 引入依赖

在这里插入图片描述

  1. 在 application.yml 文件配置

在这里插入图片描述

  1. 在主类中添加 @EnableEurekaServer 注解启动 Eureka Server

在这里插入图片描述

3.2 微服务配置

  1. 引入依赖

在这里插入图片描述

  1. 在 application.yml 文件中配置 Eureka 客户端

在这里插入图片描述

  1. 在主类中添加 @EnableEurekaClient 注解启动 Eureka 客户端

在这里插入图片描述

3.3 用户服务接口

  1. 项目一个大模块下小模块的接口示例。

在这里插入图片描述

服务调用

4.1 服务配置

使用声明式 HTTP 客户端 Feign,来简化 RESTful 服务的调用,使代码更为简洁。

  1. 引入依赖

在这里插入图片描述

  1. 开启客户端

在这里插入图片描述

  1. Eureka 配置

在这里插入图片描述

4.2 服务接口

其中一个获取登录账户接口

在这里插入图片描述

微服务架构测试

在完成上述配置后,可以通过启动所有的微服务来测试微服务架构。访问 Eureka Dashboard(本地部署是在 http://localhost:8082)可以看到已注册的服务。

后续可以通过 HTTP 客户端(如 Postman)发送请求来进行测试。

实际案例

使用两个简单的微服务来实现。一个用户服务和一个订单服务。用户服务将注册到 Eureka 服务器上,而订单服务将通过 Eureka 发现用户服务并进行调用。

6.1 创建 Eureka Server

  1. 创建 Spring Boot 项目,选择相应的依赖项。
  2. 配置 Eureka Server,在 application.yml 中添加如下配置:
server:
  port: 8082
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
  1. 在主类中添加 @EnableEurekaServer 注解:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

6.2 创建用户服务

  1. 创建 Spring Boot 项目,选择相应的依赖项。
  2. 配置用户服务,在 application.yml 中添加如下配置:
server:
  port: 8083
spring:
  application:
    name: user-service
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8082/eureka/
  1. 创建一个简单的用户控制器:
@RestController
@RequestMapping("/users")
public class UserController {
    private Map<Long, String> users = new HashMap<>();

    @PostMapping
    public void createUser(@RequestParam Long id, @RequestParam String name) {
        users.put(id, name);
    }

    @GetMapping("/{id}")
    public String getUser(@PathVariable Long id) {
        return users.getOrDefault(id, "User not found");
    }
}

6.3 创建订单服务

  1. 创建 Spring Boot 项目,选择相应的依赖项。
  2. 配置订单服务,在 application.yml 中添加如下配置:
server:
  port: 8084
spring:
  application:
    name: order-service
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8082/eureka/
  1. 创建一个订单控制器调用用户服务:
@RestController
@RequestMapping("/orders")
public class OrderController {
    @Autowired
    private RestTemplate restTemplate;

    @PostMapping("/{userId}")
    public String createOrder(@PathVariable Long userId) {
        String user = restTemplate.getForObject("http://user-service/users/" + userId, String.class);
        return "Order created for user: " + user;
    }
}
  1. 在订单服务的主类中配置 RestTemplate:
@SpringBootApplication
@EnableDiscoveryClient
public class OrderServiceApplication {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}
  1. 将 Eureka Server,用户服务,订单服务启动。

6.4 服务测试

  1. 测试用户服务
// 使用 Postman 或 curl 创建用户
POST http://localhost:8083/users?id=1&name=John
// 查询用户
GET http://localhost:8083/users/1
  1. 测试订单服务
// 创建订单,查询用户信息:
POST http://localhost:8081/orders/1
// 结果 Order created for user: John
  1. 验证 Eureka Dashboard

打开浏览器,访问 http://localhost:8082,可以看到 user-service 和 order-service 的注册信息。

总结与展望

通过本文的示例,展示了如何使用 Java 和 Spring Boot 框架设计一个微服务架构,并实现服务的注册、发现和调用。

这种架构设计不仅提升了系统的可维护性和可扩展性,还使得团队能够更快速地响应业务需求。

目录

  1. 初入微服务架构
  2. 技术栈选型
  3. 服务注册与发现
  4. 3.1 Eureka Server 配置
  5. 3.2 微服务配置
  6. 3.3 用户服务接口
  7. 服务调用
  8. 4.1 服务配置
  9. 4.2 服务接口
  10. 微服务架构测试
  11. 实际案例
  12. 6.1 创建 Eureka Server
  13. 6.2 创建用户服务
  14. 6.3 创建订单服务
  15. 6.4 服务测试
  16. 总结与展望

更多推荐文章

查看全部
  • Arduino BLDC 驱动方案:MimiClaw + ESP32 嵌入式机器人实战
  • Linux 进程池实战:基于管道通信的任务分发系统
  • 前缀和技巧:和为 K 及可被 K 整除的子数组
  • 基于 GLM 4.7 与 Flutter 开发 AI 漫剧 APP 实战
  • MySQL 亿级数据表平滑分表实践:基于时间分片的架构演进
  • 大模型时代人形机器人感知:视觉 - 语言模型应用
  • AI 绘画:GPU 算力租赁助力数字艺术创作
  • MCP 是什么?让 AI 减少爬虫代码编写量
  • vkedit:Vue3 Web 图形编辑器 npm 包,支持标签/票据/二维码设计
  • 2026 年十大 AI 编程工具推荐
  • FPGA 实现 MIPI 协议全解析与完整时序规范
  • 执行式 AI 核心:API 调用与网络请求基础
  • Cosmos-Reason1-7B 集成 ROS2 机器人的物理常识推理实践
  • Spring Boot 4.0 + Java 21 + Spring AI 2.0 大模型面试辅助平台实战
  • AI 绘画关键词网站效率提升实战:从数据预处理到模型加速
  • Axios 错误处理的设计与进阶封装,实现网络层面数据与状态解耦
  • MixAIHub:ChatGPT、Claude 等主流 AI 平台镜像访问入口
  • AI 算法基础入门:AI 产品经理核心知识指南
  • 基于 CMake 与 C++ 的海康网络摄像头 SDK 开发实战
  • Secure DM Pairing:构建 AI 机器人安全私信访问机制

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online