Una delle grandi cose del framework Play è che è completamente stateless e solo orientato alla richiesta/alla risposta. Questo è davvero bello poiché mi consente di distribuire la mia app sul cloud e di ridimensionare il numero di istanze dietro il mio bilanciamento del carico senza dovermi preoccupare della replica di stato (sessione) ...Quadro di gioco: impatto dei lavori sul modello stateless
Recentemente, tuttavia, avevo bisogno di eseguire alcune logiche di applicazione al di fuori di una richiesta HTTP e scoprire che Play ha la possibilità di definire lavori che sono completamente gestiti dal framework. Sembra brillante ma solleva la domanda: come si inseriscono questi lavori nel modello stateless utilizzato da Play?
Dire che ho un'attività di manutenzione che deve essere eseguita ogni ora e definisco un lavoro pianificato per quello. Se quindi distribuisco più istanze di riproduzione dietro un servizio di bilanciamento del carico, tale lavoro verrà avviato contemporaneamente su ciascuna istanza? E se sì, quale sarebbe un buon approccio per gestire i lavori che devono essere eseguiti "esclusivamente"?
Stavo pensando di creare una nuova istanza di riproduzione su un server non in cluster, riutilizzando il modello JPA dell'istanza esistente (in cluster) (e quindi connettendola allo stesso database). Questa nuova istanza conterrà solo i lavori di manutenzione e poiché è ospitata su un server non in cluster, non vi è alcun rischio che un lavoro sia in esecuzione contemporaneamente. Allo stesso tempo, questo mi permetterebbe di mantenere la mia istanza cluster esistente completamente apolidi e facile da ospitare/bilanciare il carico. Questo sarebbe un buon approccio?
Iniziare una taglia, vedere sotto. – ripper234