Hasty Briefsbeta

双语

We used a database as a message queue. Now we use Kafka

13 hours ago
  • 使用FoundationDB同时作为主数据库和消息队列,实现了苹果的QuiCK设计。
  • 在将FoundationDB用作队列时遇到了写入限制和读取负载问题,促使将异步任务迁移到Kafka。
  • QuiCK使用基于时间的任务标识和租约机制,确保消息处理的持久性和可重试性,避免了双写问题。
  • 自定义适配包括跳过Record Layer、使用固定队列、支持带检查点的长时间运行任务,以及通过自我重新调度实现定时任务。
  • 该方法面临的挑战包括事务冲突、长期不幸运的任务、大规模写入压力以及时钟同步要求。
  • 将垃圾回收等异步任务迁移到Kafka,以减少FoundationDB的负载并简化自定义代码。