Skip to content

Commit 7236ae7

Browse files
authored
feat: Cloudflare Workers 处理函数计算中的 CPU 性能问题
1 parent aa3d417 commit 7236ae7

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: Cloudflare Workers 处理函数计算中的 CPU 性能问题
3+
author: iugo
4+
categories: [Cloudflare Workers, 函数计算]
5+
---
6+
7+
原文:
8+
<https://blog.cloudflare.com/unpacking-cloudflare-workers-cpu-performance-benchmarks/>
9+
10+
原文主要讲述了 Cloudflare Workers 和 Vercel 在 CPU 性能方面的一些对比,
11+
在应用上的重点是 React SSR 类应用的 TTFB 测试.
12+
13+
其中我认为的一些关键点是:
14+
15+
1. 函数计算的调度问题 (非 CPU 计算消耗).
16+
2. Node.js 对 V8 调参导致的性能问题.
17+
3. 代码中处理 buffer 不当导致的内存占用及后续 GC 的问题.
18+
4. Node.js 的非 Web 标准化问题, 比如 Streams API.
19+
5. Cloudflare Workers 团队在解决自己问题的过程中如果发现了生态问题, 甚至竟品问题,
20+
也期望一并解决.
21+
22+
我们的核心业务均由函数计算承担, 在此处有许多经验. 函数计算中的几大时间消耗为:
23+
24+
1. 调度时间
25+
2. (可能) 冷启动时间
26+
3. 执行时间 (被计算为 CPU 消耗)
27+
28+
一般来说, "执行时间" 与函数计算无关. 函数计算需要重点考虑的, 是 "调度时间" 和
29+
"冷启动时间".
30+
31+
作为用户, 一些配置会影响到调度时间, 比如使用什么操作系统, 是否要接入 VPC 等.
32+
33+
想要优化冷启动时间, 则应该将重点放在 "架构" 上. 一般来说, 解释型语言的冷启动时间会小很多.
34+
比如函数计算一般使用 Python, JavaScript, 而不使用 Java.
35+
36+
另外一种优化就是 "预热", 可以理解为提前启动. 但是预热是有成本开销的,
37+
并且我认为预热是有悖于函数计算模式的. 我更倾向于减少冷启动时间, 而不是预热.
38+
39+
Cloudflare Workers 针对调度问题的优化, 是所有用户乐于看到的. 加量不加价,
40+
并且默认生效, 用户无需任何额外配置.
41+
42+
Node.js 的非 Web 标准化问题, 就是我们几年前选型 Deno, 而非 Node.js 的关键原因.
43+
即便我们不是全栈团队, 也希望在 JS 领域, 技术栈尽量统一, 减少不必要的消耗.
44+
45+
最后, 看到问题就想要去解决, 无论这个问题是否影响到自身利益,
46+
这不仅是工程师应该有的素质, 也是每一个人应该有的素质.
47+
就像走路时如果看到了脚边的垃圾, 可以顺手捡起来扔到垃圾箱中.
48+
49+
不是鼓励大家无偿奉献, 而是举手之劳, 何乐而不为?
50+
每个人多付出 1%, 就会让整个世界进步不只 100%.

0 commit comments

Comments
 (0)