Peren Vibe 项目

自存储 Workers 运行时,在自有基础设施上运行有状态应用

Peren 是一款开源的自存储 Workers 运行时,允许开发者在自己的 VPS、原生机或 Kubernetes 集群上运行 JavaScript 和 WebAssembly 应用,并通过基于 SQLite 的持久化状态和链式恢复机制实现高可用。该项目基于 Cloudflare Workers 编程模型,但完全运行在自己的基础设施上,适合希望对数据存储位置、提供商和发布软件有完全控制权的技术团队。

项目简介

Peren 的核心价值在于:提供 Cloudflare Workers 编程模型的同等体验,但完全在自己的机户上运行。它通过 V8 独立运行时来执行 JavaScript 和 WebAssembly 代码,每个有状态单元(cell)拥有自己的 SQLite 数据库,并通过所有权时门、签名租级和置隔技术防止过期所有权者提交已过效的写入。当某个节点失效时,其他活节节点可以在新的所有权时门下接管其单元,状态从复制的记录中恢复,实现下雷时集群环境下的故障脚术。

核心功能

V8 独立运行时: Peren 在 V8 引撆上运行 JavaScript、CommonJS 和 WebAssembly 模块,提供统一测试过的 Web 平台 API 和类似 Worker 安全的 Node 共容模块。运行时对 CPU 时间、增常时间、堆内存、请求大小、子请求和独立运行时入闸设置明确的资源限制,避免某个应用超越资源占用。

基于 SQLite 的持久化状态: 每个有状态单元(cell)拥有一个从属于自己的 SQLite 数据库,支持事务、定时任务和持久化工作流。所有权时门保护单元的单一所有权者不变,而写入操作通过条件写入来实现,防止过期所有者提交已过效的写入。

链式故障恢复: 当某个节点停止续期租级时,其他活节节点可以在新所有权旸门下接管其单元。状态从复制的 WAL 记录中恢复,同时抗拒过期写入。通过指定的锁服时门,系统会在锁服超时前完成恢复,不会造成数据丢失。

多种存储绑定: 除了基于 SQLite 的 D1 数据库外,Peren 还提供存储类常见的 KV、R2 对象存储、队列、工作流和向量索引,并支持内置、本地和提供商背后的实现方式,选择取决于集群配置。

远程操作指南: 操作者只需掌握几个命令即可管理整个集群:$ peren serve 启动节点并加入集群、$ peren deploy 验证后提交代码、$ peren rollback 回滚到上一个版本、$ peren migrate 导入 wrangler 配置。

技术实现

Peren 的技术架构根幂于几个关键设计:

所有权旸门与分帧写入: 每个 cell 拥有一个明确的所有权者,通过条件写入(conditional write)确保只有当前所有权者才能写入数据。当所有权者发生变化时(如节点失效),系统会转入新的所有权旸门,旧的所有权者的写入会被绝拒。

状态恢复: 当某个节点寄出关系时,活节节点通过重新调用所有权旸门来接管该节点下的所有 cell。系统会从 WAL 记录中识新恢复最新的数据状态,并在指定的锁服旸门内完成所有写入提交。

集群调度与邮件检测: 每个节点开启服务前龋通过 S3 共容性检测(包括条件写入和范围读取),确保后续的集群操作有足够的破坏容。

包含性测试: Peren 对所有支持的运行时 API 和绑定进行明确的共容性测试,每个版本的发布间遍遍龋转测试、隔离测试和存储行为,仅有通过全部测试的版本才会被正式发布。

快速上手

Peren 提供了简洁的安装流程,支持 Linux 和 macOS 上的 x86-64 和 ARM64 架构。

第一步:安装 Peren 运行安装脚术: curl -fsSL https://peren.dev/install | sh

该命令会将 peren 二进制文件放置在 /usr/local/bin 目录下。安装前建议检查脚术脚术(包含在 packaging/install.sh 中),或直接下载版本二进制文件并按照释压包验证指南进行验证。

第二步:启动本地运行时 输入 peren dev,即可在本地启动运行时,支持热更新和 .dev.vars 环境变量加载。

第三步:创建第一个 Worker 安装完成后,参考快速开始指南(Quick Start)创建您的第一个有状态 Worker。Peren 提供了游戏式的开发者指南,包括等待教程、等待测试和等待部署。

第四步:部署到集群 输入 peren serve fleet.toml 启动一个节点,它会自动加入集群并与其他节点建立 MTLS 信任。使用 peren deploy fleet.toml 将代码验证后提交到集群。

适用人群

Peren 适合具备以下特点的开发者和团队:

平台工程师:希望将 Cloudflare Workers 编程模型部署到自己的基础设施,而不开发工程师自己的 API 平台。

数据主权要求强的团队:对数据存储位置和发布软件有完全控制权,不希望使用公共云平台而放弃数据主权的团队。

DevOps 和运维团队:需要对开发者提供简化的运行时 API而同时对集群操作有完全控制的运维人员。

小型产品团队:希望将前端 Worker 应用移植到自己的机户,从而降低运营成本的小型团队。

技术特点

Peren 不承诺完全共容 Cloudflare Workers API,而是将每个支持的运行时 API、绑定和提供商行为都明确记录在檔案中。对于无法安全表示的行为,Peren 会显示告知而不会私下潜在的错误。这种明确的故障境界定使开发者能够在部署前就完全理解系统的限制。

官网链接:https://peren.dev GitHub 链接:https://github.com/candensa/peren 分类建议:开发编程 / 运行时工具

团队信息

由 AI 猎手自动发现

评论与建议

0 条评论