Очередь – один из наиболее используемых механизмов в программировании. Например, для интеграции с платежными системами или для обработки медиа-контента, загруженного пользователем, необходимо наличие очередей.
В REG.RU тоже не обходятся без очередей. Поэтому потребность найти решение появилась достаточно давно. Учитывая специфику компании как доменного регистратора большинство существующих решений не подходило, и программисты решили «написать свой велосипед».
2. 2
До появления FastQueue и полной переработки доменов,
эта самая проверка представляла собой жалкое зрелище.
Бизнес требовал сделать как у мировых лидеров доменной
индустрии.
Предпосылки
3. 3
Почему свой велосипед?
Сложная бизнес-логика проверки доменов
Много legacy кода
Желание полностью управлять очередью
Все существующие решения нужно допиливать под нас
Либо вообще не подходят под требования
Другие очереди сложно деплоить или админить
Rails Resque и Rails Sidekiq иcпользуют Redis
А почему бы и не сделать?
7. Задача
Один модуль на задачу FastQueue::Task::Some::Class
Уникальный id в очереди
Отдает один или несколько результатов
Может заменять другие задачи
Может создавать новые
Три типа состояний queued, inprogress, failed
Кеширование результатов выполнения задачи
7
12. 12
Статистика
По типам состояний
По очередям
Различные счетчики
Всё агрегируется и пишется в лог
По логу строятся графики
Оповещения в случае превышения кол. заданий в
очередях
14. 14
Где используем
Проверка доменов
Взаимодействие с платежными системами
Почтовые рассылки
Отправка ошибок сайта в Sentry
Отправка запросов в тех. поддержку
Или любая другая медленная операция, которую можно
сделать асинхронно
15. Написание возможно в 2 строки
Плашку регулировать по длине текста
Вывод или посыл зрителю
Спасибо!
Буду рад ответить
на ваши вопросы!
E-mail:
vaneska@reg.ru
15