sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor har vi brug for meddelelsesmæglere som RabbitMQ over en database som PostgreSQL?

Rabbits køer ligger i hukommelsen og vil derfor være meget hurtigere end at implementere dette i en database. En (god) dedikeret beskedkø bør også give essentielle kørelaterede funktioner såsom drosling/flowkontrol og muligheden for at vælge forskellige routingalgoritmer, for at nævne et par (kanin leverer disse og mere). Afhængigt af størrelsen af ​​dit projekt, vil du muligvis også have, at meddelelseskomponenten passerer adskilt fra din database, så hvis en komponent udsættes for stor belastning, behøver den ikke at hindre den andens drift.

Hvad angår de problemer, du nævnte:

  • afstemning holder databasen optaget og laver ydeevne :Ved hjælp af Rabbitmq kan producenter skubbe opdateringer til forbrugerne, som er langt mere effektive end polling. Data sendes simpelthen til forbrugeren, når det skal være, hvilket eliminerer behovet for spildte kontroller.

  • låsning af bordet -> igen lavtydende: Der er ikke noget bord at låse :P

  • millioner af rækker med opgave -> igen er afstemningen dårligt præsterende: Som nævnt ovenfor, vil Rabbitmq fungere hurtigere, da den ligger i RAM og giver flowkontrol. Om nødvendigt kan den også bruge disken til midlertidigt at gemme beskeder, hvis den løber tør for RAM. Efter 2.0 har Rabbit forbedret sit RAM-forbrug markant. Klyngemuligheder er også tilgængelige.

Med hensyn til AMQP, vil jeg sige, at en rigtig fed funktion er "børsen" og muligheden for, at den kan rute til andre børser. Dette giver dig mere fleksibilitet og giver dig mulighed for at skabe en bred vifte af komplicerede routingtypologier, som kan være meget praktiske ved skalering. For et godt eksempel, se:


(kilde:springsource.com)

og:http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

Endelig, med hensyn til Redis, ja, det kan bruges som en meddelelsesmægler og kan gøre det godt. Rabbitmq har dog flere beskedkøfunktioner end Redis, da rabbitmq blev bygget fra bunden til at være en dedikeret beskedkø med fuld funktioner på virksomhedsniveau. Redis på den anden side blev primært skabt til at være en butik med nøgleværdier i hukommelsen (selvom den gør meget mere end det nu; den omtales endda som en schweizisk hærkniv). Alligevel har jeg læst/hørt mange mennesker opnå gode resultater med Redis til mindre projekter, men jeg har ikke hørt meget om det i større applikationer.

Her er et eksempel på, at Redis bliver brugt i en langtidsafstemning chatimplementering:http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/



  1. Skal jeg angive både INDEX og UNIQUE INDEX?

  2. Omdøb sikkert tabeller ved hjælp af serielle primærnøglekolonner

  3. Konvertering af en dato i MySQL fra strengfelt

  4. Dialekt skal udtrykkeligt angives fra v4.0.0