Sequenza delle attività distribuite con un DB distribuito

1

Sfondo

Ho due processi separati, WriteIt() e ReadIt() . Uno crea i record e l'altro elabora i record in un cluster DB.

Una volta che WriteIt() crea un record, accoda un ReadIt() task per elaborare lo stesso record.

Per illustrare:

Sfortunatamente, la scrittura e la replica del database richiedono una quantità di tempo inaffidabile, quindi ReadIt() deve continuare a controllare la presenza del record aggiornato, il che sembra abbastanza inefficiente.

Domanda

Questo deve essere un modello comune per i sistemi distribuiti. Quindi le mie domande sono:

  1. Esiste un termine generale (o termini) per questo modello, in modo che io possa leggere come risolverlo? Sfortunatamente non so nemmeno quale sia la terminologia giusta, quindi ho fatto un po 'di tempo a fare ricerche su Google / SO / Programmers.SE.

  2. (per crediti extra) Esiste un approccio comune specifico per risolvere questo problema con SQLAlchemy / MySQL e Celery?

Riconosco che il n. 2 è piuttosto specifico, quindi sarei felice solo con il n. 1 dal momento che ho solo bisogno di essere indirizzato nella giusta direzione per ricercare il modello.

    
posta tohster 31.03.2015 - 22:01
fonte

1 risposta

2

Specificamente sì il nome del modello nei sistemi distribuiti è chiamato consistenza finale .

L'approccio comune è sincrono scrivere i dati in un archivio eventi e quindi scrivere in SQL. Il tuo lavoro di lettura in sottofondo in coda può essere certo che una volta che i dati si trovano nell'archivio degli eventi, è un successo e non andranno persi.

Di solito le persone usano un sistema di archiviazione ad alte prestazioni che è molto veloce nel gestire e serializzare un sacco di scritture concorrenti per il negozio di eventi.

Un buon approccio è spesso chiamato separazione della responsabilità di comando-query con l'event sourcing .

    
risposta data 31.03.2015 - 23:01
fonte