Quando utilizzare il protocollo di accodamento messaggi avanzato come RabbitMQ? [chiuso]


Risposte:


25

Immagina di avere un servizio web in grado di accettare molte richieste al secondo. Hai anche un sistema di contabilità che fa molte cose, una delle quali sta elaborando le richieste provenienti dal servizio web.

Se si inserisce una coda tra il servizio Web e il sistema di contabilità, si sarà in grado di:

  • hanno un accoppiamento minore tra le due applicazioni, perché ora entrambe le applicazioni devono conoscere i parametri di configurazione del sistema di gestione delle code e il nome della coda. Qui il problema è che di solito è più probabile che si trasferisca su un altro server un'applicazione piuttosto che spostare il sistema di gestione delle code
  • se hai molte richieste in arrivo in un breve lasso di tempo, il sistema contabile sarà in grado di elaborarle tutte comunque
  • persistono alcune richieste se il loro numero diventa davvero enorme

Naturalmente, potresti avere situazioni più complesse in cui il numero delle tue applicazioni è molto più grande di due e devi gestire la comunicazione tra di loro.


1
1) In che modo A è accoppiato a B meglio di A accoppiato a C e C accoppiato a B?
Charlie,

2) Perché non inserire la coda nel sistema contabile? Perché introdurre una nuova parte mobile della scatola nera che necessita di una configurazione aggiuntiva?
Charlie,

2
@ Charlie sulla domanda 1, ho modificato la mia risposta. A proposito della domanda 2, cosa intendi esattamente inserendo la coda nel sistema contabile? Vuoi usare una struttura dati in coda? In tal caso avrai più codice da scrivere per persistere. Vuoi simulare la coda usando una tabella di database? Ancora una volta dovrai scrivere del buon codice per gestire quella tabella. Qualcos'altro a cui non ho pensato?
Виталий Олегович,

Ho errato per 1. Se la coda viene inserita nel servizio Web o la coda viene inserita nell'applicazione, rimane un accoppiamento. Se, tuttavia, la coda è esterna ad entrambi, ora hai il doppio dell'accoppiamento e il 50% in più di sistemi per gestire / punti di errore. Se viene selezionata una coda di terze parti, avrai anche questo nuovo pacchetto per conoscere e configurare e probabilmente sarà gravato da innumerevoli funzioni che non ti interessano utilizzare, caratteristiche che sono state aggiunte per rendere la coda generica e utile per molte più situazioni della tua.
Charlie,

@Charlie, presumibilmente un singolo broker di messaggi verrebbe utilizzato tra più sistemi. O ci sarebbe un singolo proxy per il broker. (Nel nostro caso, stiamo utilizzando un'unica appliance di messaggistica in grado di gestire milioni di messaggi al secondo per tutti i nostri sistemi). Questo in realtà crea un maggiore disaccoppiamento perché un messaggio viene generato da un sistema e qualsiasi sistema interessato può ricevere quel messaggio ed eseguire la logica appropriata. L'unico accoppiamento è alla coda stessa.
Michael Brown,

16

Oltre a fornire un buffer tra un servizio Web e un altro servizio back-end, è possibile utilizzare le code dei messaggi per scenari più avanzati. Rabbit MQ (e altri prodotti di coda di messaggi maturi chiamati anche MOM - Message Oriented Middleware) possono essere configurati per instradare e distribuire i messaggi in base a regole diverse.

Ad esempio, la tecnica di routing Pub-Sub consente a un'unica fonte di inviare un messaggio e far sì che molti ascoltatori lo ricevano. Questo è comunemente usato dal software di trading azionario per tenere aggiornati gli utenti.

Anche a causa del fatto che la maggior parte delle MOM dispone di sdk per più lingue e piattaforme, possono essere utilizzate per integrare applicazioni scritte su piattaforme diverse.

Questi sono solo alcuni degli scenari abilitati dalle MOM.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.