Redis
 sql >> Database >  >> NoSQL >> Redis

Principiante delle applicazioni in tempo reale - Node.JS + Redis o RabbitMQ -> client/server come?

Dal punto di vista architettonico, entrambe le scelte equivalgono alla memorizzazione dei dati in un server di database Oracle per il recupero di un'altra applicazione.

Sia la soluzione RabbitMQ che quella Redis richiedono che le tue app si connettano a un server intermedio che gestisce le comunicazioni di dati. Redis è molto simile a Oracle, perché può essere utilizzato semplicemente come database persistente con un'API di rete. Ma RabbitMQ è leggermente diverso perché MQ Broker non è realmente responsabile della persistenza dei dati. Se lo configuri correttamente e usi le opzioni giuste quando pubblichi un messaggio, RabbitMQ in realtà manterrà i dati per te ma non puoi estrarre i dati se non come parte del normale processo di accodamento dei messaggi. In altre parole, RabbitMQ serve per comunicare messaggi e offre la persistenza solo come metodo di ripristino da problemi di rete o arresti anomali del sistema.

Suggerirei di utilizzare RabbitMQ e qualsiasi linguaggio di programmazione con cui hai già familiarità. Poiché la M in LAMP è generalmente interpretata come MySQL, ciò significa che non utilizzerai affatto MySQL o lo utilizzeresti solo per l'archiviazione a lungo termine dei dati, non per le comunicazioni in tempo reale.

Il sito RabbitMQ ha un'enorme quantità di documentazione sulla creazione di app con AMQP. Ti suggerisco di leggere i documenti per rabbitmqctl dopo aver installato RabbitMQ e quindi crea un vhost in cui sperimentare. In questo modo è facile ripulire i tuoi esperimenti senza resettare tutto. Suggerisco anche di utilizzare solo gli scambi di argomenti perché puoi emulare il comportamento degli scambi diretti e fanout utilizzando i caratteri jolly in routing_key. Ricorda, pubblichi solo messaggi negli scambi e ricevi solo messaggi dalle code. Lo scambio è responsabile della corrispondenza del modello tra la chiave_instradamento del messaggio e la chiave_associazione della coda per determinare quali code devono ricevere una copia del messaggio. Vale la pena imparare l'intero modello AMQP anche se prevedi di inviare messaggi solo a una coda con lo stesso nome della chiave_instradamento.

Se stai costruendo il tuo client nel browser e desideri creare un prototipo, dovresti considerare di utilizzare XHR oggi stesso, quindi passare a qualcosa come Kamaloka-js che è una pura implementazione Javascript di AMQP (il protocollo AMQ) che è il protocollo standard utilizzato per comunicare con un broker di messaggi RabbitMQ. In altre parole, costruiscilo con ciò che sai oggi e poi acceleralo in seguito quale qualcosa (AMQP) che ha un futuro a lungo termine nella tua cassetta degli attrezzi.