# Server synchronisation



## thunderbird (19. Apr 2014)

Hallo zusammen,

ich habe eine kleine Client - Server Anwendung geschrieben, die ich jetzt erweitern möchte. 
Dazu suche ich ein Framework was diese Aufgabe erfüllt.

Es sollen sich mehrere Server unterhalten können (eine Art Cluster). Dabei ist wichtig, dass ein Server beim Starten nicht jeden anderen kennen muss sondern nur einen kleine Anzahl. Trotzdem sollen nach dem Verbindungsaufbau alle Server untereinander Daten austauschen können. Bricht irgendeiner dieser Server weg, so sollen sich die verbleibenden trotzdem weiter unterhalten können.
Ich habe schon sehr viel gesucht nur leider bin ich noch nicht zu einem passenden System gekommen. Die meisten Frameworks brauchen entweder eine Liste aller anderen Server oder sind nicht über das Internet nutzbar (UDP multicast)

Mittlerweile bin ich fast soweit das ich das ganze selber schreiben würde. Aber vielleicht hat ja jemand noch ein gute Idee.

Gruß Sven


----------



## JavaMeister (20. Apr 2014)

Das heißt, ich habe zwei disjunkte Systeme A und B.

So wie du schreibst auch in total unterschiedlichen Netzwerken. Und ohne, dass sich diese kennen, sollen sie sich kennen lernen.

Und wieso kann ich nicht einfach den Namen des einen dem anderen mitteilen?


----------



## thunderbird (20. Apr 2014)

Ja ganz genau so ;-) 

Am besten erkläre ich das mal an einem Beispiel.
Es gibt 3 Systeme. Server A, Server B und Server C
Server A kennt die Adresse von Server B 
Server C kennt die Adresse von Server A 
Server B kennt keine Adressen.
Nachdem Server C sich an Server A angemeldet hat soll Server B ihn ebenfalls kennen und auch Nachrichten mit ihm austauschen können.

Um mal den Hintergrund zu erklären:
Die Anwendung ist eine Wetterstationssoftware. Der Server nimmt die Messwerte vom Client an und speichert sie ab. Außerdem gibt es eine Schnittstelle die Meswerte zusammenfasst und per JSON ausgeben kann, um sie z.B. auf einer Webseite anzeigen zu können. Da ich aber jetzt nicht nur meine eigenen Daten anzeigen möchte sondern auch die von anderen Usern meiner Software die ebenfalls einen eigenen Server haben brauche ich das oben genannte System.


----------



## Dekker (20. Apr 2014)

> Am besten erkläre ich das mal an einem Beispiel.
> Es gibt 3 Systeme. Server A, Server B und Server C
> Server A kennt die Adresse von Server B
> Server C kennt die Adresse von Server A
> ...


Das macht so erstal wenig Sinn, B kennt weder A noch B, aber wenn C sich bei A anmeldet kennt er beide. Magie? B muss nich zwingend Server C kennen um mit ihm Datenauszutauschen. Man kann anfragen an Nachbarn senden, die wiederum an ihre Nachbarn delegiert werden können. Das ganze ist nicht ganz unkomplex und es gibt viele Ansätze die alle ihre Vor- und Nachteile haben.

Deine gesamte Idee ist ein klassischer Fall von P2P Systemen. Ich kann aus dem stehgreif kein P2P Framework empfehlen aber es gibt definitiv einige auf dem Markt. Analysiere zuvor deine Requirements im Bezug auf Menge der Anfragen, kritikalität der Daten etc und entscheide dich dann für ein geeignetes Framework.


----------

