首页 / 知识库 / 系统架构体系 / 项目到底如何部署

18 - 无状态思维:现代后端的核心原则

前面几章反复出现一个词:无状态。它不是一个可有可无的细节,而是让整套现代方案(Serverless + 云服务)能成立的核心原则。这一章把它彻底讲透。

什么是”状态”

状态:应用运行过程中产生的、需要被记住的数据。比如:

  • 用户登录后的会话信息
  • 用户上传的文件
  • 购物车里的东西
  • AI 对话的历史记录

有状态:把这些数据存在后端实例自己身上(进程内存、本地磁盘)。 无状态:后端实例自己不保存任何这类数据,每次请求需要的数据都从外部(数据库、对象存储、缓存)现取现存。

为什么现代后端必须无状态

回顾 Serverless 的脾气(第 14 章):实例随时被创建、销毁,请求可能落到不同实例上。在这种环境下:

  • 如果你把登录会话存在实例 A 的内存里,用户下一个请求被分到实例 B → B 不认识他,登录失效
  • 如果你把上传的文件存在实例本地磁盘 → 实例一销毁,文件全没
  • 如果你把数据存内存,实例一扩缩容 → 数据丢失/不一致

一句话:实例是”用完即弃”的,任何存在实例身上的东西都靠不住。

所以现代后端必须无状态:实例只负责处理逻辑,不负责保存数据。

无状态怎么做:状态全部外置

把各种状态搬到实例之外的专门服务里:

状态放哪(外置到哪)
业务数据(用户、订单、对话记录)云数据库(第 16 章)
用户上传的文件、图片OSS 对象存储
登录会话 / 临时缓存云 Redis 等缓存服务,或用无状态的 Token(JWT)
AI 能力AI 云 API(第 17 章,能力本身也在外部)

这样一来,后端实例本身就变成了一个纯粹的”处理器”:请求来了,从外部取数据 → 算 → 把结果存回外部 → 返回。它自己不留任何东西,随便被开被关都没关系。

[配图:中间是多个可随时增减的”无状态后端实例”,四周是数据库、OSS、缓存、AI API 等外部服务;数据都在四周,实例只是”过路的处理器”]

无状态带来的巨大好处

正因为无状态,现代方案的种种优点才成立:

  • 能自动伸缩:实例长得一模一样、可随意增减,平台才敢帮你自动扩缩容
  • 能缩容到零:没人用时全关掉也不丢数据,才能真正省钱
  • 挂了不怕:一个实例挂了,换一个继续,用户无感
  • 好部署好回滚:实例不带数据,随便替换新旧镜像

反过来看:正是”无状态”这个设计,让 Serverless、自动伸缩、按量计费这些好处能落地。它是整套现代方案的地基

一个常见的思维转变

从传统到现代,最需要转变的一个习惯:

传统:“先在服务器本地存着,反正就一台机器。” 现代:“我这段代码可能同时跑在 10 个实例上,也可能下一秒被换掉——所以任何要记住的东西,都得放到外面。”

写后端代码时,时刻问自己一句:“如果这个实例下一秒就被销毁,会丢东西吗?” 如果会,那这个东西就该外置。

小结

  • 状态 = 需要被记住的数据;无状态 = 后端实例自己不存这些数据。
  • Serverless 实例随时增减销毁,所以任何存在实例身上的东西都不可靠
  • 做法:把状态全部外置——数据进云数据库、文件进 OSS、会话用缓存/Token、AI 用云 API。
  • 无状态是 Serverless 自动伸缩、缩容到零、容灾、易部署这些好处能成立的地基
  • 写代码时常问:“实例下一秒被销毁会丢东西吗?”

到这里,前端、后端、数据、AI 都安置好了。剩下最后一块拼图:怎么让用户用一个好记的网址、通过安全的 HTTPS 访问到它们。进入第六部分。


下一章 → 19 - 域名与 DNS 配置