Mi piacerebbe creare un'applicazione web in tempo reale soft fault-tolerant per un negozio di consegna pizza. Dovrebbe aiutare la pizzeria ad accettare le telefonate dei clienti, inserirli nel sistema (tramite un client Web CRM) e aiutare gli spedizionieri ad assegnare i corrieri agli ordini.Creazione di un'applicazione Web in tempo reale soft fault-tolerant con Erlang/OTP
Questi obiettivi non sono nulla di insolito, ma mi piacerebbe rendere il servizio disponibile 24 ore su 24, 7 giorni su 7, ovvero renderlo tollerante ai guasti. Inoltre, mi piacerebbe farlo funzionare molto velocemente e di essere molto reattivo.
Di seguito è una vista di architettura molto semplice per tale applicazione.
Il problema è che non so come usare tutta la bontà Erlang/OTP per rendere l'applicazione molto reattivo e fault tolerant.
Ecco le mie domande:
- Quali elementi del sistema dovrebbe essere replicato al fine di fornire la tolleranza d'errore e come devo fare? So che posso memorizzare lo stato di ciascun veicolo (coordinate, ordini assegnati, ecc.) In un database Mnesia replicato. È una strada giusta da percorrere?
- Quali servizi di archiviazione dati dovrebbero essere basati su SQL convenzionale (ad esempio in base a boss_db) e che dovrebbero essere eseguiti su Mnesia per fornire una risposta molto rapida? Va bene usare un database SQL convenzionale per archiviare i record e la cronologia dei clienti in un'applicazione così resistente ai guasti e altamente reattiva?
- Devo provare a memorizzare tutti i dati per tutti i servizi (clienti, stato dei veicoli, ecc.) Nella RAM al fine di rendere l'applicazione altamente reattiva?
- Devo memorizzare i dati del veicolo persistente (id, capacità, ecc.) In un database SQL convenzionale e memorizzare i dati in tempo reale (coordinate, ordini assegnati, ordini nel bagagliaio, ecc.) In un database Mnesia per l'applicazione più reattiva in tempo reale?
Se non si replicano tutti i dati e la logica dell'applicazione, come si effettuerà il servizio 24 ore su 24, 7 giorni su 7 in caso di es. un errore del server di database;) –
È possibile fornire un riferimento su come replicare i dati in un sistema Erlang/OTP che ha 2 o più nodi che si occupano di logica? Gruppo di processi – skanatek
, inviare a tutti, risoluzione dei conflitti o semplicemente utilizzare riak/couchdb. O guardi mnesia. Ma farlo da solo sarà un compito davvero difficile. –