Cloudflare Workers 入门 (1):告别冷启动,拥抱 V8 边缘计算

学习笔记
系列教程
发布于
更新于

1. 引言:Serverless 的“隐形杀手”

作为开发者,我们都喜欢 Serverless(无服务器架构)。不需要管理服务器、按量付费、自动扩缩容,听起来很美妙。

但是,如果你用过 AWS Lambda 或 Google Cloud Functions,你一定遇到过冷启动 (Cold Start) 的问题。当你的函数一段时间没人访问,云厂商会把它“冻结”甚至回收。下一个倒霉的用户访问时,系统需要重新分配资源、启动容器、加载运行时(Runtime)、加载代码……这一套下来,几百毫秒甚至几秒钟就过去了。

对于 API 接口来说,几秒钟的延迟是致命的。

那么,有没有一种技术,既能保留 Serverless 的便利,又能像访问静态资源一样快?

答案就是 Cloudflare Workers。

2. 核心原理:为什么 Workers 这么快?

Cloudflare Workers 并没有使用传统的“容器 (Container)”或“虚拟机 (VM)”架构,而是采用了一种基于浏览器的技术:V8 Isolates (隔离)

让我们做一个通俗的比喻:

  • 传统 VPS (虚拟机): 就像是一栋独栋别墅。你需要自己盖房子、通水电、买家具(安装 OS、配置环境),启动很慢,资源独占,但开销巨大。
  • 传统 Serverless (容器): 就像是公寓套房。虽然比别墅轻量,但每个租户入住时,还得经历“打扫房间、拿钥匙、开门”的过程(启动 Docker 容器、加载 Node.js 进程),这依然需要时间。
  • Cloudflare Workers (Isolates): 就像是酒店里的一个个房间,甚至只是大堂里的一个个座位
    • 整个酒店(Cloudflare 的服务器)已经一直运行着一个巨大的浏览器引擎(V8)。
    • 当请求到来时,它不需要启动新的操作系统,也不需要启动 Node.js 进程。
    • 它只需要在这个已经运行的引擎里,创建一个新的“上下文 (Context)”——这就是 Isolate

技术对比数据:

特性AWS Lambda (容器/MicroVM)Cloudflare Workers (V8 Isolates)
冷启动时间100ms ~ 几秒< 5ms (几乎为零)
内存开销高 (包含整个 Node/Python 运行时)极低 (仅包含你的代码)
上下文切换慢 (进程级切换)极快 (内存级切换)

3. “边缘”到底在哪里?

除了架构上的革新,Workers 的另一个杀手锏是 Regionless (无区域)

以前我们在 AWS 创建服务,第一件事是选区:us-east-1 (弗吉尼亚) 还是 ap-northeast-1 (东京)?如果你选了东京,纽约的用户访问就会慢。

但在 Cloudflare Workers 中,你不需要选择区域。你的代码会被瞬间分发到 Cloudflare 全球 330+ 个城市的边缘节点

  • 上海的用户访问,代码就在上海(或临近)节点运行。
  • 伦敦的用户访问,代码就在伦敦节点运行。

这也是为什么它被称为 Edge Computing (边缘计算):计算发生在离用户最近的地方,而不是在大洋彼岸的数据中心。

4. 动手时刻:Hello World

说了这么多理论,我们来看代码。Workers 使用标准的 Web API (Fetch API),如果你写过前端 JS,你会觉得非常亲切。

环境准备:

你需要安装 Node.js,然后安装 Cloudflare 的命令行工具 Wrangler:

npm install -g wrangler

登录与初始化:

wrangler login
wrangler init my-first-worker

编写代码 (src/index.ts):

这就是一个最基础的 Worker,它接收请求,并返回文本:

export default {
	async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
		// 解析请求信息
		const url = new URL(request.url);
		
		// 简单的路由逻辑
		if (url.pathname === "/hello") {
			return new Response("Hello from the Edge!");
		}

		// 返回 JSON
		return new Response(JSON.stringify({
			message: "Welcome to Cloudflare Workers",
			method: request.method,
			time: new Date().toISOString()
		}), {
			headers: { "content-type": "application/json" }
		});
	},
};

本地运行:

wrangler dev

按下 b 键,浏览器就会自动打开。你会发现,启动速度快得惊人!

5. 总结

Cloudflare Workers 并不只是“另一个 Serverless 平台”。通过 V8 Isolates全球边缘网络,它重新定义了后端代码的运行方式。

它的优势总结:

  1. 极速冷启动: 毫秒级响应,告别加载等待。
  2. 全球部署: 代码自动运行在离用户最近的节点。
  3. 免费额度真香: 每天 10 万次请求的免费额度,足够个人项目和小微企业使用。
  4. 标准 API: 基于 Web Standards (Fetch, Request, Response),前端开发者无缝切换。