Esecuzione di calcoli costosi su un singolo server

4

Sto costruendo un sito web che consente a un utente di pagare per un servizio che esegue automaticamente alcune codifiche video per loro.

La codifica richiede diversi minuti. Una soluzione ingenua eseguirà immediatamente ogni processo di codifica. questo potrebbe portare a diverse istanze in esecuzione e far terminare tutte molto lentamente. l'elaborazione probabilmente influirebbe sulle richieste di servizio.

Come puoi capire, non faccio molte cose sul web. Sono sicuro che ci sono alcuni strumenti / approccio che dovrei usare in questa situazione, ma non so davvero cosa sia

    
posta 2c2c 23.01.2018 - 11:17
fonte

2 risposte

7

Questa è una domanda di alto livello e potrebbe essere chiusa come "troppo ampia". Ma in breve:

Ciò di cui hai bisogno è una soluzione asincrona : una richiesta non avvia il costoso lavoro, ma semplicemente pianifica per farlo e restituisce un ticket con il quale puoi controllare per le sue statistiche. Se si rimane con un solo server, è necessario utilizzare una coda di qualche tipo per garantire che i lavori vengano elaborati uno dopo l'altro e che ogni ticket venga chiuso quando viene eseguito il processo di codifica. L'utente deve quindi scaricare il risultato in una richiesta separata, presumibilmente specificando nuovamente il proprio numero di biglietto e le proprie credenziali. Se sei generoso, potresti anche dare al cliente una stima di quanto tempo ci vorrà prima che il loro lavoro sia completato.

Probabilmente otterrai risposte migliori e risultati di ricerca più pertinenti nominando alcuni termini in corsivo.

    
risposta data 23.01.2018 - 11:34
fonte
2

Fondamentalmente non puoi farlo con un server web (in modo molto efficace)

È necessario un secondo computer che esegue un cron job / windows service o un programma simile. Questo è il "processo di lavoro"

Il tuo server web, prende la richiesta in entrata e la salva da qualche parte. Idealmente una coda di messaggi, ma un database andrà bene.

Il processo di lavoro, attende le voci nella coda o nella tabella del database. Quando ne vede uno carica i dati, completa l'attività e riporta il risultato sul database / coda

Ora il tuo utente può caricare un'altra pagina web che interroga lo stato del lavoro e gli fornisce i risultati quando è pronto.

    
risposta data 23.01.2018 - 18:18
fonte

Leggi altre domande sui tag