Controllo duplicato ridondante

2

Supponiamo di avere un'applicazione che accetta un flusso arbitrario di oggetti. Alcuni di questi oggetti appaiono più volte in questo stream. Il compito della mia applicazione è quello di filtrare quegli oggetti duplicati dallo stream e passare una versione duplicata del flusso alla prossima applicazione. Questo di solito è banale, ma per motivi di ridondanza voglio creare più istanze di questo duplicato-correttore su più macchine in modo che possa continuare a funzionare quando una macchina muore per qualsiasi motivo. Come faccio a fare un tale controllo duplicato se viene eseguito in parallelo? Come puoi sincronizzare questo senza bloccare costantemente tutte le istanze tranne una? È persino possibile?

Nota: non sto cercando una particolare implementazione o una soluzione in qualche lingua, questa è più una domanda concettuale.

    
posta Shadowigor 23.02.2018 - 11:52
fonte

1 risposta

2

Vuoi una cache distribuita, come memcached. Tuttavia, contrariamente al caso d'uso normale,

  1. anziché i documenti da pubblicare, ti consigliamo di memorizzare i valori hash di ogni oggetto visto.
  2. tu vuoi usare il servizio per assicurarti la correttezza, non solo per accelerare la cosa, cioè è non OK per perdere alcune richieste duplicate (come sarebbe il caso per una cache di pagina)

Sfortunatamente, la coerenza della cache è una delle cose proverbialmente difficili in informatica. Prima di utilizzare una soluzione standard, è necessario assicurarsi che possa effettivamente garantire che le richieste vengano elaborate in un determinato ordine, ovvero che un duplicato non può passare attraverso il semplice fatto che è stato interrogato su due nodi diversi in rapida successione. A seconda di quanto siano rigidi i tuoi requisiti, molti di questi mali potrebbero non essere in grado di fornire tale garanzia.

    
risposta data 23.02.2018 - 13:09
fonte

Leggi altre domande sui tag