2016-07-26 19 views
1

Ich bin Junior-Backend-Entwickler und jetzt arbeite ich an einem Projekt über Bank, die ein verteiltes System ist. Was ich vorher wusste, war, dass es eine Nachrichtenbibliothek wie ZeroMQ gab, um die Kommunikation zwischen Komponenten in einem verteilten System zu realisieren. Aber jetzt, in dem Projekt, verwendeten sie Oracle-Queuing.
ZeroMQ vs Oracle Warteschlange

Mein Kollege sagte mir, dass dies besser sei, weil wir kein Risiko hätten, irgendeine Nachricht zu verlieren, selbst wenn Prozesse versehentlich verloren gehen.

Meine Fragen:
Q1: Wenn Oracle Queuing besser ist, wenn wir sollten verwenden Dinge wie ZeroMQ?
und
Q2: Was ist der Nachteil von Oracle Warteschlangen, im Vergleich zu ZeroMQ?

+0

Der Hauptpunkt ist wahrscheinlich, dass Sie bereits Oracle als Ihre Datenbank verwenden, so dass Sie es auch für die Warteschlange verwenden können. Es ist wie eine Funktion für kostenlose ... – dcieslak

+0

Oracle AQ Nachteil ist klar - Leistung (und auch Preis). Und manchmal können Sie auch einige Fehler sehen. Für den Rest der Features schlägt AQ andere (kostenlose) Messaging-Systeme, Transaktionsunterstützung, XA-Unterstützung, Online-Backup-Unterstützung, HA-Clusterunterstützung, ... – ibre5041

+1

ZeroMQ ist ** kein Warteschlangenmechanismus **. Es ist ein ** Transportmechanismus **, der mit Warteschlangen verbunden ist, um bestimmte Dinge durchzuführen, wie Peer-Erkennung nach dem Binden usw. Sie können Daten, die von ZeroMQ in die Warteschlange gestellt wurden, persistent halten, aber sie kommen nicht aus der Verpackung. Der andere Vorteil von ZMQ ist, dass es nichts schneller auf dem Markt gibt, plus andere Goodies, wenn Sie ein Entwickler sind, der sich mit verteilten Systemen befasst. ZMQ verliert keine Nachrichten. Dein Freund hat falsche Annahmen über ZMQ gemacht und seine Hausaufgaben nicht gemacht. Aus diesem Grund lesen wir die Handbücher, bevor wir zufälligen Schritten unserer Peer-Entwickler zuhören. – Mjh

Antwort

-1

Ihr Kollege ist hier, denn Oracle AQ kommt mit Persistenz und zeroMQ ist In-Memory. Sie würden zeroMQ verwenden, wenn Sie max. Nachrichten pro Sekunde (Millionen) benötigen. Der Preis ist keine Sache, denn Oracle erhebt keinen Aufpreis für AQ, es ist sogar kostenlos mit Oracle XE.

Wenn Ihre Anwendung bereits auf Oracle basiert, gibt es keine Nachteile, wenn Sie das Messaging in Oracle einsetzen.

+2

Es gibt viele Beispiele, wie man ZMQ-Nachrichten persistent machen kann (Malamute-Broker, Titanic-Dienstprotokoll). Das weist den "Freund" kategorisch zurück und stimmt die Diskussion um. – Mjh

+0

Ich konnte keine Beispiele finden, wie persistente ZMQ zu implementieren. Die Tatsache, dass es mit ZMQ * gemacht werden kann, hebt nur hervor, dass ZMQ nicht das richtige Werkzeug für den Job ist, da es nur Transport und * nicht * persistente Warteschlangen umfasst. OP erklärte klar, dass sie AQ für Zuverlässigkeit gewählt haben. –

+0

Ich möchte nicht kommentieren, dass ZMQ das richtige Werkzeug ist. Ich diskutiere den Teil, wo der Freund von OP sagte, dass ZMQ unzuverlässig ist - es ist einfach falsch. Es ist eine Transportschicht, die mehrere Kommunikationsprotokolle verwendet - eines davon ist TCP, das für die Zwecke der zuverlässigen Kommunikation über unzuverlässige Kabel hergestellt wurde. Wie man ZMQ persistent macht - ich werde nicht fragen, wie Sie die Beispiele nicht finden konnten, aber hier ist die [ganze Fülle von Beispielen, mit Erklärungen und Codebeispielen] (http://zguide.zeromq.org/php:chapter4). – Mjh