PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie und mit welcher Technologie realisiert man einen Broadcast für Strings?


Gast
2011-12-19, 18:08:57
Hallo!

Ich frage mich, wie man ein client/Server Konzept umsetzt, bei welchem der Server JSON-Objekte "live" an seine Clients schickt.

Details:



Server erzeugt im Mittel 60 mal pro Minute ein JSON-Objekt. Mal sind es während 15 Sekunden 0 Objekte, mal während 2 Sekunden 5 Objekte. Im Mittel eben 60/s.

solch ein Objekt ist ca. 400 Bytes gross

es handelt sich um eine Webanwendung, der Client läuft also im Webbrowser. Hier wäre im wesentlichen Javascript verfügbar, bei Bedarf aber auch WebSockets (!)

Aus letztem Punkt folgt, dass es mir egal ist ob Polling oder ein Push-Mechanismus zum Einsatz kommt. Letzterer wäre sicher besser bezüglich Performance (siehe unten)

"live" bedeutet hier, dass schon um die 10 Sekunden Verzögerung eintreten darf (also Zwischen der Generierung des Objekts auf dem Server und dem Anzeigen auf den Clients), die chronologische Einhaltung der Reihenfolge ist aber Pflicht

Der kritische Punkt: es sollen mit einem Server so viele Clients wie nur möglich bedient werden. Keine genaue Angabe, einfach nur so viel wie möglich. Servertechnologie ist egal, aber ich wäre sehr froh, wenn es kein C/++ wäre, auch wenn man so vielleicht am meisten herausholen könnte

Falls das irgendetwas bringen würde, könnte man JSON auch durch irgendetwas binäres tauschen - wobei das JSON in meinem Fall schon sehr entschlackt ist, möglichst wenig Daten enthält, von Steuerzeichen befreit wurde etc.

Kommunikation ist im wesentlichen unidirektional, der Client sendet nur ab und zu Steuerbefehle




Was ich suche ist a) generelle Meinungen zur Umsetzung und b) Technologien dafür. Könnte man da mit Node.js und Websockets einen guten Durchsatz erreichen oder das Vorhaben überhaupt realisieren?

Danke

Frucht-Tiger
2011-12-19, 18:41:10
Einfach und auch performant wäre das z.B. mit dem Play Framework möglich. Das ist ein schlankes Java Web-Framework "mit Vorzügen". Schlank heißt in dem Fall, dass es nicht wie die meisten anderen Java Frameworks Servlets benutzt, sondern eine eigene Lösung einsetzt, die um einiges simpler ist. Vorzüge wären u.a. das es eine komplette Anwendungsplattform ist, ähnlich wie z.B. Rails, man kommt also mit ein paar Kommandozeilen-Befehlen zu einer lauffähigen Anwendung. Wenn du Java kannst, solltest du es dir unbedingt mal anschauen.

Vorteil:
Sehr schnell, standard Java, gute JSON Unterstützung, Unterstützung für WebSockets

Nachteil:
Braucht Java-Umgebung

Trap
2011-12-19, 19:39:29
Push löst man mit folgendem Ansatz: http://en.wikipedia.org/wiki/Comet_%28programming%29

Sind die Daten clientabhängig oder schickst du an alle das gleiche? So viel wie möglich wäre bei eine Gigabit-Anbindung 300.000 Clients, da wäre für jeden extra Daten erzeugen eher schwierig, das Versenden allein geht vielleicht grad noch. 10.000 Clients wären allerdings mit keiner Umgebung ein Problem, das würde auch Node.js hinbekommen.

Yavion
2011-12-28, 11:15:11
Das hier sieht doch auf den ersten Blick z.B. recht brauchbar aus: http://www.restms.org/