Spring Cloud 从零开始:微服务入门指南
开篇:什么是Spring Cloud,它能用来做什么?

你可能听说过“微服务”这个词。那它到底是啥呢?我们可以把它理解成一种新的编程方式——把一个大的应用程序拆分成一个个小的、独立运行的小程序(我们叫它们“微服务”),这些小程序之间通过网络通信来协同工作。
这就像是把一整个厨房的工作,分成了厨师、洗碗工、采购员等不同的岗位,每人都专注干自己的事,这样整体效率更高也更灵活。
而 Spring Cloud 就是一套帮你轻松搭建和管理这些微服务的技术组合包,包括服务发现、配置中心、负载均衡等等,就像是厨房里的智能管理系统。
所以今天这篇文章的目标就是:教你用Spring Cloud搭建一个最简单的微服务项目!
环境准备:开发环境搭建步骤

在正式编写代码之前,你需要准备好开发环境。以下是具体的安装步骤:
✅ 安装 JDK 1.8 或以上版本
Spring Cloud 需要 Java 支持,建议使用 OpenJDK 安装。
java -version
如果输出类似如下内容说明安装成功:
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-120.04)
✅ 安装 Maven 构建工具
Maven 是管理依赖和项目的构建工具。
sudo apt install maven
mvn -v
✅ 安装 IntelliJ IDEA(推荐)
下载地址:https://www.jetbrains.com/idea/download/
或者使用免费版的 VSCode + Java 插件也是可以的。
✅ 创建第一个 Spring Boot 项目(用作微服务基础)
填写如下信息:
- Project: Maven
- Language: Java
- Spring Boot Version: 3.x(比如 3.1.5)
- Dependencies:
- Spring Web
- Eureka Discovery Client
点击 “Generate” 下载压缩包并解压打开。
打开 IDEA 导入 Maven 项目即可。
核心概念:通俗易懂的关键知识点解释
下面是几个 Spring Cloud 最核心的概念,我会尽量用简单的方式来解释。
📌 1. 服务注册与发现(Eureka Server)
你可以把它想象成一个电话簿系统。每个微服务启动之后都要去这里报到,并告诉大家:“我是谁,在哪”。其他服务要用到它时就可以通过这个目录查找联系方式。
📌 2. 负载均衡(Ribbon / LoadBalancer)
假设有三个功能一样的订单服务同时在线,当你请求下单的时候,系统会自动挑选其中一个性能最好的服务来处理请求,这就是负载均衡。
📌 3. 配置中心(Config Server)
有些设置是所有服务都要共享的,比如数据库密码。配置中心就是一个统一存放这些配置的地方。
📌 4. 网关(Gateway / Zuul)
你可以把它看成是一个“门卫”,所有用户请求必须先经过网关。网关可以做权限验证、限流、路由转发等功能。
现在我们以 服务注册与发现 + 两个服务之间的调用 为例,带你动手实战一下。
实战项目:一步步搭建你的第一个 Spring Cloud 微服务应用
我们的目标很简单:
- 搭建一个服务中心 Eureka Server
- 搭建两个服务:商品服务(ProductService)和订单服务(OrderService)
- 让订单服务调用商品服务获取数据
第一步:创建 Eureka Server(服务中心)
新建一个 Maven 工程,添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
修改 application.yml 内容为:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
主类加上注解:
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
启动后访问 http://localhost:8761,就能看到服务注册页面。
第二步:创建 Product Service 商品服务
新建 Spring Boot 工程,加入以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件 application.yml 添加:
server:
port: 8081
spring:
application:
name: product-service
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
写个 Controller 测试接口:
@RestController
@RequestMapping("/products")
public class ProductController {
@GetMapping("/{id}")
public String getProduct(@PathVariable String id) {
return "商品ID: " + id + ", 名称: iPhone手机";
}
}
启动后刷新 Eureka 页面,能看到 product-service 注册成功了。
第三步:创建 Order Service 订单服务
同样结构的工程,只是端口改为 8082,application.yml 中 spring.application.name 设置为 order-service。
新增一个远程调用客户端:
@Component
public class ProductServiceClient {
private final RestTemplate restTemplate;
public ProductServiceClient(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public String getProductById(String id) {
return restTemplate.getForObject("http://product-service/products/" + id, String.class);
}
}
再写一个控制器用于触发调用:
@RestController
@RequestMapping("/orders")
public class OrderController {
private final ProductServiceClient productServiceClient;
public OrderController(ProductServiceClient productServiceClient) {
this.productServiceClient = productServiceClient;
}
@GetMapping("/{productId}")
public String getOrder(@PathVariable String productId) {
String productDetails = productServiceClient.getProductById(productId);
return "订单信息:" + productDetails;
}
}
注意:需要启用 RestTemplate bean:
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
最后运行,访问: http://localhost:8082/orders/123
你会看到结果:
订单信息:商品ID: 123, 名称: iPhone手机
✅ 成功啦!
常见问题解答 FAQ
❓为什么启动时报错 UnknownHostException?
一般是服务还没注册上去就尝试调用了,请等待几秒钟再试一次。
❓RestTemplate 报错 Could not find service?
检查 @EnableDiscoveryClient 是否加上了,以及服务名是否正确。
❓Eureka 显示 No instances available for service 的问题?
检查服务是否真的启动了,网络能否连通,端口有没有冲突。
学习建议:接下来该学什么?
恭喜你已经完成第一个 Spring Cloud 微服务项目!接下来你可以继续深入学习以下方向:
| 学习模块 | 作用 | 推荐资源 |
|---|---|---|
| Config Server | 统一管理配置 | 官方文档 |
| Gateway | 请求过滤/路由 | 《Spring Cloud Gateway》实战手册 |
| Feign/OpenFeign | 简化远程调用 | 使用 @FeignClient 替代 RestTemplate |
| Sleuth & Zipkin | 分布式日志追踪 | 查看各服务间调用链性能瓶颈 |
| Docker 部署 | 微服务容器化部署 | 参考《Docker — 从零到部署》 |
💡提示:建议自己动手做一个完整的电商平台微服务系统,如用户服务、支付服务、物流服务等,边实践边总结!
总结回顾
本篇文章从零开始,带你一步步完成了 Spring Cloud 微服务系统的搭建,重点在于实践驱动和代码演示。希望通过这次练习,你已经对以下几个关键点有了清晰的理解:
- 什么是微服务和 Spring Cloud 的定位
- 如何搭建 Eureka 服务中心
- 如何创建多个服务并实现相互调用
- 实际开发中遇到的常见错误及解决方案
- 下一步深入学习的方向建议
只要你保持动手实践,Spring Cloud 并没有那么神秘!一起加油吧 😊

评论 0