mcpField
F
fastlike

fastlike

github.com/fastly云与 DevOps3640 次安装1 周前更新
代码仓库

关于 fastlike

fastlike 是用 Go 实现 Fastly Compute ABI 的本地运行时,可在本地运行编译后的 WebAssembly 程序。它也以可执行代码说明 Compute 平台原语和请求生命周期,适合调试及研究 Compute 内部机制。

主要功能

  1. 01本地运行 WebAssembly 程序
  2. 02实现 Fastly Compute ABI
  3. 03支持缓存、KV 与后端请求
  4. 04提供请求追踪和性能分析
  5. 05源码作为 Compute 参考规范

适用场景

  1. 01本地调试 Fastly Compute 应用
  2. 02分析 Compute 请求生命周期
  3. 03检查后端调用和缓存行为
  4. 04为请求生成性能追踪

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/fastly/fastly-agent-toolkit --skill fastlike

安装后在 Claude Code 中输入/fastlike确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
abi.md
backends.md
build.md
config.md
profiling.md
test.md
understanding-compute-from-source.md

详细介绍

触发条件和范围

适用于:Fastly Compute、Compute@Edge、Fastly 上的 WASM、fastlike、XQD ABI、Compute 请求生命周期、508 循环检测、后端子请求、正文流式传输、本地 Compute 应用性能分析、在 Go 代码中嵌入 Fastly Compute 运行时,或任何关于 Compute 平台原语内部工作机制的问题(缓存、KV 存储、边缘速率限制、ACL、地理位置、密钥存储、配置存储、字典、日志记录、动态后端、请求合并、异步 I/O)。

不适用于:Fastly VCL(请使用 falco)、Fastly CLI/API(请使用 fastly-cli 或 fastly)、Viceroy、CDN 比较、WAF、Terraform、通过 API 清除缓存,或 Fastly 日志记录/统计信息配置。

Fastlike — 本地 Compute 运行时与参考

Fastlike 是 Fastly Compute ABI 的 Go 实现。它可在本地运行已编译的 WebAssembly 程序,并实现 Fastly 生产 Compute 平台提供的 249 多个主机函数:后端、字典、KV 存储、缓存、地理位置、速率限制、ACL、密钥存储等。

同样重要的是,fastlike 源代码是关于 Fastly Compute 工作原理最完整的程序化规范——其中的 ABI 实现以可执行代码的形式记录了每个平台原语、请求生命周期细节和数据结构。

Fastlike 文档:https://github.com/avidal/fastlike

将源代码作为 Compute 参考

如果可以在本地访问 fastlike 源代码(默认路径:~/src/fastlike),请参考以下路径来回答具体的 Compute 问题:

问题阅读此文件原因
“请求生命周期是如何运作的?”instance.go、xqd_http_downstream.go每个请求的设置、执行和下游处理
“X 有哪些 ABI 函数?”xqd_*.go 文件每个文件实现一组相关的 ABI 函数
“后端子请求是如何运作的?”xqd_backend.go、backend.go请求发送、动态后端、超时
“缓存是如何运作的?”xqd_cache.go、xqd_http_cache.go、cache.go缓存操作、Vary、替代键、请求合并
“KV 存储是如何运作的?”xqd_kv_store.go、kv_store.goCRUD 操作、分页、基于生成版本的并发控制
“速率限制是如何运作的?”xqd_erl.go、erl.go速率计数器、惩罚箱、阈值检查
“ACL 是如何运作的?”xqd_acl.go、acl.go基于 CIDR 的 IP 筛选、最具体匹配
“有哪些配置选项?”options.go运行时的所有 With* 函数式选项
“操作可能返回哪些错误代码?”constants.go所有 XQD 状态码和错误类型
“性能分析器如何运作/跟踪数据是什么样的?”profile.go、profile_json.go、docs/profiling.md跟踪数据模型、JSON 线格式、深度模式指标、编码器

如需完整指南,请参阅 understanding-compute-from-source.md。

从源代码安装

需要 Go 1.24+。

# Clone and build
git clone https://github.com/avidal/fastlike.git ~/src/fastlike
cd ~/src/fastlike
make build        # Creates bin/fastlike

# Or install to GOPATH/bin
make install

# Or install directly
go install fastlike.dev/cmd/fastlike@latest

快速开始

bin/fastlike 示例使用源码构建。 从项目目录使用其绝对路径,或使用已安装的二进制文件 fastlike。

# Minimal: WASM + single backend. The wasm path is positional.
bin/fastlike -backend localhost:8000 app.wasm

标志可以放在 wasm 路径的任一侧。

在 macOS 上,请避免绑定到端口 5000——AirTunes/AirPlay Receiver 默认监听该端口,并会占用连接。请改用其他端口(例如 -bind localhost:8000),或在“系统设置”中停用 AirPlay Receiver。

Fastlike 与 Viceroy

特性FastlikeViceroy
语言GoRust
地理位置自定义 JSON 文件(-geo)内置默认值
热重载SIGHUP(-reload)需要重启
安装go install 或 make buildcargo install 或 fastly compute serve
本地后端-backend name=host:portfastly.toml 中的 [local_server.backends]

何时使用 Fastlike:非 Rust Compute 应用、需要自定义地理数据、需要热重载或进行调试时。 何时使用 Viceroy:使用 cargo-nextest 的 Rust Compute 应用、Component Model 项目,或使用 fastly compute serve 时。

常见配置

使用命名后端:

bin/fastlike \
  -backend api=api.example.com:8080 \
  -backend cache=redis:6379 \
  -backend localhost:8000 \
  app.wasm

启用热重载的开发模式:

bin/fastlike -backend localhost:8000 -reload -v 2 app.wasm

发送 SIGHUP 即可重新加载 WASM,无需重启。

使用内置性能分析器:

bin/fastlike -backend localhost:8000 -profile-ui localhost:6060 app.wasm

打开 http://localhost:6060/ 查看追踪索引。每个请求都会生成 /r/{id}(HTML)或 /r/{id}.json(规范的原生 JSON;也支持 .chrome.json、.firefox.json、.pprof)。添加 -profile deep 可获取请求体字节数、缓存结果、标头和 wasm 堆指标。非回环地址上的 -profile-ui 需要 -profile-auth TOKEN(或显式使用 -profile-insecure-ui)。参见 profiling.md。

完整配置:

bin/fastlike \
  -bind 0.0.0.0:5000 \
  -backend localhost:8000 \
  -dictionary config=./config.json \
  -kv store=./data.json \
  -config-store settings=./settings.json \
  -secret-store secrets=./secrets.json \
  -acl blocklist=./acl.json \
  -logger output=./logs.txt \
  -geo ./geodata.json \
  -compliance-region us-eu \
  -v 2 \
  -reload \
  app.wasm

必需参数

参数说明
<wasm-file>WebAssembly 程序的路径参数(必需)
-backend VALUE 或 -b VALUE后端服务(必需,可重复指定)

可选标志

标志默认值描述
-bind ADDRlocalhost:8000服务绑定地址
-reloadfalse启用 SIGHUP 热重载
-v INT0详细程度(0-2)
-dictionary NAME=FILE or -d-从 JSON 加载词典
-kv NAME[=FILE]-KV 存储(空存储或从 JSON 加载)
-config-store NAME=FILE-从 JSON 加载配置存储
-secret-store NAME=FILE-从 JSON 加载密钥存储
-acl NAME=FILE-从 JSON 加载 ACL
-logger NAME[=FILE]-日志端点(文件或 stdout)
-geo FILE-地理位置 JSON 文件
-compliance-region REGION-合规区域(none、us-eu、us)
-profile MODEtraceoff、trace、native、combined、deep。参见 profiling.md。
-profile-ui ADDR-在 ADDR 上绑定性能分析 UI 监听器(使用与 -bind 不同的套接字)。
-profile-auth TOKEN-UI 请求所需的 Bearer 令牌。除非设置了 -profile-insecure-ui,否则非环回 -profile-ui 必须提供此令牌。
-profile-insecure-uifalse允许非环回 -profile-ui 不设置 -profile-auth(仅在外部身份验证保护下使用)。
-profile-retain N256已完成跟踪的 LRU 大小。
-profile-backend-cap N512每个请求记录的后端调用上限。
-profile-async-grace DUR100msfinalize 等待正在执行的异步后端的时长。传入 0 可禁用。
-profile-dir PATHcwd存放 wasm-symbols-{pid}.json 和各进程性能分析产物的目录。

参考资料

主题文件适用场景
从源码理解 Computeunderstanding-compute-from-source.md通过阅读 fastlike 的实现来理解 Compute 内部机制
性能分析profiling.md按请求查看 hostcall 和后端跟踪、深入指标、原生 JSON 架构、pprof 导出
后端backends.md配置命名后端、全匹配后端和微服务路由
配置config.md为字典、KV 存储、密钥、ACL、地理位置创建 JSON 配置文件
构建build.md从源码构建 Fastlike、运行代码检查工具、使用 make 目标
测试test.md运行 Go 测试和 Fastly Compute ABI 规范测试
ABIabi.mdFastly Compute ABI 内部机制、实现新的 ABI 函数、句柄系统

评论

支持 Markdown