Istantanea coerente

3

Supponiamo che il processo A abbia un'istantanea coerente di alcune entità. E riceve costantemente aggiornamenti per queste entità. Ora il client B si connette a A e dovrebbe ricevere lo snapshot coerente delle entità che A ha e quindi dovrebbe ricevere tutti gli aggiornamenti ricevuti da A.

Normalmente se fosse una richiesta sincrona, avrei preso un blocco di lettura sullo snapshot di A e su writelock sugli aggiornamenti di A, che mi avrebbero permesso di trasferire lo stato su B.

La domanda è: possiamo rendere questo processo asincrono? Significa che la richiesta da B a A è asincrona?

Possiamo usare gli algoritmi CHANDY-LAMPORT o LAI-YANG qui? Sono abbastanza nuovo per gli algoritmi distribuiti, quindi cerco un po 'di esperienza.

    
posta Eddie Jamsession 16.04.2015 - 12:13
fonte

1 risposta

2

Panoramica

Questo è un modo per risolvere questo problema. immagina una richiesta. Contiene informazioni che definiscono la richiesta (si tratta di un aggiornamento dei dati, o è una richiesta per i dati correnti) e il modo in cui il richiedente deve essere informato che la richiesta è stata eseguita e dei suoi risultati.

Avanti, hai una coda. Poni la richiesta in coda e, a un certo punto, ti verranno comunicati i risultati della tua richiesta. Puoi farlo in modo sincrono bloccando, ma è preferibile una richiamata asincrona o una notifica di un evento.

Finalmente hai un agente (o lavoratore) che elabora le richieste una alla volta. In questo modo le richieste per lo stato corrente sono sempre coerenti. Poiché è un thread singolo, non è necessario il blocco degli oggetti per garantire un accesso rapido.

Implementazione

Questo sistema viene solitamente implementato utilizzando una coda messaggi, con un singolo consumatore. vedere i dettagli sull'utilizzo di una coda messaggi in uno stile RPC Esercitazione su Rabbit MQ . Ma il modello può essere ridotto a una singola applicazione in esecuzione su un server utilizzando un oggetto coda FIFO thread-safe.

    
risposta data 16.04.2015 - 14:04
fonte

Leggi altre domande sui tag