Быстрее продюсер в шаблоне очереди продюсера / потребителя - PullRequest
0 голосов
/ 30 апреля 2018

У нас есть таблица MySQL, в которую ежедневно записывается около 5 миллионов записей.

Каждая запись требует немного времени для обработки некоторых метаданных, связанных с ней. Таким образом, у нас есть ОДИН «процесс» производителя, который отправляет каждый идентификатор записи в очередь сообщений (SQS).

Затем у нас есть 50 «потребителей», которые опускают каждый ID и выполняют необходимые задачи обработки.

Этот шаблон хорошо работает. Тем не менее, объем данных продолжает расти. Наш единственный производитель больше не может идти в ногу с объемом данных, вставляемых в таблицу.

Я понимаю, что мы можем добавить больше потребителей для ускорения обработки. Но что является хорошей стратегией для ускорения продюсера без столкновений ID?

UPDATE

Вот структура таблицы:

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 голосов
/ 01 мая 2018

В итоге я воспользовался этим подходом: Лучшие практики для многопоточной обработки записей базы данных - это рассылает наборы записей для сбора несколькими потребителями. Это намного быстрее, чем использование очереди для обработки отдельных записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...