一、老式系统 vs 新式系统
1. 以前咋弄的?(单体架构)
俺跟你说,以前写系统就跟盖平房一样:
- 所有的东西都堆到一个屋里:用户管理、订单、支付、库存...
- 一开始盖的时候可美,住着也得劲
- 但是时间长了,你想装修个厕所都得把整个房子掀了重建
- 想加个空调?电线都得重新走一遍
实际例子 :
比方说你想在网上买个烩面,老系统是这样的:
一个大程序 = 用户登录 + 商品浏览 + 下单 + 支付 + 发货
哪个功能出问题了,整个网站都打不开了,买不了烩面急死人!
2. 现在咋弄嘞?(微服务架构)
现在就跟盖小区一样:
- 1号楼是用户管理
- 2号楼是商品服务
- 3号楼是订单服务
- 4号楼是支付服务
- 每栋楼都是独立的,有自己水电暖
好处:
- 2号楼着火了,其他楼还能住人(一个服务挂了,其他还能用)
- 想扩建3号楼,不用动其他楼的地基(单独升级某个服务)
- 每栋楼用不同的装修队(不同技术栈)
二、SpringCloud到底是弄啥嘞?
简单理解
SpringCloud就是小区的物业公司,专门管这几栋楼的:
- 保安(网关):管谁能进小区
- 物业中心(注册中心):知道每栋楼在哪住几口人
- 维修队(熔断降级):哪栋楼有问题赶紧修
- 水电工(配置中心):统一管水电费
为啥要用它?
你不用SpringCloud,自己也能盖楼,但是:
- 得自己找保安
- 得自己修路
- 得自己拉电线
- 麻烦得很!
SpringCloud把盖微服务小区需要的工具包都给你准备好了。
三、今儿个咱先搭个台子
1. 环境准备(把家伙什备齐)
bash
# 1. JDK 11/17(炒菜的锅)
# 去Oracle官网下载,或者用OpenJDK也行
# 2. Maven 3.6+(配菜员)
# 管着项目的依赖,跟做烩面要调好料一样
# 3. IDEA或者Eclipse(灶台)
# 推荐用IDEA,得劲的很
2. 创建第一个微服务(先盖个毛坯房)
步骤:
-
打开IDEA,点新建项目
-
选Spring Initializr(官方脚手架)
-
起个名儿:
user-service(用户服务) -
选依赖:就选
Spring Web和Spring Boot DevTools就行 -
创建完,你的项目结构长这样:
user-service/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/
│ │ │ └── UserServiceApplication.java # 启动类
│ │ └── resources/
│ │ └── application.yml # 配置文件
│ └── test/ # 测试代码
├── pom.xml # Maven配置文件
└── ...
3. 写个简单的接口(先弄个门脸)
在src/main/java/com/example/下面新建个UserController.java:
java
@RestController
public class UserController {
@GetMapping("/hello")
public String sayHello() {
return "咦,中!微服务启动成功啦!";
}
@GetMapping("/user/{id}")
public String getUser(@PathVariable Integer id) {
// 先写个假的,明天咱连数据库
if (id == 1) {
return "用户:张三,郑州嘞,爱吃烩面";
}
return "用户ID:" + id;
}
}
4. 配置文件(application.yml)
yaml
server:
port: 8081 # 这个服务在8081端口运行
spring:
application:
name: user-service # 给服务起个名
5. 启动试试
- 找到
UserServiceApplication.java - 点那个绿色的小三角
- 等控制台出现
Started UserServiceApplication in X.XXX seconds - 打开浏览器,输入:
http://localhost:8081/hello - 看见
咦,中!微服务启动成功啦!就妥了!
四、今儿个学到点啥?
关键概念(记住这几个词儿)
- 微服务:把大系统拆成一个个小服务,就跟把烩面馆拆成:和面、熬汤、煮面、配菜几个小铺子一样
- SpringCloud:管理这些微服务的工具包
- 服务注册与发现:明天学,就跟小区物业知道每家每户住哪儿一样
今儿的任务
- ✅ 把JDK、Maven、IDEA装好
- ✅ 创建一个SpringBoot项目
- ✅ 写个简单的接口能访问
- ✅ 知道微服务是咋回事
常见问题
-
端口被占用咋办?
- 关掉其他程序占用的8081端口
- 或者在
application.yml里换个端口,比如8082
-
启动报错咋办?
- 检查JDK版本是不是11以上
- 检查Maven配置对不对
- 看看是不是网络问题下载不了依赖
五、明儿个学啥?
明天咱学服务注册中心,就跟小区的物业中心一样:
- 咋让这个
user-service在物业中心登记 - 咋让其他服务能找到这个
user-service - 用Eureka这个工具(物业公司的名儿)
小贴士
- 今儿个不用写太多代码,主要是理解概念
- 有不明白的,多启动几次试试
- 就像学骑洋车(自行车)一样,开始歪歪扭扭,骑几回就中了!
明儿个见,别忘了把今儿个的代码跑通!🚀