2015-01-29 13 views
7

Ho un'API webservice che consente al client di inserirsi in Cassandra. Ho letto il documento sulla pagina di datastax (http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Session.html) affermando che dovremmo mantenere la sessione e l'oggetto cluster fino alla fine dell'applicazione. Mi stavo chiedendo dovrei chiamare session.close() e cluster.close() dopo ogni chiamata all'API web o semplicemente mantenere la sessione fino a quando non chiudo il web server?Devo chiamare session.close() e cluster. close() dopo ogni chiamata API Web

+1

A differenza dei siti di forum, non utilizziamo "Grazie" o "Qualsiasi aiuto apprezzato" o firme su [so]. Vedi "[Se 'Hi', 'thanks', tagline e saluti saranno rimossi dai post?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) .Ciao, è "Grazie in anticipo", non "Grazie in anticipo". –

risposta

9

Vorrei sconsigliare la creazione di un Session ogni volta che si riceve una richiesta. Ogni volta che crei un Session tramite Cluster.connect, il java-driver creerà un pool di connessioni a un numero di host sul tuo Cassandra Cluster.

Ad esempio, utilizzando le impostazioni predefinite, se si dispone di 8 cassandra nodi in un singolo centro dati, con la versione 2.0.9 del driver creerà 8 connessioni in pool a ciascun host (questo passerà a 2 nella versione successiva). Ciò creerebbe 64 connessioni ogni volta che si crea un Session.

Sarebbe preferibile avere uno Session condiviso che il server Web può utilizzare. Il driver può gestire più richieste per connessione (predefinito 128 per connessione per impostazione predefinita in 2.0.x), quindi non è necessario preoccuparsi di contesa nella condivisione di un singolo oggetto Session.

+4

Oltre a ciò che Andy descrive, questo post http://www.datastax.com/dev/blog/4-simple- rules-when-using-the-datastax-drivers-for-cassandra ti fornisce una serie di regole di base per assicurarti di utilizzare al meglio l'API –

+1

Da te consigliato, vorrei creare una sessione e un cluster e mantenere li vivo fino alla fine della mia vita sul server Web? Ciò significa che la sessione sarà viva per sempre? Spingiamo la durata della sessione e il cluster sul lato server? È una buona idea? E se ci fossero così tanti clienti che si connettono a Cassandra allo stesso tempo? –

+0

Corretto. Quanti clienti pensate di connettere a cassandra? C'è configurabilità nel driver con gards su quante connessioni create su ciascun nodo. Se sei preoccupato di avere un gran numero di client che si connettono a Cassandra, può essere una buona idea avere servizi intermedi che si interfacciano con cassandra per te. Un buon esempio di ciò sono le app mobili, non vorresti che ogni app mobile avesse una connessione a Cassandra, giusto? Avresti un server di back-end con cui comunica l'app mobile che effettua richieste a cassandra per conto dell'app. –

Problemi correlati