Architettura backend per un datastore con eventi in tempo reale?

1

Devo creare un data store per le transazioni che soddisfano i seguenti requisiti:

  • Una 'transazione' è in effetti una macchina a stati che si sposta attraverso un numero di stati durante il suo ciclo di vita ei messaggi di dati in entrata rappresentano le modifiche allo stato di una transazione (ad esempio, le mosse della transazione da 'Created' a 'Open' a 'Billed' )
  • I dati in arrivo vengono estratti da API di terze parti o ricevuti tramite chiamate all'API pubblica del sistema.
  • Ogni messaggio di dati in entrata è in un formato proprietario che deve essere trasformato in un unico formato coerente e memorizzato
  • La visualizzazione coerente dei dati della transazione viene quindi pubblicata sui client in due modi:
    1. Tramite un endpoint REST statico
    1. Tramite un feed in tempo reale degli eventi di cambiamento

Il sistema deve essere resiliente e tollerante ai guasti: è vietato abbandonare eventi o modifiche a una transazione.

I miei pensieri sono:

  • Avere un livello di input molto semplice per eliminare i messaggi in arrivo su una coda
  • Un livello dell'adattatore dovrebbe leggere dalla coda per analizzare, trasformare e archiviare i messaggi in arrivo
  • L'API statica è relativamente banale
  • Non sono sicuro di come progettare l'aspetto in tempo reale.

Alcune domande / considerazioni sulla progettazione:

  • Il livello dell'adattatore dovrebbe pubblicare eventi dopo aver archiviato i dati, oppure si tratta di problemi di missaggio?
  • Devo memorizzare le modifiche alla transazione come flusso di eventi e materializzare una vista per qualsiasi domanda?
  • Qualcuno può indicarmi qualche architettura di riferimento per sistemi simili?
posta jimmy_terra 26.05.2018 - 03:34
fonte

1 risposta

1

Ok prima di tutto devi definire qual è il requisito in tempo reale per il tuo sistema, o quale latenza deve soddisfare per essere considerato in tempo reale.

Ad esempio: 1. ricevi una richiesta di transazione

a. controlla che la transazione sia valida e completamente definita

b. rispondere in modo appropriato alla transazione nel processo, verificare che la transazione sia fattibile

Tutto ciò deve accadere in un tempo che consideri valido per il tuo tempo reale, diciamo 10 ms. La domanda sorge dopo che cosa succede dopo 10 ms, per esempio, rispedisci la transazione o una richiesta errata?

Il prossimo problema con queste cose è che devi profilare tutto e fare un benchmark. Questo ti darà i posti dove le cose non stanno andando secondo i piani. Di ripagare e profilo di nuovo.

Spero che questo ti dia un piano.

    
risposta data 01.08.2018 - 11:18
fonte

Leggi altre domande sui tag