Spring Cloud从零开始:微服务入门指南

GameMaker
2025-12-19 06:23
阅读 794

大家好,我是小林,一名211高校的计算机专业研究生,平时喜欢写技术博客帮助刚入门的同学。最近很多学弟学妹问我:“Spring Cloud到底是什么?为什么现在企业都在用微服务?”其实我当初学的时候也是一头雾水——一堆名词、配置文件、服务注册、熔断……简直让人抓狂!

今天这篇教程,我就带完全零基础的你,从零搭建一个最简单的 Spring Cloud 微服务项目。全程只用最通俗的语言 + 最简代码,目标是让你在 30 分钟内跑通第一个“产品服务”。别担心,跟着做就行!


一、Spring Cloud 是什么?能用来做什么?

简单说:

  • Spring Boot:帮你快速搭建单个 Java 应用(比如一个商品管理系统)。
  • Spring Cloud:帮你把多个 Spring Boot 应用“连起来”,组成一个分布式系统,也就是常说的“微服务架构”。

📌 举个例子:
假设你要做一个电商“产品”系统。传统做法是写一个大应用,包含商品管理、订单、支付、用户等所有功能。
而微服务的做法是:拆成多个小服务——product-service(产品服务)、order-service(订单服务)、user-service(用户服务)……每个服务独立开发、部署、运行,通过网络互相调用。

Spring Cloud 就是提供了一套工具,让这些服务能自动发现彼此、安全通信、容错处理,而不用你手动写一堆网络代码。


二、环境准备(5分钟搞定)

你需要安装以下工具:

工具 版本建议 作用
JDK 17 或 8 Java 运行环境
Maven 3.6+ 项目依赖管理
IntelliJ IDEA 社区版即可 开发 IDE
Spring Boot 3.x(推荐 3.2+) 快速构建应用

💡 我当初学的时候用的是 JDK 8,但现在新项目基本都上 JDK 17 了,兼容性更好。

创建项目骨架

我们用 Spring Initializr 快速生成项目:

  1. 打开网站,选择:
    • Project: Maven
    • Language: Java
    • Spring Boot: 3.2.x
    • Group: com.example
    • Artifact: product-service
  2. Dependencies 中添加:
    • Spring Web
    • Spring Boot DevTools(热更新)
  3. 点击 Generate 下载 ZIP,解压后用 IDEA 打开。

✅ 此时你已经有了一个能跑的 Spring Boot 应用!


三、核心概念(用大白话解释)

1. 什么是“微服务”?

就是把一个大系统拆成多个小服务,每个服务只干一件事。比如我们的 product-service 只负责“产品”相关功能。

2. 服务怎么互相找到对方?

服务注册中心(比如 Eureka、Nacos)。你可以把它想象成“电话簿”——每个服务启动时把自己名字和地址登记上去,其他服务想调用它,就去“查电话簿”。

3. 服务之间怎么通信?

通常用 HTTP + JSON。比如订单服务想查某个产品的价格,就发一个 HTTP 请求到产品服务的 /api/products/{id} 接口。


四、实战:搭建你的第一个“产品服务”

我们现在要实现一个最简单的功能:通过 ID 查询产品信息

第一步:写一个产品实体类

// src/main/java/com/example/productservice/Product.java
package com.example.productservice;

public class Product {
    private Long id;
    private String name;
    private Double price;

    // 构造函数、getter/setter 省略(IDEA 可自动生成)
    public Product(Long id, String name, Double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    // getter 和 setter...
}

第二步:写一个 Controller 提供接口

// src/main/java/com/example/productservice/ProductController.java
package com.example.productservice;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/products")
public class ProductController {

    @GetMapping("/{id}")
    public Product getProductById(@PathVariable Long id) {
        // 模拟数据库查询(实际项目用 MyBatis 或 JPA)
        if (id == 1L) {
            return new Product(1L, "iPhone 15", 5999.0);
        }
        return null;
    }
}

第三步:启动应用

运行 ProductServiceApplication.java 的 main 方法。

打开浏览器访问:
👉 http://localhost:8080/api/products/1

你应该看到:

{"id":1,"name":"iPhone 15","price":5999.0}

✅ 恭喜!你的第一个“产品服务”跑起来了!


五、加入 Spring Cloud(让服务可被发现)

现在这个服务是“孤岛”,别人找不到它。我们要引入 服务注册中心

使用 Nacos(比 Eureka 更现代,国内主流)

1. 启动 Nacos 服务器

  • 下载 Nacos:https://github.com/alibaba/nacos/releases
  • 解压后进入 bin 目录,执行:
    # Linux/Mac
    sh startup.sh -m standalone
    
    # Windows
    startup.cmd -m standalone
    
  • 访问 http://localhost:8848/nacos(账号密码都是 nacos

2. 修改 product-service 项目

pom.xml 添加依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2022.0.0.0</version>
</dependency>

application.yml 配置:

server:
  port: 8081  # 改个端口避免冲突

spring:
  application:
    name: product-service  # 服务名(其他服务通过这个名字找你)
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  # Nacos 地址

3. 在主类上加注解

// ProductServiceApplication.java
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient // ⭐ 关键!开启服务注册
public class ProductServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductServiceApplication.class, args);
    }
}

4. 重启服务

刷新 Nacos 控制台(http://localhost:8848/nacos),你会在“服务列表”看到 product-service

🎯 现在其他服务只要知道名字 product-service,就能通过 Nacos 找到它并调用接口!


六、新手常见问题解答

Q1:为什么我的服务没注册到 Nacos?

  • 检查 application.ymlserver-addr 是否正确
  • 确保 Nacos 服务器已启动(默认端口 8848)
  • 查看控制台是否有报错(比如版本不兼容)

Q2:Spring Boot 和 Spring Cloud 版本怎么匹配?

官方有版本对应表。简单记住:

  • Spring Boot 3.x → Spring Cloud 2022.x
  • 别混用旧版(比如 Boot 2.x + Cloud 2022.x 会出错)

Q3:一定要用 Nacos 吗?能用 Eureka 吗?

可以!但 Nacos 功能更全(支持配置中心),且阿里开源,国内生态更好。Eureka 已停止维护。


七、下一步学习建议

你已经迈出了微服务的第一步!接下来可以:

  1. 再建一个 order-service,让它通过 RestTemplate 调用 product-service(试试 @LoadBalanced 注解)
  2. 学习 OpenFeign —— 让服务调用像调本地方法一样简单
  3. 加入 Sentinel 实现熔断限流(防止一个服务挂掉拖垮整个系统)
  4. Spring Cloud Gateway 做统一 API 网关

💬 我当初学的时候,也是从一个小小的“产品服务”开始,慢慢拼出整个电商系统。不要怕复杂,微服务的本质就是“拆”+“连”。每一步搞懂,你就离架构师更近一步!


结语

这篇教程没有讲高深理论,只聚焦一件事:让你亲手跑起第一个 Spring Cloud 微服务。希望你能感受到“原来微服务也没那么可怕”。

如果你觉得有帮助,欢迎关注我的博客,我会持续更新《Spring Cloud 实战系列》。下期我们讲:如何用 Feign 让服务调用像本地方法一样简单

有任何问题,评论区见!我们一起成长 💪

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝