Базы данных для разгрузки рабочих нагрузок были достаточно популярны в 2010 году, и тогда это была хорошая идея, но мы продвинулись немного дальше.
Мы используем Apache Kafka в качестве очереди для хранения рабочей нагрузки в полете.Итак, Dataflow теперь:
Пользователь -> Apache httpd -> Kafka -> процессор демона python
Пользовательская операция поста помещает данные в систему для обработки через приложение wsgi, которое просто очень быстро записывает ихв очередь Кафки.Минимальная проверка работоспособности выполняется в почтовой операции, чтобы сохранить ее быстротой, но обнаруживает некоторые очевидные проблемы.Kafka хранит данные очень быстро, поэтому http-ответ zippy.
Отдельный набор демонов python извлекает данные из Kafka и выполняет их обработку.На самом деле у нас есть несколько процессов, которые должны обрабатывать его по-разному, но Kafka делает это быстро, записывая только один раз и имея несколько считывателей, которые при необходимости читают одни и те же данные;штраф за хранение дубликатов не налагается.
Это позволяет очень и очень быстро выполнить обработку;оптимальное использование ресурсов, поскольку у нас есть другие автономные блоки, которые обрабатывают pull-from-kafka и могут настроить его для уменьшения задержки по мере необходимости.Kafka - это HA с одними и теми же данными, записанными в несколько блоков в кластере, поэтому мой менеджер не жалуется на сценарии «что произойдет, если».
Мы довольно довольны Kafka.http://kafka.apache.org