PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JAVA C/S Kommunikation mit >1000 Clients gleichzeitig



thomastxs
24-09-2004, 00:07
Hallo!

Kann mir jemand sagen, ob es Möglich ist, folgendes mit JAVA zu realisieren, und wenn ja, wie?

Zunächst soll ein Server mit einer JAVA Applikation laufen.
Dann soll es eine Client Applikation (in JAVA) geben, die über das Internet mit der Serverapplikation Verbindung aufnimmt und kleinere Mengen Daten austauscht. Dabei soll es jedoch möglich sein, dass gleichzeitig über 1000 Clients mit der Serverapplikation in Verbindung stehen. Im Maximalfall etwa 3000 Clients gleichzeitig.
Die Datenmengen, die dabei jeweils zu übertragen sind, sind relativ gering.

Über kompetente Antworten würde ich mich sehr freuen!

viele Grüße aus Berlin,
thomastxs

Deever
24-09-2004, 00:35
Das Problem dürfte bereits die begrenzte Anzahl gleichzeitig offener Filedeskriptoren sein. Zwar werden diese gemäss ANSI-C als int-Werte gespeichert, in der Praxis dürfte aber bei weit weniger offenen Deskriptoren Schluß sein. Dies ist dann auch noch systemspezifisch. Linux erlaubt IIRC standardmässig 512 gleichzeitig geöffnete Dateien pro Prozeß.
Für dich bedeutet das wohl, daß du ums Kernel anpassen und kompilieren nicht herumkommst. Wobei ich bei dieser Zahl an offenen Verbindung sowieso an Clustering/Load Balancing oder eine andere Aufgabenverteilung denken würde. Du könntest z.B. einen Master-Server mit 100 Verbindungen zu Slave-Servern machen, die dann wiederum je 100 Clients haben können (oder allenfalls weitere Slaves?). Das wäre dann auch noch unabhängig von Einschränkungen eines Systems. Hundert gleichzeitige Verbindungen kriegt wohl jedes System hin.

Hoffe, dir geholfen zu haben.

Gruß,
/dev

Lin728
24-09-2004, 06:28
Ja das ist möglich (jedenfalls aus Java-sicht):

1000-3000 Clients sind sogar noch mit dem Thread-per-Connection möglich, ist aber nicht empfohlen, weil recht viel mehr geht dann nimma.
Dafür ist die Implementierung einfach.


Ich würde das mit dem NIO-Ding machen und mit mehreren Threads (so ca. 100) und die einzelnen Sockets durchsteppen.
Hier ist die Implementierung aber komplizierter, weil man viele Spezialfälle beachten muss.
Mehr kann ich dir auch nicht zu nio sagen, hab damit noch nicht wirklich viel gearbeitet, google+sun sind aber sicher dein Freund wenns um Tutorials geht.