Ho uno strato di server di applicazioni identici dietro un servizio di bilanciamento del carico. Per ragioni operative, ho il vincolo che la configurazione dell'applicazione su entrambi i server delle app debba essere identica, in modo che i nodi possano essere facilmente aggiunti e rimossi. Tutti i server delle app condividono lo stesso database. I server di app non sono/non saranno raggruppati.Utilizzo del quarzo per pianificare un singolo lavoro su più server di app stateless
Questo ha funzionato bene fino ad ora, ma ora mi piacerebbe avere un lavoro pianificato che si esegue esattamente su uno dei server di app. Tutti i server delle app eseguiranno Quartz e avranno la stessa pianificazione per i lavori in esecuzione. Il trigger si attiverà su ogni server delle app, ma vorrei che solo un app server eseguisse effettivamente il lavoro - in sostanza, tutti corrono per avviarsi e ne viene avviato solo uno, i restanti app server ignorano il lavoro. L'idea è che se perdiamo un app server, un altro eseguirà il lavoro, e se aggiungiamo nuovi server di app, prenderanno il turno ai lavori in esecuzione.
Avevo intenzione di fare questo avendo una tabella 'job lock' nel database che tutti i server di app avrebbero letto prima di iniziare un lavoro e iniziare solo se il lavoro è 'sbloccato'. Il server delle app che rende l'aggiornamento primo sulla tabella bloccherà essenzialmente gli altri aggiornando la tabella a uno stato di esecuzione/reimpostandola alla fine del lavoro.
Prima costruisco questo, mi farebbe piacere qualche input da quelli con più esperienza di quarzo:
a) Posso agganciare questo comportamento in quarzo in modo che non deve essere fatto su una base per lavoro base? Cioè gli sviluppatori possono aggiungere nuovi posti di lavoro senza doversi preoccupare del blocco dei processi in quanto viene sottratto.
b) Quartz fornisce meccanismi integrati per ottenere qualcosa di simile a sopra, quindi non devo farlo da solo?
Grazie!
Non so come mi sono perso:/Grazie. – Scruffers
Se trovi utile la mia risposta, non dimenticare di contrassegnarla come "risposta accettata" – Sap
Il clustering con Quartz è quello per l'ambiente cluster, –