Шаблон проектирования системы для регулярных платежей - PullRequest
0 голосов
/ 24 января 2020

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

Я специально спрашиваю, как запустить эту операцию?

Предположим, что есть система с некоторым методом RenewSubscription, который выполняет все логи c. Этот метод должен быть запущен сразу после истечения срока действия подписки пользователя.

Единственный способ реализовать его - это иметь какую-то фоновую задачу (консольное приложение или лямбда), которая запрашивает БД каждые N секунд (или минут) и проверяет, есть ли просроченная подписка для продления.

Может ли это быть реализовано без запроса БД каждые несколько секунд?

1 Ответ

1 голос
/ 14 февраля 2020

В какой-то момент необходимо выполнить запрос к базе данных, чтобы получить пользователей с истекшей подпиской, поэтому в любом случае необходимо какое-то задание cron. Что касается того, как часто фоновая задача должна запускаться IMO, это зависит от того, каков ваш приемлемый порог между истечением срока действия и продлением (секунды, минуты, часы). Также примите во внимание производительность метода RenewSubscription, количество пользователей для обновления и время, необходимое для выполнения запроса к базе данных. В идеале задание cron должно завершиться sh до начала следующего, и, если это невозможно, необходимо учитывать, сколько процессов может выполняться параллельно, не выходя за границы памяти / ЦП, если таковые имеются. Я считаю, что вам придется запустить некоторые тесты, чтобы найти приемлемый баланс для вашего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...