2012-02-19 9 views
5

Attualmente sto usando le guide per servire pagine web statiche e sto sperimentando con NodeJs per gestire alcuni aspetti della mia applicazione in tempo reale.Come strutturare le comunicazioni tra il server Nodejs e le guide?

Sono stato in grado di eseguire una comunicazione unidirezionale tra Nodejs e il mio server Rails, facendo in modo che Nodejs scriva su un db e il mio server rota leggendo da esso.

Ora voglio fare il contrario, ovvero un'azione in Rails attiverà un'azione in Nodejs. Ovviamente posso essere stupido e avere un nodo che interroga continuamente il server del database.

Quali sono le mie opzioni?

  1. Impostare le chiamate RPC tra i due
  2. Impostare un socket TCP in entrambe le direzioni

ci sono più facili/opzioni più veloce?

risposta

3

Beh tecnicamente si ha un sacco di modi per inter process communication, se volete qualcosa di semplice credo che si dovrebbe avere uno sguardo a dnode che fornisce RPC su TCP o named pipe e ha un ruby implementation. Rendendo molto facile per voi fare chiamate RPC e dal momento che è TCP è possibile utilizzarlo su macchine incrociate.

Si può anche avere una coda di messaggi come zeromq, ma credo che avrà un sovraccarico non necessario. Sarebbe positivo per i casi in cui hai più di due processi che parlano tra loro.

Accanto a tutti questi se si desidera la latenza minima, se i processi sono entrambi in esecuzione su una macchina, credo che si dovrebbe usare una named pipe e stdio per la comunicazione, ma non conosco alcun modulo nel nodo che ti aiuterà ad astrarre ciò, e devi costruire il tuo modulo RPC su stdio.

+3

Per aggiungere a ciò, considerare zeromq se si desidera un ecosistema in cui deve essere agganciato linguisticamente - dove diversi processi scritti in lingue diverse devono comunicare tra loro su un protocollo standardizzato. Questo è ciò che può offrire zeromq: semplificare il livello di comunicazione e semplificare la comunicazione tra i processi. –

3

Se si utilizza Redis, di recente ho scritto un redis_message_capsule:

per fare questo. Sentiti libero di provarlo o modificarlo come preferisci.

+0

+1 Questa è una soluzione davvero accurata. Grazie per il fantastico lavoro. – lorefnon

Problemi correlati