Warum AMQP / ZeroMQ / RabbitMQ?
im Gegensatz zum schreiben Ihrer eigenen Bibliothek.
Arbeiten wir an einem Projekt hier wird ein self-Division-server-Pools, wenn ein Abschnitt wächst zu schwer, die manager, teilen Sie es und legen Sie es auf einem anderen Rechner als einen separaten Prozess. Es würde auch warnen alle verbundenen clients dies wirkt sich auf die Verbindung zu dem neuen server.
Ich bin gespannt, mit ZeroMQ für inter-server-und inter-Prozess-Kommunikation. Mein partner würde lieber roll seine eigene. Ich freue mich auf die community, diese Frage zu beantworten.
Ich bin ein ziemlich Anfänger Programmierer selbst und habe gelernt, über messaging-Warteschlangen. Da habe ich gegoogelt und gelesen, es scheint, jeder ist mit messaging-Warteschlangen für alle möglichen Dinge, aber warum? Was macht Sie besser als das schreiben Ihrer eigenen Bibliothek? Warum sind Sie so Häufig und warum sind es so viele?
InformationsquelleAutor der Frage Evil Spork | 2009-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim ausrollen der ersten version der app wohl nichts: Ihre Anforderungen sind klar definiert und Sie entwickeln ein messaging system, die Ihren Bedürfnissen passen: kleine feature-Liste, kleine source-code usw.
Sind diese tools sehr nützlich nach das erste release, wenn Sie tatsächlich zu erweitern, Ihre Anwendung und fügen Sie weitere Funktionen hinzu.
Lassen Sie mich Ihnen ein paar Anwendungsfälle:
am Anfang musste man 3 Rechner innerhalb des lan, ohne spürbare Verzögerungen, alles wird zu jeder Maschine. Ihre Kunden/Chef/pointy-haired-Teufel-Chef zeigt und Ihnen sagen, dass Sie installieren Sie die app auf der WAN-Seite, die Sie nicht verwalten, und Sie dann beginnen zu Verbindungsfehler, schlechte Latenz etc. Sie benötigen zum speichern von Nachricht und einen erneuten Sendeversuch später auf Sie: gehen Sie zurück auf den code und stecken Sie diese Dinge (und genießen)
Nachrichten, die gesendet werden müssen, um zu Antworten, aber nicht alle von Ihnen: Sie senden einige Parameter und erwarten eine Tabelle als Ergebnis, anstatt nur das senden und erkennt, gehen Sie zurück zu code und stecken Sie diese Dinge (und zu genießen.)
Und viele andere Anwendungsfälle, die ich vergessen habe ...
Können Sie es selbst implementieren, aber nicht verbringen viel Zeit zu tun: Sie wird wahrscheinlich ersetzen Sie es später eh.
InformationsquelleAutor der Antwort ppi
Sehr viel Fragen, wie: warum eine Datenbank verwenden, wenn Sie können schreiben Sie Ihre eigenen?
Die Antwort ist, dass mit einem Werkzeug, das gewesen herum für eine Weile und ist gut verständlich in vielen verschiedenen Anwendungsfällen, zahlt sich mehr und mehr über die Zeit und Ihre Anforderungen entwickeln. Dies gilt insbesondere, wenn mehr als ein Entwickler an einem Projekt beteiligt. Wollen Sie sich support-Mitarbeiter für ein queueing-system, wenn Sie ändern, um ein neues Projekt? Mit einem Werkzeug, das verhindert, dass aus geschieht. Wird es jemand anderes problem.
Case in point: die Persistenz. Ein tool zu schreiben, speichern Sie eine Nachricht auf der Festplatte ist einfach. Schreiben Sie eine persistor, Skalen und führt auch und stabil, in vielen verschiedenen Anwendungsfällen, und ist überschaubar, und Billig zu unterstützen, ist schwer. Wenn Sie möchten, um zu sehen, jemand darüber beschweren, wie schwer es ist, dann schau mal hier: http://www.lshift.net/blog/2009/12/07/rabbitmq-at-the-skills-matter-functional-programming-exchange
Sowieso, ich hoffe, das hilft. Mit allen Mitteln schreiben Sie Ihre eigenen Tools. Viele, viele Menschen haben dies bereits getan. Was auch immer Ihr problem löst, gut ist.
InformationsquelleAutor der Antwort alexis
Ich überlege mir, mit ZeroMQ mich - daher stolperte ich über diese Frage.
Nehmen wir für den moment an, dass Sie die Fähigkeit haben, implementieren Sie eine message-queuing-system, dass erfüllt alle Ihre Anforderungen. Warum würden Sie beschließen, ZeroMQ (oder andere Drittanbieter-Bibliothek) über die roll-your-own-Ansatz? Einfach - Kosten.
Nehmen wir an, für einen moment, dass ZeroMQ bereits erfüllt alle Ihre Anforderungen. Alle, die getan werden muss, ist die Integration in Ihr bauen, Lesen Sie einige doco und dann starten Sie es. Das hat weit weniger Aufwand als Ihre eigenen Rollen. Plus, die Bürde der Wartung wurde verschoben, um ein anderes Unternehmen. Da ZeroMQ ist kostenlos, es ist wie Sie haben gerade gewachsen, Ihre Entwicklungs-team zu gehören (Teil) der ZeroMQ-team.
Wenn Sie lief ein Software-Development-Geschäft, dann denke ich, dass Sie würde das Gleichgewicht der Kosten/Risiko der Verwendung von Drittanbieter-Bibliotheken gegen Ihre eigenen Rollen, und in diesem Fall, mit ZeroMQ würde, gewinnen Hände nach unten.
Vielleicht haben Sie (oder eher Ihre partner) darunter leiden, wie so viele Entwickler, die aus dem "Nicht Hier Erfunden" - Syndrom? Wenn dem so ist, passen Sie Ihre Haltung überdenken und die Verwendung von ZeroMQ. Ich persönlich bevorzuge die Vorteile von Stolz Anderswo Haltung. Ich hoffe, ich kann mit stolz zu finden, ZeroMQ... die Zeit wird es zeigen.
EDIT: ich stieß auf dieses video aus der ZeroMQ-Entwickler, dass die Gespräche über warum Sie verwenden sollten, ZeroMQ.
InformationsquelleAutor der Antwort Daniel Paull
Message-queuing-Systeme sind transaktional, das ist konzeptionell einfach zu bedienen wie ein client, aber schwer zu bekommen Recht, wie eine Implementierung, besonders wenn man bedenkt, persistenten Warteschlangen. Sie denken vielleicht, dass Sie Weg erhalten können, mit dem schreiben eine schnelle messaging-Bibliothek, aber ohne Transaktionen und Persistenz, würden Sie nicht die vollen Vorteile eines messaging-Systems.
Persistenz bedeutet in diesem Zusammenhang, dass die messaging-middleware hält, nicht behandelte Nachrichten in den permanenten Speicher (auf der Festplatte) im Falle der server down geht; nach einem Neustart, werden die Nachrichten verarbeitet werden können und nicht erneut notwendig ist (die der Absender nicht einmal wissen, gab es ein problem). Transaktional bedeutet, dass Sie Lesen Nachrichten, die aus verschiedenen Warteschlangen und schreiben Sie Nachrichten an verschiedene Warteschlangen in einer transaktionalen Weise, was bedeutet, dass entweder alle lese-und Schreibvorgänge erfolgreich, oder (wenn eine oder mehrere ausfallen) keiner gelingt. Das ist nicht wirklich viel anders aus als das transactionality bekannt aus der Verknüpfung mit Datenbanken und hat die gleichen Vorteile (es vereinfacht die Fehlerbehandlung; ohne Transaktionen, Sie hätten zu gewährleisten, dass jedes einzelne lese - /Schreibzugriff erfolgreich ist, und wenn eine oder mehrere ausfallen, müssen Sie ein Rollback die änderungen, die erfolgreich waren).
InformationsquelleAutor der Antwort pmf
Vor dem schreiben Ihrer eigenen Bibliothek, Lesen Sie die 0MQ Anleitung hier: http://zguide.zeromq.org/page:all
Chancen sind, dass Sie entweder entscheiden, zu installieren RabbitMQ, oder sonst werden Sie machen Sie Ihre Bibliothek auf der Oberseite der ZeroMQ, da Sie bereits getan haben, alle die hard Teile.
InformationsquelleAutor der Antwort Michael Dillon
Wenn Sie wenig Zeit haben, probieren Sie es aus und roll-out Ihre eigenen implemntation! Die Erkenntnisse dieser übung werden Sie überzeugen über die Weisheit der Nutzung einer bereits getesteten library.
InformationsquelleAutor der Antwort bubblecyber