"Echtzeit"-Darstellung von Daten im Browser
Dominik Echterbruch
news_de at crosslight.de
Sat Sep 8 14:32:41 CEST 2007
Jan-Benedict Glaw schrieb:
> On Sat, 2007-09-08 12:16:02 +0200, Dominik Echterbruch <news_de at crosslight.de> wrote:
>
> NDA? Aufgabe? Hört sich schwer kommerziell an. Können die > 300
> Leser dieser Liste davon ausgehen, daß Du den Gewinn gerecht teilst?
Machen wir es doch einfach so: Ich gewichte am Ende des Projekts, wer
wie viel Arbeit investiert hat und überweise dann einen entsprechenden
Anteil auf das jeweilige Konto. Also streng dich an, sonst sind es nur
ein paar Cent ;)
Aber ich kann mir gut vorstellen, daß die fertige Applikation kostenfrei
für jedermann im Source verfügbar sein wird. Es geht beim kommerziellen
Teil weniger um die Software, als viel mehr um die Dienstleistung, die
dahinter steckt. Die Software ist also eigentlich nur Mittel zum Zweck.
>> ich kann nicht aktiv Daten verschicken, wenn sich etwas ändert, sondern
>> der Client muß regelmäßig nachfragen. Soweit jedenfalls meine Meinung;
>> wenn ich mich da irre, bin ich für einen Hinweis dankbar. Für annähernd
>> Echtzeit wäre also z.B. eine Anfrage pro Sekunde nötig.
>> Das ist aber nicht mit vernünftigem Hardwareaufwand realisierbar, weil
>> bis zu 200.000 Clients bedient werden sollen. Das hieße also 200.000
>> Requests pro Sekunde, die von einigen hundert Apachen bedient werden müßten.
>
> Das hängt alles davon ab, wie viel Zeit Du brauchst, um die Daten
> aufzubereiten. Grundsätzlich kann man das aber mit Hardware, load
> balancern und round robin DNS erschlagen.
Daß das möglich ist, bestreite ich nicht. Aber es sollte halt möglichst
effizient sein. Schließlich sind wir hier nicht bei Microsoft ;)
Deshalb suche ich nach einer Möglichkeit, die Last möglichst niedrig zu
halten. Würde Geld keine Rolle spielen, wäre es einfach.
>> Erschwerend kommt hinzu, daß ich so kompatibel wie irgend möglich sein
>> muß. Also im Idealfall nur einfaches HTML. Klar, das ist nicht machbar,
>> deswegen werde ich auf jeden Fall JavaScript bzw. Ajax beim Kunden
>> durchboxen. Aber Java Applets, Flash oder gar eine eigene Anwendung wird
>> nicht drin sein.
>
> HTML meta reload.
Klar, wenn man sekündlich Ladezeiten von mehreren Sekunden in Kauf
nehmen (ergo: nichts sehen) möchte, ist die Idee gut :)
>> Offene Fragen:
>> - Gibt es eine geschicktere Lösung für das Echtzeitproblem, als ständig
>> nachzufragen?
>
> Multicast. Läuft leider noch nicht flächendeckend.
Wäre aber definitiv eine Möglichkeit. Guter Hinweis.
>> - Könnte es evtl. aufgrund der Requestmassen Probleme mit ISPs geben?
>
> Ist nicht Dein Problem.
Es wird in dem Moment mein Problem, in dem ein Provider dem Benutzer den
Hahn zudreht. Die Frage war ja nciht, ob der ISP Probleme bekommt (das
ist tatsächlich nicht mein Problem), sondern, ob der ISP dem Benutzer
Probleme macht.
>> - Wenn z.B. 500 Clients hinter der gleichen Firewall hängen, bekommt die
>> dann Probleme mit den offenen Sessions oder werden die sofort beendet,
>> wenn die Antwort da ist?
>
> Da die Clients heuer wohl eher HTTP/1.1 mit Session: keep-alive machen
> werden, sind das dann 500 offene Sessions. Je nach Client auch 500 pro
> Sekunde...
>> - Hilft es, UDP statt TCP zu verwenden?
>
> Zeig' mir einen Web-Browser, der HTTP über UDP macht :)
Wer redet denn von Browsern und HTTP? :)
Allerdings gebe ich dir recht, meine Frage war nicht präzise gestellt:
Hilft es, die regelmäßigen Abfragen (initiiert durch z.B. JavaScript)
statt mit TCP mit UDP zu machen? Oder bringt mir (aka. dem Benutzer) das
überhaupt nichts? Abgeleitet habe ich das von DNS-Abfragen, die ja auch
zunächst via UDP laufen, um (vermutlich) Last zu sparen.
> Das macht
> schlichtweg keinen Sinn, es sei denn, Du kickst den Web-Browser und
> baust eine Applikation, die auf Multicast aufsetzt.
Das war in etwa die Idee. Ein (z.B.) Javascript, daß seine Requests per
UDP verschickt. Mehr oder weniger unter Umgehung des Browsers.
Allerdings bisher ohne die Idee des Multicasts.
>> - Wie organisiere ich die Datenablage im RAM? Einfach /proc verwenden?
>> Oder doch lieber etwas selbst geschraubtes?
>
> /proc? Was willst Du denn damit machen?
Sofern ich nicht völlig falsch liege, ist /proc eine Repräsentation von
RAM im Dateisystem. RAM = schnell, Dateisystem= praktisch; daher die
Idee. Wenn es nicht so ist, bzw. nicht realisierbar, immer her mit der
Info. Ich lerne ja gerne dazu.
> ...und wie sich die Daten
> ordentlich organisieren lassen, hängt im wesentlichen von den Daten
> und der Art, wie Du darauf zugreifen willst, ab.
Wie weiter oben beschrieben, geht es zunächst mal nur darum, möglichst
schnell (also ressourcenschonend) an die Information zu kommen, ob sich
etwas geändert hat. D.h. im Zweifelsfall wäre es einfach nur ein
cat /proc/anwendung/client-id
um bei der Idee mit /proc zu bleiben. Dort wäre dann einfach nur eine 0
oder eine 1 hinterlegt. Es geht also wieder nur darum, ob sich sowas mit
/proc erschlagen lässt und ob es elegant ist. Wenn nicht, implementiert
eben der selbst geschriebene kleine Server die Speicherverwaltung. Wie
ich die Daten dann *genau* ablege, interessiert mich im Moment noch
nicht wirklich. Das kommt dann, wenn wir anfangen, Details zu klären.
Danke und Grüße,
Dominik
--
Wo kämen wir denn hin, wenn jeder sagen würde wo kämen wir hin, aber
niemand gehen würde um zu sehen, wohin wir kämen, wenn wir gingen?
(Autor unbekannt)
More information about the Linux
mailing list