2012-06-07 21 views
7

Attualmente sto lavorando con DerbyJS perché promuove il codice client/server pulito, DRY. Il vantaggio secondario (il motivo principale per cui la maggior parte delle persone usa il framework) è che usa Socket.IO per creare app in tempo reale. In questo caso, non ho necessario in tempo reale, ma è una bella aggiunta.Socket.IO - le connessioni aperte sono un problema?

La mia domanda è: sto sacrificando scalabilità/prestazioni utilizzando Socket.IO e tutte le connessioni aperte gestite? Usare Backbone + ExpressJS libererebbe risorse in quanto non ci sono connessioni aperte?

risposta

10

Mantenere un sacco di connessioni aperte ha ovviamente un costo in termini di sovraccarico del server, ma non mi preoccuperei di preoccupazioni come questa, a meno che non si abbia un evidente problema di ridimensionamento. Una volta che hai un evidente problema di ridimensionamento, dovresti avere abbastanza entrate per comprare più risorse del server. I server sono molto economici e il tuo tempo è molto costoso. Non preoccuparti di ottimizzare le piccole cose.

+0

In generale, penso che si tratti di regole pratiche discretamente buone, ma che sono molto orientate al business. Non tutto il software è scritto in un contesto aziendale. Futher, dicendo "non fare quella domanda, perché X e Y" è solo un po 'meglio del solo dire "non fare quella domanda". –

5

sto sacrificando scalabilità/prestazioni utilizzando Socket.IO e tutte le connessioni aperte da ?

Se si desidera aggiornare la pagina (pagina dinamica) immediatamente quando sono disponibili nuove informazioni. Quindi mantenere la connessione aperta utilizzando non-blocking io è il modo più efficiente per farlo. Fortunatamente node.js usa io non bloccante. Questo è uno dei motivi per cui node.js è così popolare (oltre al fatto che puoi programmare in JavaScript, che è il linguaggio di programmazione più popolare). Se davvero non ne hai bisogno (anche in futuro) perché il tuo sito web è piuttosto statico (non in tempo reale come hai detto tu), la chiusura della connessione ti farà risparmiare risorse.

Utilizzare Backbone + ExpressJS libera le risorse poiché non ci sono connessioni aperte ?

Vorrei esaminare il costo (tempo di sviluppo) per sviluppare il sito Web utilizzando la combinazione backbone/express e derbyjs.

Quindi nuovamente come Nate menzionato Socket.io può gestire facilmente molte (1000) connessioni simultanee. Se è più facile da sviluppare usando derbyJS, lo userei. Quando attraversi quella strada puoi sempre decidere di aggiungere più server o riprogettare (potresti assumere programmatori extra) il tuo sito web per utilizzare la combinazione espresso/backbone. Prima prova ad arrivare a un punto in cui gli utenti trovano il tuo sito web prezioso con il minimo sforzo (tempo di sviluppo).

P.S: Penso che dovresti cercare di mantenere il tuo sistema il più modulare possibile in modo che la sostituzione di Derby.js per qualcos'altro possa essere fatto con il minor tempo possibile.

Problemi correlati