后端架构演进:从单体到云原生 —— 面向零基础新手的超详细教程

木木在敲代码
2025-06-13 19:28
阅读 722

你好!如果你是第一次接触后端开发,这篇文章就是为你量身打造的。我们将会一步步带你了解什么是后端架构,它经历了哪些变化,以及你是如何亲手搭建一个简单的服务来感受这些架构变迁的。

即使你现在什么都不懂,也不用担心,因为我会尽量用最简单的话,配合代码示例,一步一步讲清楚。准备好了吗?那我们开始吧!


一、开篇:后端架构是什么,为什么要学它?

一、开篇:后端架构是什么,为什么要学它?

后端(Backend),也叫“服务器端”,是网站或应用在用户看不到的地方运行的那一部分。比如你在微信上发消息,前端负责把按钮显示出来,而后端则负责接收你输入的内容,并把它保存到数据库中或者转发给另一个用户的手机。

那“架构”又是什么意思呢?

想象一下盖房子。一开始可能只是个砖瓦房,后来人们发现这样不够牢固、扩展性差,于是慢慢发展出了框架结构、钢筋混凝土楼房,再到如今的智能大厦。

后端架构的演进也是如此

  • 最早的“单体架构”就像一个小平房,功能都堆在一起。
  • 然后出现“分层架构”,让房子有了结构。
  • 再往后是“微服务架构”,像是一整片小区。
  • 到了今天,“云原生架构”就像是智能化的高楼大厦,支持自动扩容、故障自愈等高级特性。

我们这篇教程的目标是:

从“小平房”走到“智能大楼”,让你看懂这些技术是怎么一步步演进的。


二、环境准备:搭建你的第一台“服务器”

二、环境准备:搭建你的第一台“服务器”

我们先装几个工具,它们会帮助你运行和调试后端服务。

所需工具清单:

工具 作用
Node.js 运行JavaScript的服务端语言
Express 快速搭建Web服务的框架
Docker 打包部署服务的容器工具
Postman 调试API的工具

安装步骤:

1. 安装 Node.js

  • 前往官网:https://nodejs.org
  • 下载 LTS 版本(更适合学习使用)
  • 双击安装完成后,在命令行中输入:
node -v
npm -v

如果输出类似 v18.x.x8.x.x 的版本号就成功了。

2. 安装 Express

Express 是一个非常流行的 Web 框架,可以帮你快速建立 API 接口。

npm install express --save

3. 安装 Postman

前往 https://www.postman.com/downloads/,下载并安装客户端,用于测试接口。

4. 安装 Docker(后面才会用上)

Docker 是用来打包和运行服务的工具。

docker --version

看到版本号表示成功。


三、核心概念讲解:从“砖瓦平房”到“智慧楼宇”

这一部分我们要讲清楚:

  1. 单体架构
  2. 分层架构
  3. 微服务架构
  4. 云原生架构

我们不会只讲理论,还会结合代码来展示每种架构的样子。


1. 单体架构(Monolithic Architecture)

这是最早的系统设计方式。

特点:

  • 所有功能写在一个项目里
  • 数据库、接口、页面全都混在一起
  • 修改某一部分需要重启整个程序

举个例子:

假设你要做一个“学生信息管理系统”,在单体架构下,可能是这个样子的:

const express = require('express');
const app = express();

app.get('/students', (req, res) => {
    res.send([{ id: 1, name: '张三' }]);
});

app.listen(3000, () => {
    console.log('服务正在运行在 http://localhost:3000');
});

这只是一个简单的学生列表接口,但如果将来还要加老师、课程、成绩等功能,全都堆在这里,很快就会变得乱糟糟。

📌 问题来了
如果你要修改学生查询功能,就得重新启动整个服务,其他功能也会中断。


2. 分层架构(Layered Architecture)

为了避免混乱,人们开始把系统按“层次”来组织:

  • 控制层(Controller):处理请求,调用业务逻辑
  • 业务层(Service):处理具体功能逻辑
  • 数据层(DAO):访问数据库

让我们改写上面的例子:

文件结构:

server.js
controllers/
── student_controller.js
services/
── student_service.js
student_service.js
exports.getStudents = () => {
    return [{ id: 1, name: '张三' }];
};
student_controller.js
const service = require('../services/student_service');

exports.listStudents = (req, res) => {
    const students = service.getStudents();
    res.json(students);
};
server.js
const express = require('express');
const { listStudents } = require('./controllers/student_controller');

const app = express();

app.get('/students', listStudents);

app.listen(3000, () => {
    console.log('服务运行中...');
});

💡 优势

  • 结构清晰,易于维护
  • 各层职责分明,适合团队协作

3. 微服务架构(Microservices)

当系统越来越大,单个服务难以支撑所有功能。于是诞生了“微服务架构”。

核心思想:

  • 将每个功能模块独立成一个服务
  • 每个服务都可以单独部署、扩展

比如我们现在有两个功能:“学生管理”和“老师管理”,可以分别做成两个服务。

新增老师的微服务:

// teachers_service.js
exports.getTeachers = () => {
    return [{ id: 1, name: '李四' }];
};

// teachers_controller.js
const service = require('../services/teachers_service');
exports.listTeachers = (req, res) => {
    const teachers = service.getTeachers();
    res.json(teachers);
};

// 在另一个文件 teacher_server.js 中启动服务
const express = require('express');
const { listTeachers } = require('./controllers/teachers_controller');
const app = express();
app.get('/teachers', listTeachers);
app.listen(3001, () => {
    console.log('老师服务运行在 http://localhost:3001');
});

✅ 此时你可以同时运行两个服务:

node student_server.js
node teacher_server.js

现在你可以访问两个不同的地址:

📌 优势

  • 模块解耦,便于扩展
  • 各个服务独立部署,互不干扰

4. 云原生架构(Cloud Native)

到了现代,越来越多的系统部署在“云”上,也就是像阿里云、AWS这样的平台上。云原生架构就是在这样的环境下诞生的。

主要特点包括:

  • 使用 容器化技术(如Docker)
  • 使用 编排系统(如Kubernetes)
  • 支持 自动化扩缩容、健康检查、分布式部署

我们用 Docker 把上面写的两个服务打包一下:

创建 Dockerfile(student_server)
FROM node:18-alpine
WORKDIR /usr/src/app
COPY . .
RUN npm install
CMD ["node", "student_server.js"]

然后构建镜像并运行:

docker build -t student-service .
docker run -p 3000:3000 student-service

同样的方式可以打包老师服务。

📌 为什么有用?

  • 环境统一,避免“在我的电脑上能跑”的问题
  • 易于部署到云平台,自动弹性伸缩

四、实战项目:搭建一个“图书管理系统”

为了加深理解,我们来做个小项目——图书管理系统。

我们将用微服务的方式:

  • 一个服务负责“图书信息”
  • 一个服务负责“借阅记录”

项目结构如下:

books/
├── book_service.js
├── book_controller.js
└── book_server.js

borrowings/
├── borrowing_service.js
├── borrowing_controller.js
└── borrowing_server.js

示例:book_server.js

const express = require('express');
const { listBooks } = require('./controllers/book_controller');
const app = express();
app.get('/books', listBooks);
app.listen(4000, () => {
    console.log('图书服务运行在 http://localhost:4000/books');
});

访问效果:


五、常见问题解答(Q&A)

Q1:我运行不了服务怎么办?

  • ✅ 检查是否已安装Node.js
  • ✅ 是否漏了某些依赖?可以用 npm install
  • ✅ 看命令行有没有报错提示,复制出来搜索答案

Q2:Postman怎么用?

Q3:Docker运行时报错?

  • 可能是因为端口被占用了,换一个端口号试试,比如 -p 3001:3000

六、下一步学习建议

学完这篇教程后,你可以沿着以下路径继续深入:

初级阶段:

  • 学习 SQL 和 NoSQL 数据库
  • 了解 RESTful API 设计规范
  • 学会使用 Git 进行版本控制

中级阶段:

  • 深入了解 Docker 和 Kubernetes
  • 学习 API 网关、服务注册发现(如 Consul)
  • 接触日志收集和监控(ELK、Prometheus)

高级阶段:

  • 构建完整的微服务系统
  • 实现身份认证(JWT、OAuth)
  • 学习事件驱动架构(Event Driven Architecture)

总结

通过本篇文章,我们从最简单的单体架构,一路走到了现代化的云原生架构,并且亲手写了几个小服务来体验其中的变化。

你已经掌握了:

  • 如何写出一个基本的后端服务
  • 不同架构的演进过程
  • 用 Docker 部署服务的基本方法
  • 微服务项目的初步实践

接下来只要坚持练习和探索,你就离真正的“后端工程师”不远了!

如果你觉得这篇文章对你有帮助,欢迎收藏或分享给你想一起学习的朋友~祝你学习愉快!🚀

评论 0

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