Le migliori pratiche per il buffering durante la pubblicazione su un servizio web offline

3

Se raccolgo dati che devono essere registrati su un servizio Web su base regolare (~ 5 minuti) e il servizio è temporaneamente offline, qual è la procedura migliore per assicurarci di non perdere alcun dato?

Ovviamente, potremmo semplicemente archiviare in memoria fino a quando il servizio è di nuovo online, ma cosa succede se il servizio è offline per un lungo periodo di tempo? Dovremmo tornare a memorizzare semplicemente i dati serializzati sul file system locale fino a quando il servizio non sarà di nuovo online?

Ci sono altre considerazioni / pratiche?

Qualsiasi framework 'out of the box' che gestisca questo per C #?

EDIT:

È fondamentale per l'azienda non perdere dati minimi o molto limitati per l'auditing in ambienti sensibili a temperatura controllata. Useremo Json e saranno semplicemente letture di sensori (non una grande quantità di dati). Useremo l'API Web, probabilmente ospitata su Azure, quindi la disponibilità del servizio dovrebbe essere buona. Ovviamente ci sono altri fattori come problemi di rete localizzati. Tutto sarà sotto il nostro controllo, a parte l'infrastruttura in cui verrà installato il software del sensore, questo sarà nei siti dei clienti.

    
posta Darren Young 20.07.2015 - 13:25
fonte

1 risposta

3

Dato che menzionate che il buffering IMHO "It's business critical that we don't lose any, or very minimal, data" in memoria non è davvero una buona idea: è volatile e se la vostra macchina / processo muore per qualsiasi motivo, i dati vengono persi. Inoltre, il buffering in memoria richiede maggiore attenzione (tempo di inattività sconosciuto, risorse di memoria masticabili, ecc.)

In caso di errore di caricamento, sono sempre in grado di memorizzare i dati in una posizione persistente locale che può sopravvivere al riavvio del server. Ogni volta che il tentativo di caricamento "corrente" ha esito positivo (cioè il server è di nuovo online) riprovare a caricare tutti i dati "in sospeso" dalla posizione persistente, magari in più blocchi se necessario.

Non dovrebbe essere così complesso da giustificare un framework "out of the box" esclusivamente per questo scopo.

    
risposta data 21.07.2015 - 05:12
fonte

Leggi altre domande sui tag