2009-11-04 4 views
5

Ich arbeite an einem (hauptsächlich) Perl-Projekt und möchte eine Nachrichtenwarteschlange verwenden, um Prozesse voneinander zu isolieren. Ich habe einen Arbeitsablauf wie folgt aus:Was ist die schnellste Perl IPC/Nachrichtenwarteschlange für eine einzelne Maschine?

Eingang -> Receiver -> Prozessor (en) -> Ausgabe (n)

Ich brauche mehrere hundert Transaktionen zu handhaben/Sekunde, so mein größter Motivator zu beschleunigen. Was ist das schnellste Nachrichtenwarteschlangensystem für diese Art von Setup?

Alle meine Prozesse laufen auf demselben Rechner, so dass ich UNIX-Sockets oder Temp-Dateien verwenden kann, wenn es eine bessere Leistung bedeutet.

Meine beiden Favoriten sind bisher IPC :: DirQueue und beanstalkd. Jeder hat Erfahrung mit beiden und kann Rückschlüsse darauf ziehen, was schneller ist?

Was gibt es sonst noch, die eine superschnelle Arbeitswarteschlange auf einem einzelnen Rechner ermöglichen würde?

Antwort

3

Ich weiß nicht über IPC :: Dirqueue oder Bohnenstange, aber ich hatte einen guten Erfolg mit spread (mit entweder Spread oder Spread::Message Module). Es ist einfach, Multi-Prozess (mit einem anderen Daemon läuft) und auch Multi-Maschine. Das Schöne daran ist, dass Sie, da es gruppenbasiert ist, problemlos einen anderen Listener anhängen können, wenn Sie Dinge wie Logging, Statistik oder Debugging durchführen möchten, ohne Ihre Prozessoren zu ändern (oder zu verlangsamen).

+2

Ich kann nicht helfen, aber jubeln dafür. Zufriedene Nutzer für ein paar Jahre bei meinem früheren Job, bekam sogar eine bezahlte individuelle Unterstützung von den Autoren - Weltklasse rundherum. –

+0

Danke dafür. Ich hatte ähnliche Aufgaben wie das OP zuvor und bin nie auf Verbreitung gestoßen. Ich werde es ausprobieren, wenn ich die Gelegenheit dazu bekomme! – tsee

Verwandte Themen