Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Invio record a webservices remoto e backup serializzato quando connessione web assente

    Salve,

    Sto realizzando un programmino che sostanzialmente ascolta eventi da un generatore di eventi ( programma esterno) e deve prendere l'evento ricevuto, serializzarlo in json ed inviarlo ad un applicativo remoto tramite un apposito webservice

    Avevo pensato ad una cosa del genere:

    1) ricevo l'evento
    2) lo serializzo
    3) invio richiesta al webservices remoto
    3a) non ho errori, termino
    3b) errore di connessione, proseguo
    4) setto lo stato del sistema in "offline"
    5) scrivo l'evento serializzato su filesystem e termino

    in "offline" mode tutti i seguenti eventi verranno direttamente scritti su filesystem, finchè qualcosa non riporterò il sistema in "online" e torneremo ad usare il webservices

    ora, il flusso di eventi potrebbe essere molto basso ( decine l'ora) o molto alto (decine al secondo), quindi l'idea di scrivere su filesystem deve essere ragionata bene

    intanto gli eventi devono essere accodati nello storage, perchè poi devono essere inviati nell'ordine ricevuto (che sarà il piu possibile fedele all'ordine temporale dell'evento stesso), e in secondo luogo, una volta tornato in online il sistema, ci vorrà qualcosa che prenda tutti gli eventi salvati su filesystem e li invii al ws remoto (prima o durante la ricezione di nuovi eventi, poi vedo)

    Ora, cosa uso secondo voi per salvare su filesystem questi dati? l'idea di massimo sono:

    1) sqllite o berkley db
    2) http://square.github.io/tape/ o http://www.ehcache.org/ (devo capire se entrambi supportano la concorrenza negli accessi)
    3) soluzioni custom (ma quando mai)
    4) varie ed eventuali provenienti da vostre idee geniali

    Per aumentare il throughput a sistema online pensavo di usare un pool di servizi che inviano l'evento serializzato al ws remoto, quindi in caso di sistema offline il pool scriverà contemporaneamente nella cache (condivisa? una a servizio? )

    usare sqllite così come berkley, non so potrebbe essere un'idea così magari se in futuro devo salvarmi qualcosa di diverso (tipo configurazioni o cose simili) potrei appoggiarmi direttamente a uno dei due. tape (non so se sia concorrente) o ehcache potrebbero essere una soluzione, ma non li conosco non li ho mai utilizzati (nel senso che me li studio, ma non so se rispondono all'esigenza). Poi cercavo su google qualche spunto per qualche altra idea nel mentre

    Qualche idea, suggerimento, pensiero in merito?

    Grazie
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  2. #2
    dimenticavo: java 8 come versione
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    vabbeh alla fine ho usato sqlite. berkley db probabilmente era migliore ma cozza la licenza d'uso con la mia applicazione

    Ho fatto un test di carico, con 12 thread di pool riesco a fare 12.000 insert in 76 secondi a 157 record/secondo, mi posso accontentare direi
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.