Elaborazione parallela degli utenti

2

Aggiornamento Ho aggiornato la mia domanda per riflettere sul fatto che sto lavorando con un database. Devo elaborare le azioni dell'utente:

  1. Le azioni per ogni utente cambiano il saldo dell'utente che viene poi mantenuto in un database.
  2. L'azione dell'utente deve essere elaborata in sequenza. Altrimenti, potremmo corrompere il bilancio nel database.
  3. Alcune azioni sono associate a 2 utenti, nel qual caso non possono essere eseguiti in parallelo con le azioni dell'utente.
  4. Il volume delle azioni per utente varia considerevolmente durante il giorno.
  5. Aggiornamento I processi verranno distribuiti su più macchine.

Sto cercando di trovare un modo per distribuire le azioni tra i processi in modo tale che i requisiti precedenti siano soddisfatti.

Esiste un paradigma, un'architettura o un algoritmo noto che risolve un simile problema?

Sto cercando una soluzione che non coinvolga processi che parlano tra loro tranne che attraverso una coda di messaggi o qualche altro mediatore scalabile.

    
posta daramasala 06.05.2015 - 07:08
fonte

2 risposte

1

Un semplice approccio avido dovrebbe soddisfare le tue esigenze. Presumo che tu abbia una coda di input ordinata con tutte le azioni da elaborare e un elenco di azioni associate agli utenti corrispondenti attualmente in elaborazione (parallela) (chiamiamo questi "utenti in elaborazione"). Ogni volta che viene eseguita l'elaborazione di un'azione, questa viene rimossa e si controllano gli elementi successivi dalla coda di input, che possono essere aggiunti come successivi senza una collisione con gli utenti in elaborazione. Si noti che si controlla la coda completa in ordine, non solo l'elemento superiore.

È possibile aggiungere nuove azioni all'elenco di elaborazione finché si eseguono azioni per utenti attualmente non in elaborazione. Se è necessario limitare il numero di processi in parallelo a qualche numero N, ciò si può fare facilmente non aggiungendo più di N azioni alle accensioni attualmente elaborate.

    
risposta data 06.05.2015 - 08:05
fonte
0

Suggerirei di esaminare gli algoritmi di pianificazione: un elenco di algoritmi di pianificazione per categoria qui

e rapporti di ordine parziale per garantire che l'ordine delle azioni di un determinato utente sia rispettato. Puoi generare un albero di dipendenze usando le relazioni che ti aiuteranno nella pianificazione.

    
risposta data 06.05.2015 - 08:09
fonte

Leggi altre domande sui tag