Producer/Consumer 队列模式中更快的生产者

Faster Producer in Producer/Consumer Queue Pattern

我们有一个 MySQL table,每天写入大约 500 万条记录。

每条记录都需要一点时间来处理与其关联的一些元数据。所以我们有一个 SINGLE "producer" 进程,它将每个记录 ID 发送到消息队列 (SQS)。

然后我们有 50 个 "consumers" 下拉每个 ID 并执行必要的处理任务。

这种模式效果很好。然而,数据量继续增长。我们的单个生产者无法再跟上插入 table 的数据量。

我知道我们可以添加更多消费者来加快处理速度。但是,在没有 运行 ID 冲突的情况下加速生产者的好策略是什么?

更新

这是 table 结构:

id  int(10) AUTO_INCREMENT
name varchar(255)   
is_processed tinyint(1)
is_queued   tinyint(1)
created_at  timestamp
updated_at  timestamp
meta_data   text

我想有多个生产者运行,但不知道如何避免并发问题。

我最终使用了这种方法:Best practices for multithreaded processing of database records - 这会分派记录集供多个消费者提取。它比使用队列处理单个记录要快得多。