Die meisten modernen APIs sind mit JSON mit dem Request/Response-Messaging über HTTP erstellt. Da zeromq ein Transport über TCP ist, könnten JSON-basierte APIs über Zeromq aufgebaut werden? Wenn ja, was wären die Vorteile? Die Verwendung besteht in i) Entwicklern, die Apps für Clients/Geräte schreiben, die mit einem oder mehreren Webservern kommunizieren, und ii) Webservern, die mit Webservern kommunizieren.JSON-basierte API über Zeromq
Antwort
Ja, json-basierte API könnte auf ZeroMQ anstelle von HTTP aufgebaut werden. Es würde REQ/REP-Sockets benötigen. Es scheint jedoch keine gute Wahl zu sein.
Der Hauptvorteil des JSON + HTTP-Ansatzes ist die Portabilität. JSON + HTTP wird standardmäßig von nahezu jeder Programmierumgebung unterstützt, ZeroMQ wird nicht so weit unterstützt (keine Unterstützung im Browser JS zum Beispiel). Außerdem ist ZeroMQ im Setup nicht so schmerzlos, daher werden Service-Kunden mit dieser Wahl wahrscheinlich nicht zufrieden sein.
Auf der anderen Seite ist der Hauptvorteil von ZeroMQ Leistung: Es ist großartig, wenn Sie viele Megabyte (oder wahrscheinlich Gigabytes) Daten pro Sekunde drücken müssen. JSON Encoding/Decoding ist sehr schnell, aber die Größe ist auch für diese Art von Aufgaben wichtig. Jede binäre Serialisierung Framework scheint eine bessere Wahl zu sein, gibt es viele: protobuf, Sparsamkeit, BSON, kryo, avro usw.
So würde ich weiterhin JSON + HTTP für APIs von Web-Services verwenden: moderne HTTP Server-Tools bieten hervorragende Leistung und Skalierbarkeit. Und ZeroMQ ist eine gute Wahl für die Kommunikation in einer kontrollierten Umgebung aufgrund seiner Nebenläufigkeitsfunktionen und klar definierten Nutzungsmuster.
Das Portabilitätsproblem war wirklich die Antwort, nach der ich suchte. Wird bei unseren JSON + http Apis bleiben. Gute Antwort. Vielen Dank. –
@dbv Gern geschehen. Ich würde schätzen "+1" :) – Wildfire
ein Hybrid-Ansatz ist in einigen Fällen nützlich - HTTP + JSON als eine öffentliche API, und verwenden Sie das * exakt gleiche * JSON-Messaging-System über Zeromq, um die Aufgaben auf Ihre Arbeitsknoten zu verteilen. – minrk