我们曾用一个数据库当消息队列,现在我们用 Kafka
Tigris Data 团队原本把 FoundationDB 当作消息队列使用,参照苹果 CloudKit 的 QuiCK 论文实现了持久化队列,避免双写问题,但后来为降低 FDB 读写压力、减少自研代码和维护成本,将部分异步任务(如垃圾回收)迁到 Kafka。 文章详细拆解了 QuiCK 的核心机制:以时间戳作为任务身份(vesting time + taskType + itemSpace + priority + id),worker 通过把任务 key 推到未来来"租约"任务,崩溃后任务自动回落被其他 worker 领取;他们还加了分片(按 key 哈希分 lane)来降低随机竞争、长任务 checkpoint、自调度的 cron 等改造。 痛点包括:随机抢占导致"倒霉任务"长期不被领取、大规模积压时写压力过大、需要保证 NTP/GPS 时钟同步。文风带个人吐槽(Kafka 运维痛苦),对想少维护一套队列系统或理解 FDB 当队列用的工程读者有较高信息密度和讨论价值。 



