文章摘要
Healthchecks.io宣布改用自托管对象存储方案,使用Versity S3网关和Btrfs文件系统替代原托管服务,以存储超过100kB的请求体数据。这一变化源于对AWS S3等托管服务按请求计费模式成本的考量。
文章总结
Healthchecks.io 现已采用自托管对象存储服务
Healthchecks.io 是一项监控服务,其 ping 端点支持 HTTP HEAD、GET 和 POST 请求方法。当使用 POST 请求时,客户端可以在请求体中包含任意数据内容。该服务会存储请求体前 100kB 的数据:小体积数据存储在 PostgreSQL 数据库,大体积数据则存放在 S3 兼容的对象存储中。近期,该平台完成了从托管存储到自托管对象存储的迁移。
托管服务的选择历程
2022年选择初始方案时,开发者评估了多个对象存储提供商: - AWS S3:按请求计费模式成本过高,且受美国《云法案》约束需额外加密处理 - OVHcloud:最初选择的欧盟服务商,无请求费用但后期出现性能与可靠性问题 - UpCloud:2024年转用的欧盟服务商,初期表现良好但后期操作延迟问题加剧
自托管方案的技术选型
当前(2026年4月)存储需求为: - 119GB存储空间,包含1400万个对象 - 平均每秒30次上传操作,峰值可达150次/秒 - 数据持续更新删除
经过评估,开发者最终选择 Versity S3 Gateway 方案,其优势包括: - 将本地文件系统转为S3服务 - 无需独立元数据库 - 支持常规文件系统备份 - 简单的Go语言实现,维护活跃
实施架构
2026年3月完成的部署方案: 1. 专用服务器:通过私有IP提供S3 API,应用服务器通过Wireguard隧道连接 2. 存储配置:双NVMe硬盘RAID 1阵列,采用Btrfs文件系统(避免小文件inode耗尽问题) 3. 备份机制: - 每2小时rsync同步至备份服务器 - 每日全量备份加密后异地存储,保留30天备份
迁移成效
切换后取得显著改进: - S3操作延迟显著降低(图表显示响应时间优化) - 待上传队列深度缩减(监控图表显示队列积压改善) - 虽然新增服务器成本高于托管存储,但性能与可靠性提升显著
开发者表示对新系统持谨慎乐观态度,同时保持对更优方案的开放心态。目前系统仅运行数周,尚未出现可用性问题,但已做好应对单点故障的准备(潜在最多丢失2小时未备份数据)。
(注:原文中的图片链接及导航菜单等非核心内容已省略,保留关键数据指标和架构细节)
评论总结
以下是评论内容的总结:
对Btrfs文件系统的担忧
- 有用户对Btrfs的稳定性表示担忧,甚至引发负面回忆("I'm sure it's a lot better now but everytime I see btrfs I get PTSD.")
- 另一条评论直接批评:"Btrfs is not a strategy."
对本地存储与S3 API必要性的质疑
- 多位用户认为对于小规模数据(119GB),直接使用本地存储更简单高效("if it's running on the same machine, why does it even need the S3 API?")
- 有人指出垂直扩展单机SSD性能可能比对象存储高100倍("100x the throughput vertically scaling on one machine with a file system and an SSD")
对自托管对象存储方案的讨论
- 用户分享了从MinIO迁移到Garage的经验,并推荐Garage作为替代方案("check out Garage, who are developing with NLnet funding")
- 有人对Versity S3 Gateway表示兴趣("this seems like another viable option to consider")
对小规模数据存储的务实态度
- 多条评论指出119GB的数据规模很小,简单方案更合适("if it fits on your laptop, it's not big data")
- 有用户赞赏这种简洁的解决方案:"just works...the kind of setup that lets you actually go to bed"
关于云服务稳定性的讨论
- 用户反映多家云服务商(Hetzner、OVHCloud、UpCloud)的S3服务不稳定("cloud providers are unable to provide stable S3 as a service")
- 也有用户报告从AWS迁移到CloudFlare后节省90%费用且性能良好("Bills were 90% cheaper too")
对性能与成本的权衡
- 有评论质疑为何选择更贵、更复杂的方案("If it cost more...why make the change?")
- 作者回复认为性能提升值得额外成本("the improved performance and reliability are worth it")
大规模文件存储的经验分享
- 有用户分享处理50TB小文件的痛苦经历,建议使用SeaweedFS等专业方案("SeaweedFS handles lots of small files gracefully")
- 并描述了自创的极端解决方案:"descend into madness...tarred up and archived"
对健康检查服务的赞赏
- 有长期用户表达支持:"healthchecks.io is fantastic"
关键数据引用: - 数据规模:"14 million objects, 119GB" - 性能需求:"thirty requests a second for ~8k objects" - 成本对比:"Bills were 90% cheaper too (free bandwidth)"