~/VibeHandbook
免费 PDF

13 · 02

几个行话术语,破译一下

  • 冷启动(Cold start)——当代码有一段时间没运行过时,平台必须把它唤醒。那第一个请求会更慢(从几分之一秒到几秒)。边缘函数几乎没有这个问题;无服务器函数有时有;常驻运行的容器和 则没有。对大多数应用来说它是看不见的;但对一个要求利落的结账流程来说,它可能很要紧。
  • 扩展(Scaling)——在处理更多用户时不至于崩溃。自动扩展意味着平台替你增加容量。手动扩展意味着你点击按钮,否则它就在负载下直接挂掉。"缩减到零(scales to zero)"是你会经常看到的一个相关说法:当没人用你的应用时,它不花钱。
  • 状态(State)——需要持续保留的数据(一个数据库、上传的文件、一个用户会话)。静态层和无服务器层通常是"无状态的"——它们在请求之间忘记一切——所以状态存放在一个独立的数据库或存储服务里。这就是为什么几乎每个真实应用都是"你的托管加上某处的一个数据库",而不是一个魔法盒子。
  • 区域(Region)——你的代码和数据在物理上所处的世界的哪个部分。它影响速度(越近越快),有时还影响法律(某些数据必须留在特定国家)。对第一个项目,选离你用户最近的区域,然后继续往前走。

下面是一个请求所走过的完整旅程,以及每一块各自待在哪里。浏览器与就近的边缘对话,边缘交付缓存的文件或唤醒你的代码,而代码在需要记住什么时就伸手去找数据库:

   ┌─────────┐      ┌──────────────┐      ┌──────────────┐      ┌──────────┐
   │ BROWSER │ ───▶ │  EDGE / CDN  │ ───▶ │ SERVER CODE  │ ───▶ │ DATABASE │
   │  用户   │      │   靠近用户   │      │  函数/盒子   │      │   状态   │
   └─────────┘      └──────────────┘      └──────────────┘      └──────────┘
        ▲                  │                      │                   │
        │   缓存命中       │     无状态           │   记住            │
        └──────────────────┘   (请求之间          │   数据            │
            快速响应             遗忘)    ◀───────┘ ◀─────────────────┘

想离线阅读?

免费下载整本书的 PDF 或 EPUB。