sql >> Database >  >> RDS >> PostgreSQL

Waarom hebben we berichtenmakelaars zoals RabbitMQ nodig boven een database zoals PostgreSQL?

De wachtrijen van Rabbit bevinden zich in het geheugen en zullen daarom veel sneller zijn dan dit in een database te implementeren. Een (goede) toegewijde berichtenwachtrij moet ook essentiële wachtrijgerelateerde functies bieden, zoals beperking/stroomregeling, en de mogelijkheid om verschillende routeringsalgoritmen te kiezen, om een ​​paar te noemen (konijn biedt deze en meer). Afhankelijk van de grootte van uw project, wilt u misschien ook dat de component voor het doorgeven van berichten gescheiden is van uw database, zodat als een component zwaar wordt belast, dit de werking van de andere niet hoeft te hinderen.

Wat betreft de problemen die je noemde:

  • peilingen houden de database bezig en presteren slecht :Met Rabbitmq kunnen producenten duwen updates voor consumenten, wat veel beter presteert dan opiniepeilingen. Gegevens worden eenvoudig naar de consument gestuurd wanneer dat nodig is, waardoor verkwistende controles overbodig zijn.

  • vergrendelen van de tafel -> opnieuw slecht presterend: Er is geen tafel om te vergrendelen :P

  • miljoenen rijen met taken -> opnieuw presteert polling slecht: Zoals hierboven vermeld, zal Rabbitmq sneller werken omdat het RAM bevat en stroomregeling biedt. Indien nodig kan het de schijf ook gebruiken om tijdelijk berichten op te slaan als het RAM-geheugen opraakt. Na 2.0 heeft Rabbit het RAM-gebruik aanzienlijk verbeterd. Clusteringsopties zijn ook beschikbaar.

Met betrekking tot AMQP zou ik zeggen dat een echt coole functie de "uitwisseling" is en de mogelijkheid om deze naar andere uitwisselingen te routeren. Dit geeft u meer flexibiliteit en stelt u in staat om een ​​breed scala aan uitgebreide routeringstypologieën te creëren die erg handig kunnen zijn bij het schalen. Zie voor een goed voorbeeld:


(bron:springsource.com)

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

Ten slotte, met betrekking tot Redis, ja, het kan worden gebruikt als een berichtenmakelaar en kan het goed doen. Rabbitmq heeft echter meer functies voor het in de wachtrij plaatsen van berichten dan Redis, aangezien Rabbitmq van de grond af is gebouwd om een ​​volledig toegeruste berichtenwachtrij op ondernemingsniveau te zijn. Aan de andere kant is Redis in de eerste plaats gemaakt als een in-memory key-value-winkel (hoewel het nu veel meer doet dan dat; het wordt zelfs een Zwitsers zakmes genoemd). Toch heb ik veel mensen gelezen/gehoord die goede resultaten boeken met Redis voor kleinere projecten, maar ik heb er niet veel over gehoord in grotere toepassingen.

Hier is een voorbeeld van Redis dat wordt gebruikt in een implementatie van een lange pollingchat:http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/



  1. Cumulatieve som berekenen in PostgreSQL

  2. Wat is in een Oracle-database het verschil tussen ROWNUM en ROW_NUMBER?

  3. Is er in Oracle een functie die het verschil tussen twee datums berekent?

  4. Grote .patch_storage