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