Как в сервисах реализуются периодически выполняемые задачи?
При реализации некоторых из своих проектов я столкнулся с следующим вопросом: как в сервисах реализуются периодические выполняемые задачи?
Например, допустим следующую ситуацию: есть REST API и какая-то база данных. Необходимо через определенные промежутки времени (либо по заданному расписанию) выполнять какие нибудь манипуляции с записями в базе данных. Как подобное реализуется?
Я же не могу использовать встроенные в язык возможности и реализовывать подобное на сервере, где работает REST API, иначе в ситуации, когда серверов несколько, и они используют распределение нагрузки, они будут все одновременно выполнять одну и ту же задачу.
arsuhinars, можно через скрипт, а можно использовать библиотеки, которые умеют работать с кроном или временем/датой в обычном формате. Иногда скрипта будет мало, т.к. таски заносят в БД и их нужно выпонить один раз и гораздо проще задать их в обычном формате а не кроне, в целом можно поискать либы со словом Scheduler.
cron например, либо свой демон, который будет смотреть на время и периодически запускать нужные задачи.
А чтобы несколько серверов не конфликтовали друг с другом - надо либо как-то их оркестрировать, чтобы работа разделялась на несколько серверов (Нужно смотреть на конкретную задачу, чтобы сказать, как можно разделить и можно ли вообще), либо делать распределённые блокировки.