档案库 · 产品创意 · 产品决策 · 2021
Litestream 把 SQLite 同步到 S3,让一台服务器就能跑起整个应用
Ben Johnson 开发了 Litestream,这是一款免费进程,能将 SQLite 持续复制到亚马逊 S3,每月大约只需 1 美元——用一台服务器,不用数据库集群。
Litestream
当时的题目
Ben Johnson, who wrote the BoltDB embedded database seven years earlier, watched 1990s n-tier architecture turn a single app into a fleet of web, cache, queue and database servers. He wanted to build single-process applications on SQLite — small, fast, reliable — but its one big problem was disaster recovery: if the server dies, so does the data.
它是怎么成立的
Ben Johnson 在 2021 年的文章中第一句话就点出了一个矛盾:摩尔定律让计算机速度大幅提升,而应用程序却需要更多机器。他认为,问题是上世纪 90 年代中期的一个架构决策造成的——缓慢的脚本语言从数据库服务器中分离出来,放到各自独立的层里,每一层又带来缓存、连接池、队列和集群之类的配套设施,复杂性层层叠加。
他的方案是构建在 SQLite 上的单进程应用,他把 SQLite 叫做防弹、经过超乎想象严格测试的数据库。但 SQLite 有一个致命的弱点:灾难恢复。其他数据库会把更改流式传送到副本,这样故障几乎不会造成损失;而标准 SQLite 部署最好的情况也就是每晚备份,类似 rqlite 的方案则要求部署三节点集群。如果服务器挂掉,数据也就没了。
Litestream 用一个进程解决了这个问题:它和 SQLite 并行运行,持续把数据库复制到亚马逊 S3;配置只需几行,无授权费,存储成本大约每月 1 美元。它的目标是把复杂性降下来——用单个嵌入式数据库写代码,在单节点内优先扩展,当服务超越单节点能力时再按客户分片,而不用运维十几项基础设施服务。
文章发表于 2021 年 2 月,在 Hacker News 上获得 703 分和 176 条评论,作者把讨论链接补充在了文后。Litestream 还在持续更新——到 2026 年的网站版本已经是 v0.5.x,维护活跃,只读副本(用于边缘站点)作为下一步已经列入路线图。
妙在哪
- Johnson 针对缺失的那项功能——灾难恢复——而不是数据库本身,所以改动适配了原本已快速且可靠的工具。
- 选择亚马逊 S3 作为复制目标,让安全网成本降到每月约 1 美元,并交给云厂商来运维。
- Litestream 作为独立小进程交付,不需要改动 SQLite,也不需要改应用代码——采用时只需几行配置。
- 文章在介绍工具之前先推销了理由,把一次产品发布变成对软件行业无条件接受复杂性的批判。
- 免费开源移除了最后一道门槛,尤其是最需要这种简单性的个人 VPS 和爱好者。
做出来什么
The launch post drew 703 points and 176 comments on Hacker News on 2021-02-11 — discussion the author linked from the post itself. The project stayed actively maintained into 2026, when the site showed v0.5.x as the latest version with a v0.3.14 archive link, and Johnson's planned next step was replication to read-only replicas at the edge.
可以借走的
修复缺失的那个功能,而不是换个数据库:SQLite 本来就快且可靠,通过持续复制到廉价对象存储,消除了跑数据库集群的唯一理由。
后来
文章一直放在项目首页作为其起源故事,后来作者加上了 Hacker News 讨论链接,那篇帖子在 2021 年 2 月 11 日已获 703 分和 176 条评论。Litestream 还在继续迭代:到 2026 年的网站显示版本为 v0.5.x,相关介绍用词是"维护活跃,持续修复缺陷并增加功能",同时面向老用户提供 v0.3.14 存档版本。Johnson 在文章发布时就已经把下一步计划(复制到只读副本,可在边缘提供请求)立项在了 GitHub issue 板上。
资料来源
发现哪里写错了?告诉我们。
轮到你了
你刚读完一个点子。把你手上的题目说出来,看看谁接过同样的题。
免费账号 · 3 次免费提问 · 不用绑卡