У меня большая очередь писем, которые загружаются в таблицу MySQL, когда вокруг моего сайта происходят события. В любое время может быть 1к-2к, ожидающих отправки в любое время.
Я работал над пакетированием наборов электронных писем и отправкой их через одного работника. Теперь я ожидаю добавления рабочих X в систему по мере увеличения нагрузки.
Мой вопрос о том, чтобы не позволять работникам получать одно и то же письмо. Я слышал следующие варианты.
- Используйте SELECT FOR UPDATE, чтобы заблокировать строку
- Используйте отметку времени, чтобы сообщить работникам, что она была взята и когда
- Иметь родителя, который отслеживает детей и делегирует работу
Я вижу ценность в каждом из них, но также много читаю / пишу в БД. Так что бы вы сделали?
Делаем это через PHP и MySQL