2016-04-20 6 views

Antwort

0

Orion NGSI API ist REST Basis in HTTP als Applikationsprotokoll (die Sequenz ist in TCP/IP als Transport/Netzwerk-Protokoll-basiert). Orion kann auch im HTTPS-Modus arbeiten, unter Verwendung der -httpsCLI parameter (wie lange siwth -cert und -key).

In der Vergangenheit unterstützten wir NGSI-API basierend auf CoAP (die in Folge in UDP basiert). Dieser Code wird jedoch nicht mehr beibehalten (obwohl er immer noch verfügbar ist here).

Schließlich entwickeln wir einen Websocket-Transport für NGSIv2 (die neue Version der NGSI-API, in der wir gerade arbeiten), aber es ist noch in einem sehr frühen und experimentellen Status.

+0

Ich verstehe sehr gut, dass HTTP REST NGSI verwendet wird. Allerdings - Problem mit HTTP-Verbindungen ist, dass sie unidirektional sind und Daten können nicht vom Server auf die Clients geschoben werden. Dies ist ein bekanntes Problem, das Leute gestört hat, die seit Jahren Browser-Apps entwickeln. Wie lösen wir dieses Problem? –

+0

Websocket (im letzten Absatz erwähnt) wäre eine Lösung für dieses Problem. Sie können dieses Problem bei Githbu über den Fortschritt dieser (noch) experimentellen Funktion überwachen: https://github.com/telefonicaid/fiware-orion/issues/1181 – fgalan

+0

Ja, für den Browser. Aber nicht für Inter-System PUB/SUB. Und außerdem - NGSI ** explizit ** gibt nur HTTP REST-Endpunkt für PUB/SUB an - willst du die Spezifikation ändern, um WS zu verwenden? Ich habe oben ausführlichere Fragen gestellt, bitte erläutern Sie die Fragen, die ich dort gestellt habe. –

0

@fgalan,

genau zu sein NGSI PUB/SUB über HTTP-Protokoll spezifiziert, was ungewöhnlich und wahrscheinlich nicht effizient ist.

Um der Lage sein, die Nachricht zurück zu HTTP-Teilnehmer von der Server-Seite zu schieben, müssen Sie einige Tricks verwenden:

  • Lange Polling
  • Interval-Polling
  • Eventsource
  • HTTP multipart/mixed
  • HTTP segmentierte Übertragungs

Diese verhindern das Schließen der HTTP-Verbindung, so dass der Server die Daten an den Abonnenten senden kann, sobald sie angekommen sind (beachten Sie, dass dies nicht das erneute Öffnen der HTTP-Verbindung für jeden PUB/SUB verhindert, den Sie von der Clientseite durchführen möchten auch resorce-konsumierend). Sie können mehr darüber hier lesen: http://mrjoes.github.io/2013/06/21/python-realtime.html

Das ist genau das, was ich Frage - welche dieser Methoden verwenden Sie in Orion, und können Sie mich bitte auf den Code verweisen.

Wegen dieser Probleme mit HTTP ist es wirklich ungewöhnlich, HTTP für PUB/SUB zu verwenden. Es gibt keine erfolgreiche Lösung, die es tut (nach meinem Wissen), und alle anderen verwenden ein anderes spezifisches Protokoll für RT Messaging - RabbitMQ (AQMP), Redis, NATS, Kafka, MQTT - Sie benötigen ein Protokoll, das für PUB/SUB geeignet ist wenn Sie wollen, dass es effizient ist.

Apropos - haben Sie jemals Ihre PUB/SUB-Warteschlange mit anderen Lösungen verglichen? Ich würde Orion sehr gerne in einer dieser Analysen sehen: http://bravenewgeek.com/dissecting-message-queues/, Seite an Seite mit der Schlachtfeld-erprobten SW für diesen Zweck. Ich würde gerne die Latenzen und den Durchsatz sehen ...

Ich kann sehen, warum WS benötigt werden, aber ich sehe nicht, wie Sie sie mit NGSI-Spezifikation ausrichten werden - Ihre Spezifikation erfordert heute PUB/SUB über HTTP (über REST-Aufruf). Werden Sie die Spezifikation ändern?

Mit freundlichen Grüßen,

Drasko

+1

Um dem "SOF-Stil" zu folgen, sollte diese Erklärung in den obigen Frage-Post verschoben werden. Dann kann ich meine Antwort basierend auf dem neuen Fragetext vervollständigen. – fgalan

+0

Ich bin nicht sicher, was ich dafür tun muss ... Diese SOF ist wirklich nicht die beste Wahl für Entwicklungsforum (es ist mehr wie Benutzerliste) - wir brauchen Entwickler Mailing-Liste (Google Groups tun) und Gitter-Kanal auf Dein Github (oder Freenode IRC). –

+0

Denken Sie daran, wir haben auch http://ask.fiware.org für Themen, die nicht so eng mit der Entwicklung verbunden sind. – fgalan

1

Nun, Orion HTTP-Benachrichtigungen wurden ursprünglich entwickelt für Server-zu-Server-Kommunikation. Tatsächlich erlauben sie Orion, andere Komponenten in der "Datenkette" von FIWARE mit Cygnus oder anderen Mechanismen zu verbinden.

Für Server-zu-Client-Benachrichtigungen besteht eine Alternative darin, ein Websocket-Gateway zwischen Orion und einem Webclient zu verwenden. Das wurde schon oft umgesetzt.

Was wir jetzt tun, ist das Hinzufügen "nativer" Websocket-Kanäle, abgesehen von HTTP, für Orion-Benachrichtigungen. Diese Websocket-Kanäle können in der Server-zu-Server-Kommunikation oder in der Server-Browser-Kommunikation verwendet werden. Das bedeutet nicht, dass wir NGSI ändern werden. Das bedeutet, dass wir einen weiteren Benachrichtigungskanal hinzufügen und die API so ändern, dass Entwickler einen Web-Socket-Kanal verwenden können.

+0

Ich argumentiere, dass Server-Server-PUB/SUB-Kommunikation über HTTP ist ineffizient und macht nicht viel Sinn. Ich frage auch - welche Methode von denen, die ich aufgezählt hat, verwendet Orion für Server Push über HTTP –

+0

In Bezug auf WS - es geht nicht über http API Endpunkt - Sie benötigen ws: // . Ich dachte, dass NGSI ** ausdrücklich ** REST verlangt? –

Verwandte Themen