Approcci che tengono conto della scarsa connettività

4

Prima di tutto alcune informazioni di base

La mia azienda ha un software come modello di servizio in cui le persone accedono ai nostri server e lavorano. Per supportare questa applicazione, abbiamo un'applicazione di utilità che vive sul computer client e copia i dati binari dai nostri server alle loro macchine.

La prima iterazione di questo software ha interrogato il database e poi ha generato le informazioni sul lato client. Questo approccio è stato eliminato perché pensavamo là dove c'erano alcuni difetti fondamentali

  • Sondare il database per vedere se è stato fatto qualsiasi lavoro
  • Aprendo la nostra porta SQL al mondo
  • Estrarre tutti i dati dal database e generarli sul lato client.

La nostra seconda iterazione del software ha generato i dati su uno dei nostri server e l'abbiamo inviata al client tramite il servizio di messaggistica Java. I vantaggi sono visti come

  • Event Driven
  • Nessun sondaggio
  • La porta SQL è chiusa
  • I dati non vengono generati sulla WAN

Quanto sopra è per illustrare gli approcci che abbiamo usato in passato.

Il problema che abbiamo è che i nostri client hanno spesso scarsa connettività (perdita di pacchetti, tempi di risposta scadenti, ecc.) JMS doveva gestirlo come dovrebbe riconnettersi quando la linea ritorna, ma questo non accade sempre .

Quali sono gli approcci migliori per gestire la scarsa connettività client?

Modifica

Per spiegare cosa intendo per JMS che non funziona come previsto.

La mia aspettativa per JMS è che funzioni in modo affidabile. Quello che intendo con questo è che se una linea va giù, o sta perdendo pacchetti, o se si comporta in modo anomalo in qualsiasi altro modo che l'implementazione JMS continuerà a provare a inviare il messaggio fino a quando non riesce.

Ad esempio, vedo quasi ogni giorno una coda JMS con utenti collegati, ma nessun messaggio viene inviato o ricevuto, il riavvio del client normalmente risolve il problema.

Posso parlare di più specifiche, tuttavia nell'interesse di questa conversazione lasciamo uscire JMS come potenziale risposta

EDIT 2

Volevo altre possibili soluzioni al mio problema, ma il consenso generale sembra essere che il mio attuale (JMS) sia il migliore.

Quindi qui ci sono 2 dei miei casi attuali in cui sto riscontrando problemi con JMS

Caso 1

Il client si connette alla coda con successo invia e riceve più messaggi, dopo un tempo variabile (tra diverse ore e diversi giorni) il client non riceve più alcun messaggio. La coda principale mostra gli utenti connessi, ma il client non riceve mai i messaggi. La risoluzione è riavviare l'applicazione client

Caso 2

Il client non si connette mai alla coda. Il client tenta continuamente di riconnettersi ma la riconnessione fallisce sempre. La soluzione per questo è riprovare tra qualche ora

La nostra configurazione è abbastanza semplice

  • Un server pubblico
  • OpenMQ
  • I client sono a basso volume, che vanno da 10 messaggi al giorno a 1000 messaggi al giorno
  • I client non avviano mai una "conversazione di messaggi", la coda viene avviata e i client rispondono
  • I messaggi sono piccoli, tutto testo puro, nessun dato binario
  • config è la seguente:

    connectionFactory = new ConnectionFactory();
    connectionFactory.setProperty(ConnectionConfiguration.imqAddressList, connectionURL);
    connectionFactory.setProperty(ConnectionConfiguration.imqReconnectEnabled, "true");
    connectionFactory.setProperty(ConnectionConfiguration.imqPingInterval, "30");
    connectionFactory.setProperty(ConnectionConfiguration.imqReconnectAttempts, "-1");
    connectionFactory.setProperty(ConnectionConfiguration.imqReconnectInterval, "30000");
    
posta Tim Sparg 19.04.2011 - 12:10
fonte

1 risposta

1

RESTful . JAX-WS lo supporta.

...In the web services world, REpresentational State Transfer (REST) is a key design idiom that embraces a stateless client-server architecture in which the web services are viewed as resources and can be identified by their URLs. Web service clients that want to use these resources access a particular representation by transferring application content using a small globally defined set of remote methods that describe the action to be performed on the resource. REST is an analytical description of the existing web architecture, and thus the interplay between the style and the underlying HTTP protocol appears seamless...

Architects and developers need to decide when this particular style is an appropriate choice for their applications. A RESTFul design may be appropriate when...

    
risposta data 19.04.2011 - 12:23
fonte

Leggi altre domande sui tag