Performance Idee, umsetzbar? (Theoretisch)

Hay.

Wichtig zu wissen für den Anfang ist, das das hier nur eine Idee ist. Es geht rein um die Theorie, nicht darum das jemand sich jetzt ran setzen muss, und das umsetzt. Auch wenn ich nix dagegen hätte XD


Es geht um die 2 Vanilla Server.
Ich denke jedem der schonmal auf einem war, ist aufgefallen, das diese manchmal so ihre Performance Problemchen haben.
Auf grund dessen entstand zwischen mir und einem anderen Spieler die „diskusion“ im chat, wie man das verbessern könnte.
Die erste idee war Plugins raus schmeissen. Jedoch bezweifelten wir das auf den Vanilla Server Plugins sind, die man nicht braucht. (Falls doch, wieso?)
Die Zweite Idee war dan doch schon etwas „ausgefeilter“. Nämlich die aufteilung auf 2 Server. Jedoch nicht so wie jetzt mit Vanilla 1 und 2, sondern so das 2 Server vollständig zusammenarbeiten und synchron laufen.


Da stellte sich natürlich die frage, wie zur Hölle soll das möglich sein?
2 Server im Selben Verzeichnis war meine erste Idee. Mit den Spieldaten würde das ja noch gehen, weil man ja nur einmal on ist. Zudem werden diese nach meiner Suche bei jeder Änderung direkt gespeichert. Das Problem sind die Weltendaten. Diese werden nämlich im Arbeitsspeicher gespeichert, was heist, das beide Server unterschiedliche zustände hätten. Und das war’s dann auch schon mit dieser Idee. Den dann überschreiben die Server gegenseitig die Welten und alles geht den Bach runter.


Die Zweite Idee war da doch schon vielversprechender und auch mehr auf MyFTB mit den Multiworlds beschnitten. Die Idee ist, dass beide Server komplett identische Daten haben, jedoch nicht im selben Verzeichnis. Also haben beide Server ihre eigenen Datensätze und beeinflussen sich nicht gegenseitig.

Wen jetzt ein Spieler einer Welt beitreten will, egal ob Spawn, Spielerwelt oder Farmwelt, schauen die beiden Server welcher von beiden weniger ausgelastet ist. Dieser lädt dann die entsprechende Welt und der Spieler wird in die Welt tp’t. Falls nötig wird auch automatisch der Server gewechselt.
Wen jetzt der nächste Spieler in dieselbe Welt will, merkt die Server, „Hey, die Welt haben wir schon geladen, wir schicken den also dort hin“. Also wird die Welt nicht neu geladen, und die beiden Spieler können normal miteinander Spielen.
Sobald die Welt dann entladen wird, wird sie wieder mit beiden Servern Synchronisiert, damit sie bereit für das nächste betreten ist.


Theoretisch könnte man mit solch einem System auch mehr als 2 Server einbinden. So könnte man auch eine Redundanz erreichen, das wen ein Server abschmiert, man trotzdem wieder rauf kann.

Jedoch kann dieses System auch zu Problemen bei einem Crash führen. Man müsste immer überprüfen, ob ein Server abgestürzt ist, falls das Passiert muss man ebenfalls alle Welten, die darauf geladen waren auf die anderen Server synchronisieren, damit nicht allzu viele Daten verloren gehen.
Falls dies nicht gemacht wird, und ein Spieler z.B. 3 Stunden in seiner Welt gebaut hat, könnte es beim nächsten Mal laden passieren, dass die Welt auf einem anderen Server geladen wird, und der fortschritt dementsprechend weg ist.



Sa, jetzt bin ich mal auf eure Meinung gespannt. Besonders die derjenigen die sich etwas mit der Entwicklung von Plugins auskennen.

Wäre solch ein Plugin möglich und auch realistisch?

Wen nein, wieso nicht und was müsste man ändern, dass es eventuell gehen würde?

Ich bin sehr gespannt was hier rauskommt und freue mich auf eure Antworten.

Lg @Hutch79

Die Idee an sich ist gut.
Aber es könnte dazu führen das die Spieler es versuchen auszunutzen.
Durch crashes items erstattet zu bekommen.

Das 2 Problem nicht nur die Vanilla Server haben ihre Probleme auch die Modpack Server.

Eine Priorisierung der Vanilla Server mit ein Solches System könnte gar nicht gut ankommen bei Spielern die ein Modpack spielen.

Nein. Die Welten werden nur dann in den RAM geladen sollten sie auch gebraucht werden (aka wenn ein Spieler die Welt betritt) und sollten auch schnellst möglich wieder gespeichert werden wenn die Welt verlassen wird, um Platz für andere zu machen.
Du hast allerdings recht das durch das potentielle mehrfache Laden von Welten Probleme entstehen würden.

Das ist nicht wirklich nötig wenn man wie du weiter unten beschreibst eine Absicherung einbaust das Welten nur einmal geladen werden können. Dann reicht auch ein Dateisystem auf das beide zugreifen. Andernfals muss das Dateisystem entweder in Echtzeit (verbraucht performance) oder bei jedem Neustart (kann jehe nach Datenmenge dauern) abgeglichen und zusammen gefügt werden.

Wenn ein Server abschmiert sind die noch im RAM geladenen Welten nur noch sehr schwer bis garnicht mehr aufrufbar (jehe nach absturz) und Welten die voher schon ein mal entladen waren sind nach deiner idee ja eh schon syncronisiert (oder man hat nur ein Dateisystem siehe oben).

Ist momentan jehe nach absturz Grund auch der Fall.

Als plugin: NEIN
Als alleinstehende software zur Verwaltung von mehren serven: ja

Solche Software gibt es schon. In wissenschaftlichen Bereichen wird sie angewendet um sogenannte „Cluster“ zu bilden mit welchen sich komplexe und parallelisierbare Aufgaben schneller lösen lassen (bestes Beispiel [email protected]).

Im großen und ganzen würde die Idee warscheinlich funktionieren allerdings wirst du damit rechnen müssen das Ladezeiten beim Welten Wechsel ansteigen werden da mehr anfragen pro tp ausgeführt werden müssen.

Ja die modded server haben auch Performance Probleme. Dort liegt es allerdings meist nicht an der Anzahl an geladenen Welten sondern an einzelnen sehr aufwendigen Welten, weshalb eine solche Lösung bei den Modpacks leider eher weniger helfen würde.

Hallooo meine Freunde,

ich musste schmunzeln als ich diesen Beitrag gesehen habe, denn diesen Vorschlag habe ich bereits vor 4 Jahren privat den Admins gemacht. Ich meine mich zu erinnern, dass dies @rediomand und @Dogboy21 waren und mich kurze Zeit später auslachten.
Kurz: Sei es nicht möglich Modpacks in dieser Art zu betreiben, da zum Beispiel Daten einiger Mods nicht im Welten Ordner gespeichert werden und/oder diese Daten an nicht standardisierten Orten liegen. Abgesehen davon, dass es ja auch Mods gibt die nicht einmal davon ausgehen, dass ein Server auch mehrere Welten besitzen könnte und diese dann erst recht in diesem Fall Probleme verursachen.

Da ich aber damals auch in erster Linie an Vanilla interessiert war, führte ich einige Tests durch und diese ergaben, dass es prinzipiell möglich ist. Bei dem Dogboy mir auch mit folgenden Wort zustimmte: „Bei Vanilla ist das easy.“. Naja.

Die Probleme: Es sollte mit so einer Art von Server Architektur gewährleistet sein, dass alles fast wie davor genauso funktioniert und keine Einschränkungen für die Spieler entstehen. Auf den Vanilla Servern befinden sich viele Plugins nicht von MyFTB, wie zB. Essentials. Wenn du auf dieser Server Architektur „/home haus1“ eingibst muss entweder der Proxy oder der Server rausfinden wo den dein Home ist und dann entscheiden oder eine übergeordnetes System fragen, ob bereits deine Welt auf einem Server geladen wurde und wenn nicht diesen Server dazu bringen dies zu tun und dich als Spieler über den Proxy dann auf den Server zu schicken, welcher dich dann noch an die richtige Position in der Welt teleportieren muss. Das ist noch ein „einfaches“ und lösbares Problem.
Kompliziert wird es dann wirklich mit der Anzahl der Kleinigkeiten, die weiterhin funktionieren sollten. Also Spieler tabben können, Inventare synchronisieren und gewährleisten, dass hier niemals Probleme auftreten, QuickShops, Geld, etc…
Dann noch ein paar Limitierungen im Moment: Die beiden Vanilla Server sind auf zwei unterschiedlichen physischen Servern, zwar nur wenige Zentimeter voneinander entfernt, jedoch durch ein bandbreitenbegrenztes Ethernet Kabel getrennt. Synchronisationen von Weltdaten benötigen also Zeit und lasten das interne Netzwerk aus, welches für wichtigere Funktionen benötigt wird. Man beachte, dass das ehemalige Welten verschieben genau dieses Netzwerk nutzte, auch seine Probleme hatte und kurze Zeit brauchte.

Prinzipiell alles Probleme die sich mit mehr oder wenige Aufwand für Vanilla auf jeden Fall lösen lassen. Damals dazu ein Zitat von Dogboy: „Und wer soll das Ganze umsetzen?“. Und ich muss ihm da zustimmen. Der Aufwand beläuft sich auf circa 2 Vollzeitjobs für 1-2 Monate, wenn man ein System bieten will, was nicht mit nervigen Kinderkrankheiten zu kämpfen hat. Ein wichtiger weiterer Punkt ist, dass das auch jemand bei Updates immer wieder testen muss und eventuelle Probleme behoben werden müssen, also wieder einiges an Aufwand.

Meine Meinung: Bevor man sich das antut, sollte man lieber gleich eine Handvoll Freunde, eine performante Programmiersprache seiner Wahl nehmen und einen eigenen Minecraft Server schreiben, der 10x so viele Spieler auf den gleichen Ressourcen aushält. Wenn man dann noch nicht genug hat: So eine Funktion direkt in seinen Server implementieren.

Gute Nacht
:mammut2:

2 Like

Hmmm, ok, die Sache mit den Homes und auch das Taben der Spieler hab ich bisher nicht bedacht. Jedoch denke ich das mit dem Inventar und auch Quickshops keine Probleme auftreten sollten. Vault ist da eine andere Sache, jedoch unterstützt das plugin glaube ich (nicht sicher) MySQL Datenbanken, damit könnte es eventuell funktionieren.


Zu der Sache das die beiden Vanilla Server auf 2 verschiedenen Servern liegen, dies ist mir bewusst. /serverid ist da doch ein sehr interessanter Befehl, der zwar nicht viel Infos gibt, aber so neugierige Spielerchen wie mich doch sehr fasziniert XD
Ich dachte jetzt eher das beide Server auf dem selben System liegen. Das aufteilen auf mehrere Serversysteme ist dan nochmals etwas anderes.


Die sache mit dem Zeitaufwand zum Entwickeln ist mir klar, deshalb habe ich ganz klar geschrieben das das eine Idee ist und kein „Hey Leute, setzt mal um.“


Ok, als Plugin wäre das auch ein bisschen sehr gross. Da wäre eine Software schon sinnvoller. Jedoch denke ich das man um ein Plugin nicht herum kommt, da (wie mamut53) schon schrieb, Probleme beim TP‘n auftreten wen man /home und co nutzen will. Also müsste ein Plugin diese Befehle „abfangen“ und anders bearbeiten. Ich schätze da wäre ein Plugin besser geeignet als eine Software.

Am ende würde es eigentlich auf ein Cluster hinaus laufen. Zumindest wen man es gross anlegen will.



Vielen dank für die Rückmeldungen.
Ich finde das Thema ziemlich interessant und finde es spannend was andere davon halten. Auch interessant finde ich, auf welche Probleme man stossen kann wen man so etwas umsetzen will.