文章摘要
OpenWorkers是一个用Rust实现的开源自托管Cloudflare Workers运行时,支持在V8隔离环境中执行JavaScript代码。它提供了KV存储、PostgreSQL、S3兼容存储等绑定功能,以及fetch、crypto等Web API,采用nginx代理+多模块的架构设计,让开发者能在自有基础设施上实现边缘计算能力。
文章总结
开源Rust实现的自托管Cloudflare Workers平台
OpenWorkers是一个基于Rust开发的开源运行时环境,能够在V8隔离环境中执行JavaScript代码,将边缘计算能力引入用户自有基础设施。
核心功能特性
数据绑定支持
- 键值存储(增删改查)
- PostgreSQL数据库连接
- 兼容S3/R2的对象存储
- 服务绑定功能
- 环境变量与密钥管理
Web API兼容
- 完整fetch API支持
- 流式数据处理接口
- 加密功能模块
- 基础文本处理工具
- 异步控制接口
系统架构设计
采用微服务架构,主要组件包括: 1. 前端代理(nginx) 2. 控制面板(dashboard) 3. API网关层 4. 日志服务 5. 分布式执行器(runner) 6. 消息中间件(nats) 7. PostgreSQL数据库 8. 任务调度器
关键技术指标: - V8隔离环境:每个Worker限制CPU(100ms)和内存(128MB) - 定时任务:支持标准cron表达式 - 完全兼容Cloudflare Workers语法
部署方案
仅需准备: 1. PostgreSQL数据库 2. Docker Compose文件 即可快速部署
开发背景
项目历经7年演进: 1. 初期采用vm2沙箱方案 2. 受Cloudflare Workers启发转型 3. 曾基于Deno-core运行两年 4. 最终采用rusty_v8底层重构
核心价值主张: - 数据自主:所有数据保留在自有基础设施 - 成本可控:无按请求计费模式 - 避免锁定:保持与Cloudflare Workers兼容
未来规划
即将推出执行过程录制与回放功能,支持确定性调试。
评论总结
以下是评论内容的总结:
项目介绍与功能支持
- 作者max_lt介绍了OpenWorkers项目,支持在自有基础设施上运行不受信任的JS代码,功能包括fetch、KV、Postgres绑定等,部署简单。
- 引用:"OpenWorkers lets you run untrusted JS in V8 isolates on your own infrastructure."
- 引用:"Self-hosting is a single docker-compose file + Postgres."
技术实现疑问
- vmg12询问是否使用了Cloudflare Worker运行时,还是仅运行在V8隔离环境。
- 引用:"Does this actually use the cloudflare worker runtime or is this just a way to run code in v8 isolates?"
反对供应商锁定
- kachapopopow支持减少对供应商锁定的依赖,希望云服务定价更合理。
- 引用:"I see anything that reduces the reliance on vendor lock-in I upvote."
- 引用:"Cloud services are actually really nice...if you were to ignore the eye watering cost."
与其他方案的比较
- strangescript认为Cloudflare的开发体验不如自托管方案(如Node服务器+Docker)易用。
- 引用:"A plain old node server in a docker container was much easier to manage."
- kristianpaul提到可考虑与openfaas并列的选项。
- 引用:"Interesting option to consider next to openfaas."
功能扩展建议
- st3fan建议集成GitHub实现代码推送自动部署。
- 引用:"Do you plan to hook this up to GitHub...will result in a redeploy?"
- mohsen1希望支持类似Cloudflare Workflows的功能。
- 引用:"Would be nice to build Workflows on top of this too."
正面评价
- mohsen1和st3fan对项目表示赞赏。
- 引用:"This is super nice! Thank you for working on this!"
- 引用:"This is very nice!"