Одна из замечательных особенностей платформы Play заключается в том, что она полностью не имеет состояния и ориентирована только на запрос / ответ.Это действительно хорошо, поскольку позволяет мне развертывать мое приложение в облаке и масштабировать количество экземпляров воспроизведения за моим балансировщиком нагрузки, не беспокоясь о репликации состояния (сеанса) ...
Однако в последнее время яНужно было выполнить некоторую логику приложения вне HTTP-запроса и выяснить, что Play имеет возможность определять задания, которые полностью управляются платформой.Звучит блестяще, но возникает вопрос: как эти задания вписываются в модель без сохранения состояния, используемую Play?
Скажем, у меня есть задача обслуживания, которая должна выполняться каждый час, и я для нее определяю запланированное задание.Если я затем разверну несколько экземпляров Play за балансировщиком нагрузки, будет ли это задание запускаться одновременно в каждом экземпляре?И если да, то каков будет хороший подход для обработки заданий, которые должны выполняться «исключительно»?
Я думал о создании нового экземпляра воспроизведения на некластеризованном сервере, повторно используя модель JPAсуществующий (кластеризованный) экземпляр (и, следовательно, подключение к той же базе данных).Этот новый экземпляр будет содержать только задания по обслуживанию, и, поскольку он размещен на некластеризованном сервере, нет риска одновременного выполнения задания.В то же время это позволило бы мне сохранить мой существующий кластеризованный экземпляр полностью без сохранения состояния и легко размещать / балансировать нагрузку.Это был бы хороший подход?