Ho bisogno di ridisegnare la soluzione Publish-Subscribe distribuita nel nostro prodotto.
Descrizione del problema
Abbiamo diversi produttori (servizio NT), code (MSMQ) e utenti (server IIS). La gestione delle attività richiede l'accesso al DB MSSQL.
Ci sono due tipi di compiti nel sistema:
- attività ad-hoc, inviate alla coda dai flussi in corso.
- attività batch, ogni notte ogni produttore crea tonnellate di attività, principalmente per la manutenzione e l'elaborazione non in tempo reale.
Il requisito è di supportare decine di migliaia di attività al giorno e di essere in grado di crescere. La soluzione al problema dovrebbe essere in grado di orchestrare il tasso di esecuzione dell'attività in base a diverse condizioni:
- Ore di punta - esegue una piccola quantità di attività, non infastidisce gli abbonati
- Off-hours - full gas
- Caricamento DB: supponiamo di avere delle metriche che mostrano quante attività possiamo eseguire
Ulteriori informazioni:
- Pensiamo di sostituire MSMQ con la coda distribuita (forse KAFKA).
- MSSQL è un collo di bottiglia, gli abbonati cercano di accedere alle stesse tabelle, causano timeout / deadlock, ma la sostituzione non è un'opzione.
Si prega di chiedere come implementare l'orchestrazione delle attività.
Dovrebbe essere su editori, consumatori o componenti separati?