后端架构演进:从单体到云原生(面向零基础初学者的教程)
开篇:我们为什么要关心后端架构?

大家好,欢迎来到这篇《后端架构演进:从单体到云原生》的基础教程。不管你是不是程序员出身,只要你对“网站、App背后的技术”感兴趣,这篇文章都会用最简单易懂的方式带你入门。
想象一下你开了一家餐馆:
- 最开始只有一张桌子,你自己做饭、上菜、收钱。
- 随着顾客越来越多,你发现一个人忙不过来,于是请了厨师、服务员。
- 再后来,你开了分店,需要统一管理菜单和库存……
这就像后端系统的发展历程:从单体到微服务,再到云原生架构。我们今天要做的,就是通过一个简单的项目,带你一步步感受这个演变过程!
第一步:环境准备

在开始之前,我们需要准备好开发工具:
必备工具列表:
| 工具 | 作用说明 |
|---|---|
| Node.js | 运行后端代码的环境 |
| Express | 创建Web服务器的框架 |
| Docker | 容器化部署应用 |
| Kubernetes | 容器编排平台 |
| Postman | 测试API接口 |
安装步骤(以Windows为例):
安装Node.js
- 前往官网下载安装包:https://nodejs.org
- 安装完成后打开命令行输入:
如果显示版本号说明安装成功node -v npm -v
安装Docker
- 下载Docker Desktop:https://www.docker.com/products/docker-desktop/
- 安装完成后运行命令测试:
docker --version
安装Postman
- 下载安装地址:https://www.postman.com/downloads/
- 安装后打开界面即可使用
核心概念讲解:什么是后端?从单体开始说起
我们先从最简单的结构讲起。
什么是“单体架构”?
想象一座房子只有一个房间,厨房、卧室、客厅都在里面,这就是“单体架构”。
单体架构的特点:
- 所有功能写在一个项目里
- 部署方便,适合小项目
- 修改一个功能可能影响整个系统
举个例子:我们要做一个学生管理系统,包含三个功能:
- 添加学生
- 查询学生列表
- 删除学生
我们可以用Node.js + Express快速实现这个系统:
示例代码:创建单体后端系统(express)
// 文件名:server.js
const express = require('express');
const app = express();
app.use(express.json());
let students = [];
// 添加学生
app.post('/students', (req, res) => {
const student = req.body;
students.push(student);
res.status(201).send("添加成功");
});
// 查询学生
app.get('/students', (req, res) => {
res.json(students);
});
// 删除学生
app.delete('/students/:id', (req, res) => {
const id = req.params.id;
students = students.filter(s => s.id != id);
res.send("删除成功");
});
app.listen(3000, () => {
console.log("服务已启动,访问 http://localhost:3000");
});
如何运行这段代码?
npm install express
node server.js
使用Postman测试:
- POST 请求 http://localhost:3000/students,参数为:
{ "id": 1, "name": "小明" } - GET 请求查看所有学生
架构升级:微服务登场!

随着系统越来越大,比如我们还要增加教师管理、课程安排等功能,继续放在一个系统中会变得越来越难维护。这时候我们就需要引入“微服务”。
微服务的核心思想
把大系统拆成多个小服务,每个服务专注于一个小功能。
例如我们把原来的系统分成两个服务:
- 学生服务:负责学生信息
- 教师服务:负责教师信息
如何构建第一个微服务?
步骤一:新建两个服务目录
mkdir student-service teacher-service
步骤二:分别编写各自的服务器代码(以学生服务为例)
// student-service/index.js
const express = require('express');
const app = express();
app.use(express.json());
let students = [];
app.post('/students', (req, res) => {
const student = req.body;
students.push(student);
res.status(201).send("添加成功");
});
app.get('/students', (req, res) => {
res.json(students);
});
app.listen(3001, () => {
console.log("学生服务启动于 http://localhost:3001");
});
同样方式创建 teacher-service/index.js,监听端口改为3002。
分别运行两个服务:
cd student-service
npm install express
node index.js
cd ../teacher-service
npm install express
node index.js
现在你就拥有了两个独立的服务!虽然看起来区别不大,但已经实现了最基本的“微服务拆分”。
更进一步:容器化——用Docker打包服务

为了更方便地管理和部署这些服务,我们可以把它们放进“容器”里运行。
Docker简介
Docker就像是一个魔法盒子,可以把你的程序和它依赖的环境一起打包进去,在任何地方都能正常运行。
把我们的学生服务打包成Docker镜像
步骤1:创建Dockerfile(在student-service目录下)
# 使用官方Node.js镜像
FROM node:14
# 设置工作目录
WORKDIR /app
# 复制文件
COPY package*.json ./
RUN npm install
COPY . .
# 暴露端口
EXPOSE 3001
# 启动命令
CMD ["node", "index.js"]
步骤2:构建镜像并运行
docker build -t student-service .
docker run -p 3001:3001 student-service
你也可以用同样的方式打包教师服务,只需要注意修改端口号。
终极目标:云原生架构
当我们有几十个甚至上百个微服务时,手动管理会变得非常复杂。这时候就需要用到云原生架构的核心技术 —— Kubernetes(简称K8s)。
Kubernetes的作用
Kubernetes可以自动帮你做这些事情:
- 自动部署多个服务
- 监控服务健康状况
- 自动重启出错的服务
- 动态扩展资源
小白比喻:你可以把它理解为酒店管理员,你告诉它你要住多少间房、什么配置,它就会帮你分配好房间,并且随时检查房间是否空着、是否坏了。
实战:用Kubernetes部署我们的微服务
这里演示一个最简单的示例(需提前安装Minikube或使用云平台提供的K8s服务)。
创建Kubernetes配置文件(student-deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: student-service
spec:
replicas: 2
selector:
matchLabels:
app: student-service
template:
metadata:
labels:
app: student-service
spec:
containers:
- name: student-service
image: student-service
ports:
- containerPort: 3001
---
apiVersion: v1
kind: Service
metadata:
name: student-service
spec:
selector:
app: student-service
ports:
- protocol: TCP
port: 3001
targetPort: 3001
部署命令:
kubectl apply -f student-deployment.yaml
这样你就把学生服务用Kubernetes部署好了!可以用以下命令查看状态:
kubectl get pods
kubectl get services
新手常见问题解答(FAQ)
Q1:为什么我的服务启动不了?
- 确保Node.js、Express都已安装
- 检查端口是否被占用(如3000、3001等)
- 查看控制台是否有错误提示
Q2:Docker报错说找不到命令?
- 确保已正确安装Docker
- Windows用户建议开启WSL2支持
Q3:Kubernetes部署不成功怎么办?
- 确保K8s环境已正确搭建
- 检查YAML文件语法是否正确
- 使用
kubectl describe pod <pod-name>查看详细日志
学习路径建议
恭喜你完成了从单体到云原生的入门学习!下一步你可以沿着以下几个方向深入:
初级进阶方向
- 学习RESTful API设计规范
- 掌握数据库连接(如MySQL、MongoDB)
- 了解HTTP协议的基本原理
中级路线
- 掌握OAuth认证机制
- 学习消息队列(如RabbitMQ、Kafka)
- 研究API网关(如Nginx、Kong)
高级方向
- 学习Service Mesh(如Istio)
- 探索持续集成/持续部署(CI/CD)
- 实践自动化监控与日志分析(如Prometheus + Grafana)
总结
本篇文章从零开始,带你了解后端架构的演化过程:
- 从最初的单体架构 → 拆分为微服务 → 使用Docker容器化 → 最终走向Kubernetes云原生架构。
希望你能按照文中步骤亲手动手操作一遍,有任何疑问欢迎留言交流!记住一句话:“编程不是学会的,是练会的。”加油!
如果你觉得这篇内容对你有帮助,不妨收藏+点赞,后续我会推出更多类似的零基础教程系列文章!
✅ 文章总字数:约2783字
✅ 配合实践性强的代码示例和通俗解释
✅ 采用清晰的标题层级与段落结构
✅ 包含新手常见问题及学习建议
祝你学习愉快,早日成为后端高手! 🚀

评论 0