sql >> Databáze >  >> RDS >> PostgreSQL

Proč potřebujeme zprostředkovatele zpráv jako RabbitMQ přes databázi jako PostgreSQL?

Fronty králíka jsou uloženy v paměti, a proto budou mnohem rychlejší než implementace v databázi. (Dobrá) vyhrazená fronta zpráv by také měla poskytovat základní funkce související s frontou, jako je omezení/řízení toku a možnost vybrat si různé směrovací algoritmy, abychom jmenovali alespoň pár (králík poskytuje tyto a další). V závislosti na velikosti vašeho projektu můžete také chtít komponentu předávání zpráv oddělenou od vaší databáze, takže pokud jedna komponenta zaznamená velké zatížení, nemusí bránit v provozu té druhé.

Pokud jde o problémy, které jste zmínil:

  • dotazování udržuje databázi zaneprázdněnou a má nízkou výkonnost :Pomocí Rabbitmq mohou producenti tlačit aktualizace pro spotřebitele, což je mnohem výkonnější než dotazování. Data se jednoduše odesílají spotřebiteli, když je to potřeba, což eliminuje potřebu zbytečných kontrol.

  • uzamykání stolu -> opět nízký výkon: Neexistuje žádná tabulka k zamknutí :P

  • miliony řádků úkolů -> opět má dotazování nízký výkon: Jak bylo uvedeno výše, Rabbitmq bude pracovat rychleji, protože je umístěn v paměti RAM a poskytuje řízení toku. V případě potřeby může disk také použít k dočasnému ukládání zpráv, pokud mu dojde RAM. Po verzi 2.0 se Rabbit výrazně zlepšil ve využití paměti RAM. K dispozici jsou také možnosti shlukování.

Pokud jde o AMQP, řekl bych, že opravdu skvělou funkcí je „výměna“ a její schopnost směrovat na jiné burzy. To vám dává větší flexibilitu a umožňuje vám vytvářet širokou škálu propracovaných typologií směrování, které se mohou velmi hodit při škálování. Dobrý příklad viz:


(zdroj:springsource.com)

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

A konečně, pokud jde o Redis, ano, může být použit jako zprostředkovatel zpráv a může to dělat dobře. Rabbitmq má však více funkcí fronty zpráv než Redis, protože králíkmq byl od základu postaven jako plnohodnotná vyhrazená fronta zpráv na podnikové úrovni. Redis na druhé straně byl primárně vytvořen jako úložiště klíč-hodnota v paměti (ačkoli toho nyní umí mnohem víc; dokonce se o něm mluví jako o švýcarském armádním noži). Přesto jsem četl/slyšel mnoho lidí, kteří dosahovali dobrých výsledků s Redis pro menší projekty, ale ve větších aplikacích jsem o tom moc neslyšel.

Zde je příklad použití Redis v implementaci chatu s dlouhým dotazováním:http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/



  1. Určení a nastavení edice R12.2

  2. Odhad mohutnosti predikátu na výrazu COUNT

  3. Jak navrhnout databázový model pro rezervační systém kina

  4. Povolení TLS v R12.1