Sto cercando una sostituzione "a" scalabile, con disponibilità elevata. Deve supportare l'aggiunta e la rimozione di processi in fase di esecuzione.Ricerca di un'implementazione scalabile "a"
Alcuni background: Ho un'applicazione in cui attingo milioni di eventi, ogni evento si verifica solo una volta. Non ho bisogno di meccanismi come cron (prima domenica del mese, ecc.), Semplicemente data, ora e contesto.
Attualmente sto usando lo Quartz scheduler e, sebbene sia un ottimo progetto, ha difficoltà a gestire la quantità di eventi che lanciamo su di esso, anche dopo un sacco di tweaking (sharding, aumento dell'intervallo di polling, ecc.) a causa del blocco di base eseguito sul database di sottolineatura. Inoltre, è un po 'eccessivo per noi, in quanto fondamentalmente abbiamo milioni di trigger una tantum e un numero relativamente piccolo di lavori.
Apprezzerei tutto suggerimento
Quali sono i requisiti di tutto il fallimento? Ad esempio, se una macchina si arresta, vorresti che gli eventi "mancati" si attivino quando viene visualizzata una sostituzione? –
Sì, simile al quarzo. Inoltre, eseguo Quartz in un cluster, quindi c'è sempre una macchina calda in attesa (in Quartz tutti i nodi competono ogni volta che hanno bisogno di interrogare il DB per i lavori) –
Mi stavo chiedendo quanto fosse semplice fare le cose * senza * Quartz. Se ogni lavoro deve essere riconosciuto, ciò lo rende più complicato. Qual è la penalità se un lavoro viene eseguito due volte? (Ad esempio, potresti riconoscere tutti i lavori eseguiti all'ultimo minuto, una volta al minuto?) –