2016-04-11 2 views
0

Ich muss echte Timer-Ticker-Daten auf Handelspaaren (usd/eur etc.) von APIs verschiedener Standorte sammeln. Die Daten sind normalerweise ein kleines JSON-Objekt mit meist ~ 10 Zahlen. Die naive Strategie besteht darin, alle 5 Sekunden eine Anfrage zu stellen, um die aktuellen Ticker-Daten jeder dieser Seiten zu erhalten. Einige von ihnen bieten jedoch eine Websocket-Option, die es ihnen ermöglicht, mich direkt zu benachrichtigen, wenn eine Änderung eintritt, und ich glaube, dass dies effizienter ist. Das Problem ist, dass einige dieser Websites diese Option nicht anbieten, so dass der gesamte Code einfacher zu organisieren und zu lesen ist, wenn ich dieselbe Methode für alle Sites (d. H. HTTP-Anfragen) verwende. Ich bin mir auch nicht sicher, ob die Daten schwer genug sind, um diese Entscheidung zu rechtfertigen.Was wird voraussichtlich schneller sein, wenn Daten von mehreren apis gesammelt werden: websockets oder http-Anfragen?

Von den Experten, die sich mit ähnlichen Situationen befassten, ist in diesem Fall eine relevante Leistungsverbesserung zu erwarten, wenn Sockets anstatt zeitgesteuerter http-Anfragen verwendet werden, wenn sie verfügbar ist?

Antwort

1

Es hängt davon ab:

  • WebSockets nur dann Sinn machen, wenn man sie die meiste Zeit offen halten. Wenn Sie stattdessen jedes Mal, wenn Sie neue Daten haben möchten, eine neue WebSocket-Verbindung öffnen, ist der Overhead größer als bei einer einfachen HTTP-Anforderung. Es ist nicht so sehr die Bandbreite (aber das auch), aber Sie brauchen mehr Rundreisen, um Ihre Daten zu bekommen, was alles langsamer macht.
  • WebSockets benötigen mehr Ressourcen, da Sie für jede geöffnete WebSocket-Verbindung eine TCP-Verbindung offen halten müssen. Wenn es nur eine kleine Anzahl von Seiten gibt, die Sie fragen müssen, ist es egal, ob es eine Menge gibt, ist es wichtig. Es kann zwar von Vorteil (weniger Latenz) sein, normale HTTP-Verbindungen aufrecht zu erhalten, aber Sie können sie auch schließen, wenn Sie weniger Ressourcen haben.
  • Wenn die meiste Zeit die gleichen Daten erhalten, dann ist WebSockets möglicherweise effizienter, weil Sie nur die neuen Daten senden, wenn sie sich tatsächlich ändern.
  • Wenn Sie so schnell wie möglich über neue Daten informiert werden möchten, erzielen WebSockets eine bessere Leistung. Wenn Sie nur eine Genauigkeit von 5 Sekunden brauchen, ist das egal.