Итак, продукт, с которым я сейчас работаю, - это проект электронной коммерции, в котором у нас были требования к некоторым запланированным заданиям.

Эти запланированные задания можно разделить на 2 типа: одноразовые и рекурсивные. Примером рекурсивных заданий может быть ежедневный отчет, который продавец ожидает в конце дня в определенное время. И примером одноразовой работы может быть предварительный заказ, то есть клиент размещает заказ на еду на следующий день в определенное время.

Я считаю, что к настоящему моменту вы уже ясно представляете себе этот вариант использования. Для этого мы использовали стороннюю библиотеку под названием Agenda. Эта библиотека сильно зависит от monogdb. Теперь из-за Covid-19 мы сократили стоимость инфраструктуры и решили избавиться от MongoDb, поскольку мы уже использовали Mysql в качестве нашей основной базы данных.

Следовательно, чтобы решить проблему как можно быстрее, мы решили изучить события Cloudwatch и обнаружили, что с небольшой настройкой мы можем решить проблему без использования какой-либо базы данных.

Идея состоит в том, чтобы использовать aws-sdk для создания нового события в событиях облачного наблюдения, используя выражение cron или интервал повтора, и привязать его к целевому SQS. и введите некоторую константу json, которая содержит подробную информацию о конечном действии, которое необходимо выполнить.

Затем создайте потребителя для SQS и при получении сообщений из очереди проверьте, было ли задание однократным событием или нет, на основе константы json, которую мы ввели при создании правила.

Если задание является одноразовым событием, удалите задание из событий облачного наблюдения и выполните конечную операцию, в противном случае просто выполните конечное действие, которое может вызывать api или отправлять сообщение в другую очередь.

Я уже создал общедоступный репозиторий, который поможет вам добавить / удалить / перечислить одно рекурсивное задание из событий cloudwatch.

Эта микрослужба может публиковать сообщения в SQS, публиковать сообщения в SNS, а также может выполнять HTTP-запросы на основе запроса на работу.

Для тех, кто хотел бы использовать его в кубернетах, я добавил файл докера, вам просто нужно создать и пометить этот образ в своем репозитории кубернетов, и вы готовы к работе.

https://github.com/Shubhamnegi/cloudwatch-events-service

Общая стоимость событий Cloudwatch составляет 1 доллар за 1 миллион событий.

И все, вам больше не нужен БД для каких-либо запланированных мероприятий.

Ребята, это самый первый рассказ, который я пишу на носителе, и надеюсь, вам понравился.