Welche Serverform?

Ich schreibe ein richtiges "Server" Programm, welches UDP benutzt, in Java, komplett eigenständig (außer MySQL).

Übrigends: Das forum Rockt!!! Selten so ein gutes Forum gesehen...DANKE! :D
Magst den Charakter der Anwendung näher beschreiben? Die Verwendung von UDP spricht für eine Art Echtzeitanwendung, Game oder sowas? Dann könnte man sich eher einen Film darüber machen, was Du nun wirklich an Umgebung benötigst.

Generell würde ich allerdings auch empfehlen, erstmal eine VM aufzusetzen (sowieso als Test- und Entwicklungsumgebung notwendig) und sich damit erstmal in die Grundlagen einzuarbeiten - dyndns und Co. sollten für den Anfang reichen, um das auch von zu Hause aus erreichbar zu machen.
 
Last edited by a moderator:
Zur Entwicklung benutz ich klar eine VM, nur will ich vorher klären was ich danach mach. (Im Moment befinde ich mich in der Planung).

Ich schreibe diese Programm wahrscheinlich mit einem freund zusammen. Es ist hälfte lernen/hälfte nutzen. Ich habe schon 2 (nie eingesetzte) Server mit TCP geschrieben, deshalb nehm ich diesmal udp(außerdem reizt es mich :D, ein fehlertolerantes Protokoll entwickeln etc.). Es wird Informationen, welches es in einer Datenbank speichert synchronisieren mit einem iphone app (später werd ich auch ein schon von mir geschriebenes Desktop-programm, welches die Daten im Moment lokal speichert, synchronisieren).

Viel Performance wird es nicht brauchen und Speicher für die Datenbank wird es auch wenig brauchen.


Das UDP Protokoll kann sich noch ändern!
 
Last edited by a moderator:
Na dann mal gaaaanz ruhig mit den jungen Pferden. Es macht doch nun wirklich keinen Sinn, für nicht vorhandenen Code nen Server zu mieten. Das kannst du doch zur Entwicklungszeit alles aus ner VM raus laufen lassen (ja, auch den Server!). Wenn das ganze spruchreifer ist, kannst du dir ne Test-Umgebung an die DSL-Leitung hängen und erst wenn du dann noch dabei bist, denkst du weiter. Du macht gerade den 17. Schritt vor dem 1.
 
Wie gesagt, ich bin noch in der Planung...ich habe aber keinen Bock am ende viel Zeit in das projekt gesteckt zu haben mit dem Ergebnis, das die Möglichkeit es zu hosten für mich zeitlich nicht realisierbar ist :D, ich hoffe du verstehst das.

Ich hab übrigends habe eine bekannte software gefunden die in ihrer Funktionsweise ähnlich ist. Der (wahrscheinlich von euch verhasste, weil er bestimmt für viele unsichere vServer gesorgt hat) Minecraft server….da kann ich wieder fleißig googeln. Wenn einer von euch Ideen hat, dann wär ich ihm dankbar diese zu posten!
 
Es kommt mir so vor als würdest du die ganzen Vorschläge ignorieren.

Für den Anfang dürfte es problemlos reichen wenn du deine VM über deinen DSL Anschluss zur Verfügung stellst. Danach kannst du dir weitere Gedanken über einen (v)Server machen. Du sagst selbst, dass du das Geld nicht zur Verfügung hast, also lass es lieber gleich.
 
Ich wüsste nicht was an der Sicherheit des Minecraft Servers oder Bukkit bedenklich ist?

Ich administriere den Minecraft Server eines Freundes (zirka 50 Spieler) und konnte bisher keine Sicherheitsproblemchen auffinden ;)
 
War nicht so gemeint mit dem Minecraft server. Ich mein, das ich oft im Internet lese das Leuten dafür ein vServer empfohlen wird, was ja ihn vielen schlecht gemanageten Servern resultiert. Also nicht das Programm an sich :D, sorry falsch mich einer falsch verstanden hat.

Der eine Teil des Vorschlages ist ja angenommen :D. Ich werde das app in einer VM bei mir entwickeln.

Ich mache aber vor dem Projekt Gedanken über die tatsächliche Umsetzung, vom planen des programms (Wie setzte ich es um? etc) bis halt auch zu der Frage wie ich später "realisiere".
 
Ich hab vtl. was gefunden: Windows Azure, da müsste ich mich doch um relativ wenig kümmern, oder?

"Von Windows Azure werden für das Betriebssystem, unter dem Ihre Anwendungen ausgeführt werden, automatisch Betriebssystempatches installiert. Sie müssen die Patchinstallation also nicht manuell koordinieren oder ein Skript dafür erstellen."
+alle Ports außer das für SSh, FTP + mein programm Sperren.

(Wenn ich auf einem MySQL Server per Localhost zugreife müsste es doch ohne freigegebenen port gehen, oder?)
 
Last edited by a moderator:
Zu Windows-Azure: Du solltest mal genau nachrechnen, das dürfte für Deine Zwecke teurer werden, als du auf den ersten Blick denkst.

Die Anbindung zu mySQL erfolgt in den meisten Fällen ausschließlich über interne/lokale Sockets. Die Bereitstellung des Dienstes zusätzlich über einen extern erreichbaren Port stellt eher den Ausnahmefall dar.

Wie einige ander Poster hier, habe auch ich generell den Eindruck, dass Du Dich viel zu viel mit der Entwicklungs- und zukünftigen Produktionsumgebung beschäftigst, als mit der eigentlichen Anwendung. Insbesondere bei plattformunabhängigen Java, sollten diese Betrachtungen recht weit hinten stehen.

Was soll den eigentlich synchronisiert werden? Dateien, Adress-/Kontaktdaten, Mails, Bilder, Musik? Ich gehe mal allgemein davon aus, dass das als Servlet z.B. unter Tomcat oder einem anderen Application Server realisierbar ist. Ich sehe wenig Effekt darin, mit "Gewalt" neue Protokolle erfinden zu wollen, statt vorhandenes effektiv einzusetzen.
 
Ich kann im Moment nicht anfangen zu programmieren, da mein Laptop aus der Reparatur noch nicht zurückgekommen ist. Deshalb "verrenne ich mich hier". :D

Es sollen text-daten synchronisiert werden. Und zwar nicht zwischen Geräten einer person, wie es z.B. dropbox macht, sondern zwischen geräte mehreren Personen. Hier muss der Server daten in eine Feste Struktur anhand von bestimmen Merkmalen richtig einordnen (Einer der schwierigsten Herausforderungen) und nur die wichtigsten korrekten daten dem nutzer auf anfrage weitergeben.

Ich hab gedacht tomcat kann nur sowas wie z.B. Webseiten generieren?
 
Last edited by a moderator:
... Ich hab gedacht tomcat kann nur sowas wie z.B. Webseiten generieren?
Tomcat ist nur der Rahmen/Umgebung in dessen Kontext Java-Anwendungsinstanzen ausgeführt werden, ist also quasi für die Kommunikation zwischen Clients und den Webanwendungen zuständig. Inhalte werden nur von den Java-Anwendungen generiert.

Mal ein kleines Beispiel, wie man eine Java-Webanwendung mit weiteren Anwendungen verbinden kann: http://platform.xwiki.org/xwiki/bin/view/Features/XMLRPC
 
Aber es ist event-driven, d.h. Push notifications wären unmöglich, oder?
Oder generell das das Programm Daten verteilt ohne jedes mal eine Anfrage zu bekommen?
 
Last edited by a moderator:
Datenverteilung ohne Anfragen ist nur moeglich wenn der Client eine Verbindung (halb)offen hat. (Ansonsten ist es aufgrund von NAT schlicht unmoeglich)

Statt einer vollwertigen bidirektionalen Verbindung kannst du auch Comet long-polling verwenden und so zB auf das HTTP/1.1 Protokoll mit keep-alive basieren um mit moeglichst wenig Overhead und Standardfunktionen dein Vorhaben zu realisieren.
Auf Serverseite kannst du dann allerdings nicht wirklich auf Tomcat setzen sondern deine Java-Applikation muss selber handhaben.
Viele Corporate-Firewalls timen aber deine Verbindungen nach 30 Sekunden aus.

UDP ist uebrigens fuer ein solches Protokoll komplett ungeeignet da viele corportate Firewalls es blockieren. Es sei denn du verwendest einen Trick und benutzt DNS um zu pollen ob ein Update notwendig ist;
<INKREMENTELLE ZAHL>.<BENUTZERNAME>.deinedomain.de
Jeder Teil darf 63 Zeichen lang sein, und als Antwort kannst du ein oder mehrere TXT-Records mit Informationen zu Dateiaktualisierungen geben.
Schnell, klein, und durch die Technik bereits fehlerresisitent.
 
Ich habe tomcat am anfang eher kategorisch ausgeschlossen, da ich nichts mit Webseiten mach. Trotzdem wirkt es nicht sonderlich elegant und vor allem nicht ressourcen-schondend. :(

Auch zeitlich geregelte "Prozesse", wie das Auswerten /Aufräumen der Datenbank um 24:00 gehen wohl eher schlecht als recht. :D

Außerdem habe ich jetzt schon extra ein Buch über das Programmieren von Sockets gelesen.....das will ich jetzt auch mal anwenden^^.
 
OffTopic

Ich wüsste nicht was an der Sicherheit des Minecraft Servers oder Bukkit bedenklich ist?

Ich administriere den Minecraft Server eines Freundes (zirka 50 Spieler) und konnte bisher keine Sicherheitsproblemchen auffinden ;)

Ich hab bisher auch nichts negatives bezüglich der Sicherheit gehört. Solange nur du selbst Zugriff auf die Kisten hast, ist alles in Ordnung.

Interessant wird es erst, wenn man die Server vermietet. Dann muss man schon abwägen was der Kunde mit Plugins so alles machen kann. Bei CS:S kann man z.B. mithilfe eines Plugins ganz normal Shell-Befehle ausführen. Ist besonders witzig, wenn man mal eben einfach einen zweiten Server startet. Die meisten Anbieter haben nichtmals ein Monitoring ihrer GS. Spielereien wie maxplayers ändern, kann man sogar ohne Plugins durchführen.
 
Back
Top