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

Await等等我
2025-06-27 09:21
阅读 263

开篇:这是什么?我能用它做什么?

开篇:这是什么?我能用它做什么?

你有没有想过,当你打开一个网站或App时,背后是怎样的一套系统在为你服务?这套系统,就是我们说的“后端”。

后端可以理解为藏在背后、默默工作的程序。它的任务包括处理用户请求、与数据库交互、执行计算等。

而“后端架构”则决定了这个系统的结构是简单粗暴还是灵活高效。今天我们要聊的,就是后端架构是怎么一步一步发展起来的——从最初的单机运行,到现在的“云原生”架构。

简单来说:

  • 单体架构(Monolith):所有功能写在一个程序里,像一个大蛋糕。
  • 微服务架构(Microservices):把蛋糕切成了很多小块,每一块独立运作。
  • 云原生架构(Cloud-Native):这些小块被部署在云端,自动扩容、自我修复,更聪明、更高效。

接下来,我们会一起从零开始学习这些架构的区别,并通过代码示例来感受它们的变化。


环境准备:搭建开发环境

环境准备:搭建开发环境

在写代码之前,我们需要先准备好工具和环境。

📌 新手建议:不要跳过这一步,否则可能遇到意想不到的问题!

所需工具列表:

工具名称 用途说明
Visual Studio Code 写代码的编辑器(轻量、免费)
Node.js + npm JavaScript 运行环境,用来跑我们的服务器代码
Postman 发送 API 请求的小工具
Docker 构建和运行容器(后面会讲)
Git & GitHub 版本控制和代码托管

安装步骤:

  1. 下载安装 VSCode

  2. 安装 Node.js 和 npm

    • 推荐 LTS 版本:https://nodejs.org/en/download/
    • 安装完成后,在命令行输入:
      node -v
      npm -v
      
      如果能看到版本号,说明安装成功。
  3. 安装 Postman

  4. 安装 Docker(可选)

    • Mac / Windows 用户建议安装 Docker Desktop
    • Linux 用户可用命令安装,如 Ubuntu 可执行:
      sudo apt update && sudo apt install docker.io
      
  5. 注册 GitHub 账号

完成这些后,你的开发环境就准备好了!下面进入正式内容。


核心概念:通俗易懂的讲解

数据库设计模型-1

核心概念:通俗易懂的讲解

我们现在来看看几个重要的后端架构概念。别担心,我会用最简单的语言解释清楚。

1. 单体架构(Monolith)

类比:一栋大楼,所有房间都在一栋楼里。

这是最早的架构方式。整个应用的所有功能都打包成一个程序,部署在同一台服务器上。

优点:

  • 简单易懂
  • 不需要复杂的配置
  • 适合小型项目起步

缺点:

  • 随着功能变多,代码越来越庞大,维护困难
  • 修改一个小功能都要重新部署整个系统
  • 扩展性差(比如访问量突增时难以快速扩容)

2. 微服务架构(Microservices)

类比:一整个社区,每个房子都是独立的房子,但彼此联系。

微服务就是把原本的一大坨程序拆分成多个小的、独立的服务,每个服务只负责一项任务。

举个例子:

  • 用户服务:管理登录注册
  • 商品服务:管理商品信息
  • 支付服务:处理支付逻辑

它们可以分别开发、部署和升级,通过网络互相通信。

优点:

  • 模块化程度高,方便扩展
  • 技术栈更灵活(不同服务可以用不同的语言)
  • 出错影响范围小

缺点:

  • 系统复杂度增加
  • 需要服务间通信机制(如 REST API、gRPC)
  • 对运维要求更高

3. 云原生架构(Cloud-Native)

类比:你的房子搬到了智慧小区,电梯自己上下,水电自己调节。

云原生并不是一种新的编程语言或框架,而是一种构建和运行应用程序的方法,充分利用云计算平台的优势。

关键要素:

技术/方法 作用
容器(Docker) 把应用和环境打包在一起
编排(Kubernetes) 自动管理容器的启动、停止和负载均衡
DevOps 实现开发和运维的一体化自动化
CI/CD 自动测试和部署代码

优点:

  • 弹性好,自动伸缩
  • 故障自愈能力强
  • 更容易实现高并发、高性能

实战项目:从单体到微服务初体验

我们来一步步做一个简化版的博客系统,演示如何从单体架构演变到微服务。

第一步:单体架构项目

我们用 Node.js 创建一个简单的博客 API。

创建项目目录:

mkdir myblog
cd myblog
npm init -y
npm install express body-parser

创建 app.js 文件,内容如下:

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

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

let posts = [];

// 获取所有文章
app.get('/posts', (req, res) => {
    res.json(posts);
});

// 添加一篇文章
app.post('/posts', (req, res) => {
    const post = req.body;
    posts.push(post);
    res.status(201).json(post);
});

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

启动服务:

node app.js

用 Postman 访问:

  • GET http://localhost:3000/posts → 返回空数组
  • POST http://localhost:3000/posts → 提交一个 JSON 数据如 { "title": "你好世界" }

这就是典型的单体架构:一个文件包含了全部功能。


第二步:改造为微服务(用户服务 + 博客服务)

我们把原来的代码拆分为两个服务:

  • user-service(模拟用户登录)
  • blog-service(和前面一样)

新建两个文件夹:

mkdir user-service blog-service

user-service/app.js:

const express = require('express');

const app = express();

app.get('/user', (req, res) => {
    res.json({ username: '张三' });
});

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

blog-service/app.js:

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

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

let posts = [];

app.get('/posts', (req, res) => {
    res.json(posts);
});

app.post('/posts', (req, res) => {
    const post = req.body;
    posts.push(post);
    res.status(201).json(post);
});

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

分别启动两个服务:

node user-service/app.js
node blog-service/app.js

你现在已经有两个服务了!虽然还没有真正通信,但这已经是初步的微服务架构了。


常见问题解答

Q: 为什么要折腾拆分成微服务?单体不是更好吗?
A: 微服务适合中大型项目。例如,某天博客流量暴涨,我们可以只给博客服务加机器,不影响其他模块。

Q: 学完微服务就可以做企业级项目了吗?
A: 差得还远 😂 还要学会服务发现、配置中心、熔断降级等等。不过我们这篇文章只是一个入门引导。

Q: Docker 是必须的吗?
A: 并非必须,但在实际项目中非常有用。它让部署变得简单可控,特别是配合 Kubernetes 使用时。

Q: 我应该继续学 Spring Boot 还是 Node.js?
A: 看你想从事的方向。Java 在企业领域广泛使用,Node.js 适合轻量级和创业公司。


学习建议:下一步我可以怎么学?

学完这篇之后,你可以沿着以下路线继续深入学习:

  1. 掌握 Docker:容器化是现代部署的标准,必学!
  2. 了解 Kubernetes:学会了才能玩转云原生
  3. 学习 REST API 设计规范
  4. 学习数据库设计与连接(MySQL / MongoDB)
  5. 尝试完整的微服务项目,加入服务注册、网关等功能

推荐资料:


结语

恭喜你完成了《后端架构演进:从单体到云原生》的学习!你现在不仅能说出这几个词的含义,还能动手实践最基本的案例。

记住:技术没有难易之分,只有愿不愿意花时间去探索。坚持每天敲代码,很快你也能成为别人眼中的“高手”!

加油吧,未来的程序员 👨‍💻✨

评论 0

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