Esecuzione di attività quotidiane sul server di back-end insieme ad altre attività

3

Quindi ho un server Google Cloud AppEngine con 2 lavori principali.

  1. Ogni giorno alle 00:00, scarica molti dati (Firebase / Async), elabora e invia notifiche via HTTP, interagisci con GoogleStorage, ecc.
  2. Ascolta i diversi tipi di richieste e invia notifiche via HTTP quando ricevuto.

Quindi, a scopo di test, avrei appena generato un nuovo thread per ogni post HTTP o chiamata sincrona in librerie come Google Storage, e mentre questo funziona, non penso che questo scalerà bene e potrebbe causare delle eccezioni di memoria.

Sono preoccupato che dica, ci sono 1000 richieste post / get che devono essere fatte alle 00:00, e quindi se creo 1000 thread, ciò causerà problemi, d'altra parte, potrei scorrere le richieste in un singolo thread, ma quel thread impiegherà molto tempo per terminare.

Ho pensato di usare un Executor che ha una dimensione di ~ 10, in modo che un thread sia sempre disponibile per eseguire l'attività di elaborazione giornaliera e gli altri 9 thread siano disponibili per eventuali richieste che potrebbero entrare.

È un buon approccio? O il threadpool dovrebbe essere ridimensionato dinamicamente o messo in coda?

    
posta Linxy 18.05.2017 - 21:43
fonte

1 risposta

2

Cambia l'attività 1 in un'altra ora. Preferibilmente un piccolo numero casuale di minuti prima o dopo la mezzanotte. Questo eviterà molte azioni contemporaneamente.

Anche se vuoi fare qualcosa a mezzanotte, non puoi garantire una precisione assoluta di esecuzione esattamente a 00: 00,0000000. Quindi, vedi la possibilità di diffondere un po 'i lavori a partire da mezzanotte, cosa che rende tutto più semplice, non un bug.

    
risposta data 18.05.2017 - 23:06
fonte

Leggi altre domande sui tag