后端架构演进:从单体到云原生(新手友好教程)

许建军_技术
2025-06-13 00:26
阅读 663

本文适合完全零基础的初学者,手把手带你了解后端架构的发展过程,并通过简单项目实战加深理解。


一、什么是后端架构?为什么要了解它?

一、什么是后端架构?为什么要了解它?

我们平时上网浏览网页、使用App时,看到的是前端界面。但这些应用背后的“大脑”就是后端系统。后端负责处理数据、验证登录、连接数据库、调用接口等工作。

所谓后端架构,就是指我们是怎么组织和搭建这些后端程序的方式。从最早的“一个大程序搞定一切”,到如今高度灵活可扩展的“云上系统”,后端架构在不断进化。

今天我们要学习的主题是:
👉 《后端架构的演进:从单体应用到云原生架构》

我们会按照这条路线学习:

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

并通过一个简单的“图书管理系统”来演示代码变化。


二、环境准备

二、环境准备

系统架构设计图-2

我们使用 Node.js + Express 框架 来编写我们的示例代码。

步骤1:安装 Node.js 和 npm

前往官网 https://nodejs.org 下载安装最新 LTS 版本。安装完成后,在命令行运行:

node -v
npm -v

如果输出了版本号,说明安装成功。

步骤2:创建项目文件夹

mkdir backend-evolution
cd backend-evolution
npm init -y
npm install express body-parser

现在你可以开始写你的第一个服务器啦!


三、核心概念讲解(通俗易懂)

三、核心概念讲解(通俗易懂)

下面是一些你需要了解的关键术语,我会用最简单的语言解释清楚:

名称 简单解释
单体架构 所有功能都在一个项目中完成,像一辆自行车,结构简单但难扩展
分层架构 把代码分成不同的层次(如接口层、业务层、数据层),便于管理和维护
微服务架构 每个功能模块是一个独立的服务,像乐高一样组合起来
云原生架构 利用云计算技术(如容器化、自动部署)提升系统的灵活性和稳定性

新手常见问题解答:

Q1:我学的是 Python/Java,能看懂吗?

可以的!文中代码以 Node.js 为例,核心思想通用。你只需关注设计思路即可。

Q2:需要哪些前置知识?

会一点点 JavaScript 或其他编程语言即可。不懂也没关系,跟着写一遍你就明白了!


四、实战项目:一步步演进图书管理系统

负载均衡配置-1

四、实战项目:一步步演进图书管理系统

我们将开发一个简单的图书管理系统 API:支持添加书籍、查询书籍列表两个功能。

第1步:单体架构实现(Monolithic)

所有功能都集中在一个文件里。

文件名:app-monolithic.js

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

let books = [];

// 添加书籍
app.post('/books', (req, res) => {
    const book = req.body;
    books.push(book);
    res.status(201).send("书籍已添加");
});

// 获取书籍列表
app.get('/books', (req, res) => {
    res.send(books);
});

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

启动方式:

node app-monolithic.js

访问测试:

  • POST 请求 http://localhost:3000/books 添加书籍
  • GET 请求获取书籍列表

✅ 特点:简单直接,适合小项目。


第2步:分层架构(Layered Architecture)

把代码拆分为:控制器层、服务层、数据层。

目录结构:

project/
├── controllers/
│   └── bookController.js
├── services/
│   └── bookService.js
├── models/
│   └── bookModel.js
└── app-layered.js

bookModel.js(数据存储)

let books = [];

module.exports = {
    addBook: (book) => books.push(book),
    getBooks: () => books
};

bookService.js(逻辑处理)

const model = require('../models/bookModel');

module.exports = {
    createBook: (book) => {
        model.addBook(book);
        return '书籍已添加';
    },
    getAllBooks: () => model.getBooks()
};

bookController.js(对外接口)

const service = require('../services/bookService');

module.exports = {
    addBook: (req, res) => {
        const result = service.createBook(req.body);
        res.status(201).send(result);
    },
    listBooks: (req, res) => {
        res.send(service.getAllBooks());
    }
};

app-layered.js(主入口)

const express = require('express');
const bodyParser = require('body-parser');
const bookCtrl = require('./controllers/bookController');

const app = express();
app.use(bodyParser.json());

app.post('/books', bookCtrl.addBook);
app.get('/books', bookCtrl.listBooks);

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

✅ 特点:代码更清晰,方便多人协作。


第3步:微服务架构(Microservices)

想象一下,如果你要开发一个超级大的应用,比如京东、淘宝这种级别的电商系统,把所有功能放在一起就很复杂了。

于是人们把功能拆成多个小服务,每个服务专注做一件事。

例如:

  • 图书服务(图书管理)
  • 用户服务(用户注册登录)
  • 订单服务(下单、支付等)

假设我们现在有两个微服务:图书服务、用户服务

图书服务 app-book-service.js

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

let books = [];

app.use(express.json());

app.post('/books', (req, res) => {
    books.push(req.body);
    res.status(201).send('书籍已添加');
});

app.get('/books', (req, res) => {
    res.send(books);
});

app.listen(3001, () => {
    console.log("图书服务运行于端口 3001");
});

用户服务 app-user-service.js

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

app.get('/users', (req, res) => {
    res.send(['用户A', '用户B']);
});

app.listen(3002, () => {
    console.log("用户服务运行于端口 3002");
});

分别运行:

node app-book-service.js
node app-user-service.js

✅ 特点:每个服务独立部署,互不影响。


第4步:云原生架构(Cloud Native)

云原生并不是一种架构,而是一种设计理念。它包括以下几个关键技术(新手先了解一下名字):

  • 容器化(Docker)
  • 容器编排(Kubernetes)
  • 服务发现 & 负载均衡
  • 自动部署 & 监控
  • 弹性扩容

今天我们只讲容器化的一个简单例子 —— Docker

示例:将图书服务打包成 Docker 镜像

新建一个 Dockerfile 文件:

FROM node:18
WORKDIR /usr/src/app
COPY . .
RUN npm install
EXPOSE 3001
CMD ["node", "app-book-service.js"]

构建镜像:

docker build -t book-service .

运行容器:

docker run -d -p 3001:3001 book-service

✅ 特点:轻松部署、便于管理、适应云平台。


五、常见问题解答(FAQ)

Q1:我为什么选择 Node.js 做示例?

Node.js 的语法简洁,容易上手,而且生态丰富,非常适合教学演示。即使你不熟悉,也能轻松理解其背后的架构思想。

Q2:微服务之间怎么通信?

可以通过 HTTP 接口或者消息队列(如 RabbitMQ)等方式进行服务间通信。

Q3:微服务是不是一定比单体好?

不是。对于小型项目或创业初期,使用单体结构更高效。微服务更适合团队协作和大型项目。


六、学习建议与下一步路径

🎉 恭喜你,已经完成了从单体到云原生的基本认识!

接下来你可以沿着以下方向继续深入学习:

  1. 进一步学习 Express + MongoDB 构建完整项目
  2. 掌握 RESTful API 设计规范
  3. 学习 Docker 和 Kubernetes 基础操作
  4. 尝试部署自己的项目到阿里云 / AWS
  5. 阅读经典书籍:《微服务设计》、《领域驱动设计》

总结

架构类型 优点 缺点 适用阶段
单体架构 简单、开发快 不易维护、难扩展 小型项目、MVP
分层架构 层级清晰、便于维护 部署仍耦合 中小型项目
微服务架构 灵活、易于扩展 开发复杂度上升 大型项目
云原生架构 可自动化、弹性伸缩 学习成本高 成熟企业级产品

希望这篇教程对你理解后端架构演进有所帮助!记得动手实践,才能真正掌握技能哦 ✅


如果你喜欢这样的内容,欢迎点赞、收藏、分享!我们下篇教程再见 💪

评论 0

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