Что такое масштабируемый способ создания заданий cron в Amazon Web Services? - PullRequest
1 голос
/ 02 июня 2019

Это мой первый вопрос, поэтому я прошу прощения, если это не лучшее качество.

У меня есть вариант использования: пользователь создает задачу мониторинга, которая отправляет http-запрос на веб-сайт каждые X часов. Пользователь может иметь тысячи таких задач и может добавлять / изменять и удалять их. Когда пользователь создает задачу, сигналы django создают периодическую задачу Celery, которая затем периодически запускается.

Я ищу более масштабируемое решение с использованием AWS. Я читал об использовании Lambda + Cloudwatch Events.

Мой вопрос: как мне подойти к этому, чтобы мои пользователи могли создавать десятки тысяч таких задач самым дешевым / наиболее масштабируемым способом?

Спасибо, что прочитали мой вопрос! Питер

1 Ответ

0 голосов
/ 02 июня 2019

Прямого решения вашей проблемы не существует. По пути нужно идти шаг за шагом, по пути следуя сантехнике.

Управление событиями

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

2 - Создать лямбда-функцию, которая удаляет расписание облачных часов.

3 - сохранить любое событие, созданное с помощью DynamodB

4 - Создайте 2 API-шлюза, которые вызовут 2 лямбда-выражения выше.

5 - Создайте лямбда-функцию anohter (используемую cloudwatch), которая будет вызывать шлюз API ниже.

6 - Создайте API-шлюз, который будет вызывать сайт через http-запрос.

Когда пользователь создает событие из приложения, будут происходить цепочки вызовов следующим образом:

4 -> 1,3 -> 5-> 6

Теперь нужно принять во внимание два других параметра:

Лямбда-параллелизм: вы не можете запустить одновременно более 1000 лямбда в одном регионе.

Cloudwatch: вы не можете создать более 100 правил для каждого региона. Правило - это то, где вы определяете расписание.

...