后端架构演进:从单体到云原生

开发者晨报
2025-06-12 16:47
阅读 630

——写给零基础初学者的实战教程


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

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

你有没有想过,当你在浏览器上打开一个网页,或者用手机登录某个App时,背后到底发生了什么?这些操作的背后,其实是一台或多台服务器在处理请求,比如登录验证、数据显示、订单生成等。而“后端架构”,说白了就是指这些服务器是如何搭建起来的。

随着互联网的发展,后端架构也经历了从简单到复杂的演变过程:

  1. 早期阶段:所有功能都放在一台服务器上 —— 这叫“单体架构”。
  2. 中期阶段:把系统拆分成多个服务模块 —— 叫“微服务架构”。
  3. 现在阶段:利用云计算技术实现自动部署和弹性扩缩容 —— 叫“云原生架构(Cloud Native)”。

本篇文章会带你从零开始,一步步搭建一个最简单的后端项目,并通过这个项目来了解架构的演变过程。


二、环境准备:我们先搭好开发“工地”

二、环境准备:我们先搭好开发“工地”

你需要准备以下几样工具:

1. 安装编程语言

推荐使用 PythonNode.js(本文以 Python 为例)

2. 安装代码编辑器

推荐使用 VS Code:轻量级且插件丰富

3. 安装 Flask 框架(用于构建 Web API)

Flask 是一个轻量级的 Python Web 框架,非常适合初学者

pip install flask

三、核心概念:搞懂几个关键词

三、核心概念:搞懂几个关键词

1. 单体架构(Monolith)

所有功能都集中在一个程序里,比如用户登录、商品展示、订单管理都在同一个工程中。

优点:

  • 开发快
  • 部署简单

缺点:

  • 后期难维护
  • 修改一个小功能可能要重启整个系统

2. 微服务架构(Microservices)

把大系统拆成多个小系统,每个系统独立运行并通信,比如用户系统、订单系统、支付系统分别部署。

优点:

  • 更容易维护
  • 可扩展性强

缺点:

  • 系统间通信复杂
  • 需要额外管理多个服务

3. 云原生(Cloud Native)

使用云计算平台(如 AWS、阿里云),结合 Docker 和 Kubernetes 等技术,实现自动部署、弹性扩容、高可用性等能力。

常见组件:

  • Docker:容器化应用
  • Kubernetes (K8s):管理容器
  • 服务网格(Service Mesh)
  • 持续集成 / 持续部署(CI/CD)

四、实战项目:从“单体”到“云原生”的演化演示

我们将通过一个项目来逐步体验三种架构风格的演变过程。这个项目是一个简化版的“博客系统”,支持以下功能:

  • 创建文章
  • 显示文章列表

Step 1:使用 Flask 构建一个简单的单体架构 API

新建一个文件 app.py

from flask import Flask, request, jsonify

app = Flask(__name__)

# 模拟数据库(字典)
posts = {}
post_id_counter = 1

@app.route("/posts", methods=["GET"])
def get_posts():
    return jsonify(posts)

@app.route("/posts", methods=["POST"])
def create_post():
    global post_id_counter
    data = request.json
    title = data.get("title")
    content = data.get("content")
    posts[post_id_counter] = {"title": title, "content": content}
    post_id_counter += 1
    return jsonify({"id": post_id_counter - 1})

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

启动服务:

python app.py

测试接口:

  • 获取文章:http://localhost:5000/posts (GET)
  • 创建文章:用 Postman 或 curl 发送 POST 请求,JSON 数据示例:
    {
      "title": "Hello World",
      "content": "这是我的第一篇博客。"
    }
    

🎉 成功!这就是一个最原始的单体架构后端。


Step 2:微服务化改造 —— 拆分成两个独立服务

假设我们要将“用户系统”和“文章系统”分开。

我们现在创建一个新的服务:user_service.py

from flask import Flask, request, jsonify

app = Flask(__name__)

users = {1: {"name": "Tom"}}

@app.route("/users/<int:user_id>", methods=["GET"])
def get_user(user_id):
    user = users.get(user_id)
    if not user:
        return jsonify({"error": "User not found"}), 404
    return jsonify(user)

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

再修改原来的 app.py,增加调用用户服务的功能:

import requests

@app.route("/posts_with_user")
def get_posts_with_user():
    result = []
    for pid, p in posts.items():
        # 调用用户服务获取用户信息(假设固定为用户1)
        user_response = requests.get("http://localhost:5001/users/1")
        user_data = user_response.json()
        full_post = {"id": pid, "user": user_data, "post": p}
        result.append(full_post)
    return jsonify(result)

现在我们有了两个服务:

这就是典型的微服务架构了!


Step 3:使用 Docker 容器化我们的服务(迈向云原生)

创建 Dockerfile 文件(文章服务)

新建 Dockerfile

FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

创建 requirements.txt

flask==2.0.3
requests==2.26.0

构建镜像:

docker build -t blog-service .

运行容器:

docker run -d -p 5000:5000 blog-service

同样方法也可以将用户服务容器化。


Step 4:使用云服务部署你的服务(可选)

可以尝试将你的服务部署到云平台,比如:

这一步是云原生中的“上线部署”部分,属于进阶内容,初学者建议先理解前几步内容。


五、新手常见问题解答(FAQ)

Q1:我为什么需要学习这么多架构?

因为你可能会加入不同规模的公司或团队,不同的架构适用于不同的场景。掌握基本概念有助于你快速适应工作环境。

Q2:为什么一开始不直接用高级框架(如 Spring Boot)?

初学时最重要的是理解“发生了什么”。高级框架虽然强大,但抽象层次较高,不利于入门者快速上手。

Q3:云原生听起来很高大上,是不是很难学?

不难!你可以把它看作是对微服务的一种封装和自动化。只要掌握了基础,后面学习 Docker、K8s 就自然顺理成章了。


六、学习建议:下一步该怎么走?

✅ 基础巩固阶段

  • 继续练习 Flask(加数据库、登录功能)
  • 学习 RESTful API 的设计规范
  • 写一个小的博客系统或任务管理系统

📈 进阶提升阶段

  • 学习使用 MySQL / MongoDB 连接真实数据库
  • 学习使用 Docker 编排多服务
  • 理解 CI/CD 流程(GitHub Actions、Jenkins)

☁️ 云原生之路

  • 看懂 Kubernetes 的基本操作
  • 实践服务网格 Istio
  • 探索监控和日志方案(Prometheus + Grafana)

总结一下:

阶段 名称 特征
1 单体架构 所有功能在一个项目中
2 微服务架构 功能分模块,各自独立运行
3 云原生架构 自动部署、弹性伸缩、高可用

你现在完成了从零搭建一个后端架构的全过程,也理解了它的演化路径。恭喜你迈出了成为优秀后端工程师的第一步!


如果你喜欢这种通俗易懂、边学边练的方式,欢迎继续关注后续系列课程《从 Flask 到 Django》《走进 Docker 的世界》《玩转 Kubernetes》等。

让我们一起,构建更强大的后端系统!🚀

评论 0

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