后端架构演进:从单体到云原生(零基础小白也能看懂)

Linux夜行者
2025-06-19 14:58
阅读 429

开篇:什么是后端架构?为什么它在不断“变脸”?

开篇:什么是后端架构?为什么它在不断“变脸”?

想象一下,你开了一个小餐馆。最初你自己一个人负责炒菜、洗碗、收银……这就是单体架构

随着餐馆越来越火,顾客越来越多,你开始雇人分摊工作:有人专门点餐,有人负责厨房,有人打扫卫生……这种分工合作的模式就是微服务架构

再后来,你可能开分店、上外卖平台、接入美团支付宝支付……这就需要更灵活、可扩展的技术方案,比如用云服务快速部署新功能——这就是我们今天要讲的云原生架构

本教程将带你从零开始了解后端架构的发展历程,并通过代码示例逐步实践搭建一个从单体到云原生的简单项目。


环境准备:你需要哪些工具?

环境准备:你需要哪些工具?

要想学习后端架构,我们需要先准备好编程环境:

所需工具清单

工具 用途
Node.js + Express 搭建 Web 应用
MongoDB / MySQL 数据库存储
Docker 容器化部署
Kubernetes (k8s) 容器编排
Git + GitHub 版本控制与协作

推荐使用 Mac 或 Linux 系统,如果使用 Windows 建议开启 WSL2

安装步骤(以 Node.js 和 Express 为例)

  1. 安装 Node.js(建议安装 LTS 版本)
  2. 验证是否安装成功:
node -v    # 输出类似 v18.xx.x
npm -v     # 输出类似 9.xx.x
  1. 安装 Express 框架:
npm install express --save

核心概念:后端架构发展的三个阶段

核心概念:后端架构发展的三个阶段

我们可以把整个发展过程分为三大阶段:

阶段一:单体架构(Monolithic Architecture)

通俗解释:

  • 所有功能都写在一个程序里(就像一家小饭店)
  • 适合小型项目或初学者入门

示例:一个简单的博客系统

// app.js
const express = require('express');
const app = express();

app.get('/posts', (req, res) => {
    res.json([
        { id: 1, title: "Hello World" },
        { id: 2, title: "My First Post" }
    ]);
});

app.listen(3000, () => console.log("Server running on port 3000"));

运行命令:

node app.js

访问 http://localhost:3000/posts 即可看到输出结果。


阶段二:微服务架构(Microservices Architecture)

通俗解释:

  • 把一个大项目拆分成多个“独立”的小项目(如:用户服务、文章服务、评论服务)
  • 更容易维护和扩展

微服务拆解图:

+-------------+
| 用户服务    |
+-------------+
       ↑
+-------------+
| 文章服务    |
+-------------+
       ↑
+-------------+
| 评论服务    |
+-------------+

示例:拆出一个独立的文章服务

新建一个目录 blog-api,创建如下结构:

/blog-api
  └── index.js
  └── routes/postRoutes.js

postRoutes.js

const express = require('express');
const router = express.Router();

router.get('/posts', (req, res) => {
    res.json([{ id: 1, title: "Cloud Native is Fun!" }]);
});

module.exports = router;

index.js

const express = require('express');
const postRoutes = require('./routes/postRoutes');

const app = express();
app.use('/api', postRoutes);

app.listen(4000, () => console.log("Post Service Running on 4000"));

现在你可以分别启动多个服务,实现模块化开发!


阶段三:云原生架构(Cloud Native Architecture)

通俗解释:

  • 在云端自动运行、弹性伸缩、自我修复的架构
  • 使用容器化(Docker) + 编排系统(Kubernetes)

主要技术栈:

技术 作用
Docker 将应用打包成容器镜像
Kubernetes 自动管理容器的启停、负载均衡、扩容缩容等
Helm Chart 管理复杂的 Kubernetes 配置
CI/CD 实现自动化部署

示例:给我们的博客 API 写一个 Dockerfile

# blog-api/Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 4000
CMD ["node", "index.js"]

构建并运行 Docker 容器:

docker build -t blog-api .
docker run -d -p 4000:4000 blog-api

访问 http://localhost:4000/api/posts 可以看到结果。


实战项目:从单体到云原生的简单演变

实战项目:从单体到云原生的简单演变

我们将一步步完成以下内容:

  1. 构建一个简单的博客 API(单体)
  2. 拆分成微服务(多服务)
  3. 容器化部署(Docker)
  4. 用 Kubernetes 管理容器(云原生)

第一步:创建单体服务

前面已经演示过一个完整的 Express 服务,这里不再赘述。

第二步:拆分微服务

  • 创建两个服务:
    • user-service
    • post-service

每个服务单独监听不同端口。

第三步:用 Docker 打包每个服务

分别为 user-servicepost-service 编写 Dockerfile 并构建镜像。

例如:

cd user-service
docker build -t user-service .

第四步:用 Kubernetes 部署服务

如果你本地安装了 Minikube,可以尝试以下操作:

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: post-service
spec:
  replicas: 2
  selector:
    matchLabels:
      app: post-service
  template:
    metadata:
      labels:
        app: post-service
    spec:
      containers:
      - name: post-service
        image: post-service
        ports:
        - containerPort: 4000

运行:

kubectl apply -f deployment.yaml
kubectl get pods

这样你的服务就在 Kubernetes 上跑起来了!


常见问题解答(FAQ)

Q1:我学完这些就能去公司做后端了吗?

A:这只是起点!实际项目中还会涉及数据库设计、API 测试、权限管理等内容,后续还要继续学习。

Q2:云原生真的必须学吗?

A:是的。现在很多大厂都在推动云原生架构,掌握这项技能会让你更有竞争力。

Q3:我没有服务器能练 Docker 吗?

A:当然可以!Docker 是本地运行的,只要你电脑配置够用就可以练习。

Q4:Kubernetes 太难了怎么办?

A:先理解基本概念(Pod、Service、Deployment),不要一开始就追求全会。


学习建议:下一步该做什么?

初级路径(已完成):

  • ✅ 学会使用 Express 写接口
  • ✅ 学会拆分微服务
  • ✅ 学会使用 Docker 容器化部署
  • ✅ 初识 Kubernetes 基础知识

中级路径(建议下阶段学习):

  • ✅ 学习使用 MongoDB 或 MySQL 作为数据源
  • ✅ 学习 RESTful API 设计规范
  • ✅ 学习 JWT 身份验证机制
  • ✅ 使用 Jenkins/GitLab CI 搭建自动化部署流水线
  • ✅ 进阶学习 K8s 的网络和服务发现原理

推荐资源:

  • 免费课程:freeCodeCamp 后端开发
  • 图书推荐:《深入浅出 Docker》《Kubernetes 权威指南》
  • 工具推荐:Postman(接口测试)、VS Code(代码编辑)

结语:从单体到云原生,每一步都是进步。坚持动手实践,你会很快掌握现代后端开发的核心能力。加油,未来的后端工程师!💪

评论 0

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