后端架构演进:从单体到云原生 —— 面向零基础的实战入门教程

熔断背锅人
2025-06-22 06:21
阅读 339

开篇:我们为什么要学后端架构?

开篇:我们为什么要学后端架构?

你可能听说过“前端”和“后端”,简单来说:

  • 前端 是你在浏览器或手机上看到的内容,比如按钮、文字、图片。
  • 后端 是支撑这些内容的“大脑”,它处理用户的请求,与数据库交互,并返回结果。

当我们说“后端架构”的时候,其实是在讨论如何组织后端代码的结构,让它既能应对小项目,也能支持大规模的互联网应用(比如淘宝、微信等)。

本教程将带你了解后端架构是如何一步步发展起来的,包括:

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

我们会通过一个简单的项目来演示每一种架构的样子。即使你是零基础,只要你有基本的编程理解能力,就能轻松跟下来!


环境准备:搭建开发环境

环境准备:搭建开发环境

所需工具

我们要使用 Python + Flask 来演示后端架构的演变过程,因为它们学习成本低,适合初学者。

步骤一:安装 Python

前往 https://www.python.org/downloads/ 下载并安装最新版本的 Python。

安装完成后,在终端运行以下命令检查是否安装成功:

python --version

输出应该类似:

Python 3.11.5

步骤二:安装 Flask

Flask 是一个轻量级的 Web 框架,非常适合教学和实验。

在终端运行以下命令安装:

pip install flask

你可以用以下命令验证安装是否成功:

python -c "import flask; print(flask.__version__)"

第一章:初识单体架构

什么是单体架构?

单体架构(Monolithic Architecture) 就是把整个系统的所有功能都放在一个项目里,所有代码写在一起。

它是最简单也最常见的起步方式,适用于小型项目或者刚入行的开发者。

示例:做一个学生管理系统的 API

这个项目会提供两个功能:

  • 获取所有学生信息
  • 添加新学生

目录结构:

student_app/
├── app.py
└── data.json

数据文件 data.json 内容如下:

[
    {"id": 1, "name": "张三", "age": 20},
    {"id": 2, "name": "李四", "age": 22}
]

主程序 app.py 内容如下:

from flask import Flask, request, jsonify
import json

app = Flask(__name__)
DATA_FILE = "data.json"

def read_data():
    with open(DATA_FILE, 'r') as f:
        return json.load(f)

def write_data(data):
    with open(DATA_FILE, 'w') as f:
        json.dump(data, f, indent=2)

@app.route('/students', methods=['GET'])
def get_students():
    data = read_data()
    return jsonify(data)

@app.route('/students', methods=['POST'])
def add_student():
    new_student = request.json
    data = read_data()
    new_student['id'] = len(data) + 1
    data.append(new_student)
    write_data(data)
    return jsonify({"message": "学生添加成功"}), 201

if __name__ == '__main__':
    app.run(debug=True)

运行方法:

进入目录后运行:

python app.py

然后访问:

  • http://localhost:5000/students 查看所有学生
  • 使用 Postman 或 curl 发送 POST 请求添加学生

例如:

curl -X POST http://localhost:5000/students -H "Content-Type: application/json" -d '{"name":"王五","age":23}'

优点

  • 简单易懂,部署方便
  • 适合小项目快速实现

缺点

  • 功能复杂时代码混乱
  • 不利于多人协作
  • 部署更新不方便(改一点就要重启整个服务)

第二章:分层架构(Layered Architecture)

什么是分层架构?

我们将整个系统按照职责分为不同的层,每一层只负责自己的任务。

常见分为三层:

  1. 表现层(Controller):接收请求,调用业务逻辑,返回响应
  2. 业务层(Service):处理具体业务逻辑
  3. 数据访问层(DAO):操作数据库(在这里是文件)

这让我们代码更清晰、更容易维护。

改造上面的项目

新的目录结构:

student_app/
├── app.py           # 控制器层(接收请求)
├── service.py       # 业务层
├── dao.py           # 数据访问层
└── data.json

dao.py(数据访问层):

import json

DATA_FILE = "data.json"

def load_data():
    with open(DATA_FILE, 'r') as f:
        return json.load(f)

def save_data(data):
    with open(DATA_FILE, 'w') as f:
        json.dump(data, f, indent=2)

service.py(业务层):

from dao import load_data, save_data

def get_all_students():
    return load_data()

def create_student(student):
    data = load_data()
    student["id"] = len(data) + 1
    data.append(student)
    save_data(data)
    return True

app.py(控制器层):

from flask import Flask, request, jsonify
import service

app = Flask(__name__)

@app.route('/students', methods=['GET'])
def get_students():
    data = service.get_all_students()
    return jsonify(data)

@app.route('/students', methods=['POST'])
def add_student():
    new_student = request.json
    if service.create_student(new_student):
        return jsonify({"message": "学生添加成功"}), 201
    else:
        return jsonify({"error": "添加失败"}), 500

if __name__ == '__main__':
    app.run(debug=True)

优点

  • 职责分离,便于维护
  • 可读性强,适合团队合作

缺点

  • 如果继续扩展功能,代码依然会变得庞大

第三章:微服务架构(Microservices Architecture)

什么是微服务?

微服务(Microservices) 是指将一个大系统拆分成多个独立的小服务,每个服务都可以单独运行、部署和扩展。

举个例子:

  • 学生服务
  • 成绩服务
  • 用户权限服务

它们之间可以通过 HTTP 接口通信。

实战:拆分学生服务

为了简化说明,我们先模拟创建两个服务:

  • 学生服务(Students Service)
  • 学校信息服务(School Info Service)

学生服务(students_service/app.py):

from flask import Flask, request, jsonify

app = Flask(__name__)
students = [
    {"id": 1, "name": "张三"},
    {"id": 2, "name": "李四"}
]

@app.route('/students', methods=['GET'])
def get_students():
    return jsonify(students)

if __name__ == '__main__':
    app.run(port=5001)

学校信息服(school_info_service/app.py):

from flask import Flask, jsonify
import requests

app = Flask(__name__)

@app.route('/school-info')
def school_info():
    resp = requests.get('http://localhost:5001/students')
    students = resp.json()
    return jsonify({
        "school": "北京大学",
        "student_count": len(students),
        "students": students
    })

if __name__ == '__main__':
    app.run(port=5002)

运行步骤:

  1. 先启动学生服务:
cd students_service
python app.py
  1. 再启动学校信息服务:
cd school_info_service
python app.py
  1. 访问:

优点

  • 模块解耦,各自独立
  • 可以分别部署、扩展不同服务
  • 更容易进行持续集成和交付

缺点

  • 服务间通信复杂
  • 维护部署比单体麻烦

第四章:云原生架构(Cloud Native Architecture)

什么是云原生?

云原生(Cloud Native) 是一种为云平台设计的应用开发和部署方式。它结合了:

  • 容器化技术(如 Docker)
  • 编排系统(如 Kubernetes)
  • 服务发现 & 负载均衡
  • 自动化部署等

简单来说,就是让你的服务能更好地利用云计算资源,弹性、高可用、易于运维。

使用 Docker 容器化你的服务

修改后的项目结构:

student_app/
├── Dockerfile         # 构建镜像所需的脚本
├── app.py             # 主程序
└── requirements.txt   # 依赖库文件

requirements.txt 内容:

flask==2.3.2

Dockerfile 内容:

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["python", "app.py"]

构建镜像并运行:

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

现在你可以通过 http://localhost:5000/students 访问你的服务!

优点

  • 可以统一部署环境
  • 易于自动化和扩展
  • 适合在公有云(AWS、阿里云等)中部署

缺点

  • 需要掌握容器相关知识
  • 初期学习曲线略陡峭

常见问题解答

Q1:为什么不能直接把后端服务和前端写在一个项目里?

A:可以,但不建议。随着功能增多,前后端混在一起会导致代码臃肿,难以管理和维护。现代开发更提倡前后端分离,各司其职。


Q2:我是不是必须学会云原生?

A:不一定。如果你只是做毕业设计或小项目,单体 + 分层就足够了。而如果你打算进大厂或参与企业级项目,云原生就是必备技能。


Q3:为什么推荐使用 Flask 而不是 Spring Boot 或 Django?

A:Flask 是最轻量、最易懂的框架之一,特别适合入门。Spring Boot 和 Django 功能更强,但也更复杂。建议先打好基础再进阶。


学习建议

恭喜你走到了这里!下面是一些学习路径建议,帮助你进一步提升:

方向 学习内容
进阶后端开发 RESTful API 设计规范、数据库连接(SQLAlchemy)、身份认证(JWT)、ORM 工具
微服务深入 API 网关、注册中心(Consul/Nacos)、链路追踪(Jaeger)、配置中心
云原生方向 Kubernetes、Helm、CI/CD 流程(GitHub Actions/Jenkins)、日志监控体系
性能优化 异步处理(Celery)、缓存机制(Redis)、负载均衡与压力测试

总结

本篇文章从零开始,通过一个个可操作的示例,带你了解了后端架构的演变过程:

  1. 单体架构 → 最基础的形式
  2. 分层架构 → 结构更清晰
  3. 微服务架构 → 多服务协同,解耦模块
  4. 云原生架构 → 上云必备,弹性伸缩

无论你现在处于哪个阶段,只要坚持实践、多动手,你就一定能成为一名优秀的后端开发者!

如果你喜欢这篇文章,欢迎收藏、分享给朋友~我们下期再见!🚀

评论 0

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