生产者/消费者队列模式中更快的生产者

时间:2018-04-30 17:36:15

标签: mysql message-queue amazon-sqs producer-consumer

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

每条记录都需要一些时间来处理与之相关的一些元数据。所以我们有一个SINGLE“生产者”进程,它将每个记录ID发送到一个消息队列(SQS)。

然后我们有50个“消费者”,它们下拉每个ID并执行必要的处理任务。

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

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

更新

这是表结构:

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

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

1 个答案:

答案 0 :(得分:0)

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