恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
每用户一个cell:用celld天生分片改造SaaS Web应用(完整指南)
首页
资讯中心
/
每用户一个cell:用celld天生分片改造SaaS Web应用(完整指南)
每用户一个cell:用celld天生分片改造SaaS Web应用(完整指南)
发布时间:2026/8/31 9:28:34
每用户一个cell用celld天生分片改造SaaS Web应用完整指南【免费下载链接】celldself-hosted, distributed Durable Objects项目地址: https://gitcode.com/GitHub_Trending/ce/celld还在为共享数据库的锁竞争和分库分表头疼吗开源项目celld是一个自托管的分布式 Durable Objects 运行时它让你每用户一个 cell用天然分片的方式改造 SaaS Web 应用——每个 cell 自带一个私有 SQLite 数据库从架构上根除共享数据库的争用问题且空闲用户几乎零成本。 先搞懂 celld 是什么celld 是一个运行在你自己机器上的守护进程内嵌 V8 引擎直接执行 Wrangler 打包的 Cloudflare Workers 和 Durable Objects 代码。用 Cloudflare 的话说一个 cell 就是一个 Durable Object——一个带名字、带私有 SQLite 数据库的小型服务器。节点之间不需要成员协议、故障检测器或共识服务。所有节点共享一个你拥有的对象存储桶S3 兼容或 Google Cloud Storage仅通过一次对象存储的条件写compare-and-swap就确定同一时刻只有一个节点拥有某个 cell。桶就是唯一的协调者与持久事实来源节点随时可替换机制细节见 docs/fencing.md。 为什么每用户一个 cell是最优分片模式传统 SaaS 的痛点在于所有用户挤在一个共享数据库里热点用户的写入争用、单库故障的爆炸半径都是事后管理出来的问题。而 celld 的思路是——每个对象本身就是一个小数据库应用从设计之初就是分片的没有共享数据库争用和爆炸半径问题被直接设计掉了而不是被管理着。官方文档明确列出了这类适合分片的场景见 docs/README.md一个用户一个 cell用户的会话、偏好、配额、消息各自落在自己的 SQLite 里一个租户一个 cell天然多租户隔离无需行级权限补丁一个聊天房间 / 协作文档一个 cellcell 持有 WebSocket 连接和房间状态无需加锁无需外部消息总线一个 AI Agent 一个 cell空闲 Agent 自动休眠大集群在事件间隙几乎零成本每个 cell 单线程执行两个请求永远不会同时进入同一个 cell存储操作同步执行——数据一致性是结构性的不用你写任何加锁代码。 三步改造你的 SaaS 应用1️⃣ 按用户 ID 路由请求这是改造的核心一步在 Worker 入口把请求按用户名路由到对应 cell。参考官方示例 examples/router/index.js它的默认fetch就实现了/alice → alice 的 cell、/bob → bob 的 cellconst name new URL(request.url).pathname.slice(1) || default; const id env.COUNTER.idFromName(name); return env.COUNTER.get(id).fetch(request);在多节点集群上这些 cell 可能落在不同节点env.COUNTER.get(id)会透明地把请求代理给 cell 的拥有者——你不需要任何路由表或一致性哈希名字就是地址。更简单的入门示例在 examples/counter/index.jsSQLite 支撑的 Durable Object。2️⃣ 部署到对象存储桶一个标准的 Wrangler 项目即可用celld deploy发布到你的桶支持 S3 兼容、Cloudflare R2、GCScelld deploy . --bucket s3://my-cells-bucket3️⃣ 启动节点集群自动形成每个节点指向同一个桶通过桶里的租约互相发现——没有 join 命令没有固定成员列表celld --bucket s3://my-cells-bucket \ --listen 0.0.0.0:8080 \ --internal-listen 10.0.0.12:8081 \ --advertise node-a.internal:8081加新节点只需再启动一个进程指向同一个桶。运维排查用celld diagnose一条命令扫描所有节点租约并探测存活的 peer。 空闲用户几乎不花钱这是 cell 模型对 SaaS 最性感的特性inactive未激活没有任何节点持有该 cell它只是桶里的一个对象成本几乎为零——每个用户都从这个状态开始idle空闲→ hibernated休眠celld 会把空闲 cell 从内存移除如果它还有休眠可保持的 WebSocket 客户端则以休眠状态留在节点上连接不断压力丢弃内存吃紧时celld 把最近最少使用的空闲 cell 持久化复制后释放绝不丢弃正在干活或持有活跃 WebSocket 的 cell官方给出的成本参考一台 8 GB 节点可承载 1000 个常驻 cell约合每个常驻 cell 每月 $0.05。对 SaaS 来说这意味着长尾用户的成本从数据库里的死行变成了接近零。 值得深入的关键模块内容路径文档总览与 cell 生命周期docs/README.md所有权与 fencing 机制RPO0 保证docs/fencing.mdCloudflare API 兼容清单docs/cloudflare-compat.md已知限制alpha 阶段边界docs/limitations.md用户路由示例examples/router/index.js桶内对象协议定义crates/celld/protocol.rs安全边界说明docs/security.md✅ 小结天然分片每用户一个 cell无共享数据库争用与爆炸半径从架构上消失名字即路由idFromName(用户名) 透明代理无需路由表近乎免费的长尾未激活 cell 只占桶里一个对象常驻 cell 约 $0.05/月桶即协调者无共识、无成员协议节点指向同一个桶即自动组网如果你的 SaaS 应用能回答我的状态可以按哪个维度切分——用户、租户或房间——那么 celld 的每用户一 cell 模型值得你花一个下午试一试。【免费下载链接】celldself-hosted, distributed Durable Objects项目地址: https://gitcode.com/GitHub_Trending/ce/celld创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考