Laden...

Lösungsweg : Datei von System nur beziehen, wenn Änderungen vorhanden sind

Erstellt von Midnight Run vor 13 Jahren Letzter Beitrag vor 12 Jahren 4.410 Views
Midnight Run Themenstarter:in
80 Beiträge seit 2008
vor 13 Jahren
Lösungsweg : Datei von System nur beziehen, wenn Änderungen vorhanden sind

Hallo,
ich arbeite zur Zeit an einer Server Software zu Verteilung von Dateien an seine Clients.

Das heißt alle Clients die verbunden sind bekommen, die bestimmten Dateien zu geschickt.

Als zweite Aufgabe muss der Server bemerken ob sich eine bestimmte Datei, die auf den Clients liegt sich verändert hat und muss diese dann beziehen.

Genau an diesem Punkt bin ich gerade und überlege wie ich dies am besten lösen könnte.

Sagen wir ich habe 50 Clients. Und ich muss alle durcharbeiten und gucken ob die eine bestimmte Datei sich verändert hat. Wie löse ich dies am besten.

Meine erste Idee war es in einigen Zeitabständen die Datei zu überprüfen pro Client ob dessen Größe, Datum etc. sich gerändert hat. Aber damit würde ich ja die Leitung auch belasten.

Auf dieser, die Leitung, werden ja auch die Daten vom Server an die Clients verschickt und ich möchte nicht meine Bandbreite unnötigt belasten.

Meine zweite Idee war es das die Clients selber anmerken das sie da was geändert haben. So zusagen ein Event schmeißen.

Da weiß ich nun leider nicht ob das geht. Da ja Server und Clients zwei verschiedene Systeme sind.

Diese Funktion muss nicht in Echtzeit sein, aber Zeitnah. Also Verzögerungen sind schon okay.

Aber bei meiner Lösung wollte ich die Skalierbarkeit auch beachten. Man stelle sich 500 Clients vor.

Ich bin für jede Anregung zu haben.

Danke !

821 Beiträge seit 2009
vor 13 Jahren

Wo ist denn das Problem dabei, dass sich die Clients beim Server melden, wenn sie eine von Ihm bezogene Datei geändert haben?

Die Clients initialisieren ja eh die Verbindung zum Server, dann können sie ihm doch auch einfach ab und an mitteilen, wenn sie eine Datei modifiziert haben.

Gruß
Christoph

Midnight Run Themenstarter:in
80 Beiträge seit 2008
vor 13 Jahren

Hi Christoph,
danke für deine Antwort. Aber wie das leider immer so ist, sind da einige Dinge die nicht funktionieren, da historisch gewachsene Dinge im Wege stehen.

Ich versuch dies einmal genauer runter zu brechen :

Ich habe einen Transfer Server. Dieser verschickt an alle Clients bestimmte Dateien. Der Server wird will auch bestimmte geänderte Dateien auf den Clients regieren können und diese Dateien dann beziehen.

Das Hauptproblem ist das es keine Client Server Architektur im eigentlichen Sinne ist.

Nicht die Clients melden sich beim Server sondern anders rum. Man muss jede IP von den gegebenen Clients im Server eintragen, damit dieser die mit den Daten versorgt. Dies wird über FTP gemacht.

Somit kann sich der Client doch gar nicht beim Server melden, oder verstehe ich da was falsch ?

Eine Idee von mir, wäre es die Datei eben nach dem Änderungsdatum jeweils einen anderen Namen zu geben. So könnte der Transfer Server sehen ob die Datei, geändert worden ist oder nicht.

Für weitere Anregungen bin ich gern zu haben 😄

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Midnight Run,

Das Hauptproblem ist das es keine Client Server Architektur im eigentlichen Sinne ist.

dann stell das Problem doch ab. Schaffe eine Möglichkeit, mit dem die Clients dem Server direkt mitteilen können, wenn sie eine Datei geändert haben.

Der ganze Rest kann ja weiter wie gehabt mit FTP laufen.

herbivore

12 Beiträge seit 2006
vor 13 Jahren

Auch mal frag'
*Wie sehr kannst du auf die aktuelle Architektur Einfluß nehmen? *Welche Transfer-Möglichkeiten stehen dir zur Verfügung? *Gibt es neben den File-Transfer noch andere Kanäle?

(ja|nein|vielleicht)*

Midnight Run Themenstarter:in
80 Beiträge seit 2008
vor 13 Jahren

Hallo,
vorab danke für eure zahlreichen Antworten.

Wie sehr kannst du auf die aktuelle Architektur Einfluß nehmen?

Nur Erweiterungen sind erlaubt.

Welche Transfer-Möglichkeiten stehen dir zur Verfügung?

Nur FTP vom Server ausgehend.

Gibt es neben den File-Transfer noch andere Kanäle?

Nein.

Danke für jede Hilfe.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Midnight Run,

hm, dass sind dann allerdings sehr schlechte Voraussetzungen. Was willst du in der Situation von uns hören? Da bleiben ja nicht mehr viele Möglichkeiten.

herbivore

12 Beiträge seit 2006
vor 13 Jahren

Aber es bleiben 😁
*Wie frei bist du beim Client? *Wie frei bist du beim Server?

Sind diese von dir selbst modifizierbar/erstellbar?

(ja|nein|vielleicht)*

Midnight Run Themenstarter:in
80 Beiträge seit 2008
vor 13 Jahren

Wie frei bist du beim Client?

Wie frei bist du beim Server?

Sind diese von dir selbst modifizierbar/erstellbar?

Der Server sowie die Client Software besteht bereits und ist seit Jahren im Betrieb. Nun soll eben dieses Feature hinzugefügt werden.

Ich kann an beiden Komponenten nur Erweiterungen vornehmen keine komplette Architektur Umstellung.

Was willst du in der Situation von uns hören?

Ich suche eben für diesen schlechten Fall, die beste Lösung. Würde ich jedes mal in gewissen Zeitabständen die Datei einfach von den Clients beziehen, würde ich Daten die ich bereits haben nochmals abholen und dies ist eben redundant.

Wenn ich dauerhaft die Leitung dadurch blocke bzw. die Bandbreite belege, finde ich das auch nicht allzu Produktiv.

Ich wollte einfach nur mal in der Runde diskutieren ob jemand mir Anregungen geben kann für eine bessere Lösung oder ob dies einfach der einzige Weg ist in diesem System.

Dank an alle

69 Beiträge seit 2010
vor 13 Jahren

Also ich bin jetzt kein profi,
und wir haben mal in einem Projekt aus Gründen das wir es nicht besser wussten bei einem ähnlichen Fall etwas ausprobiert.

Es wird dir hier nicht viel helfen denk ich, aber einen kleinen Performance gewinn gegenüber dem öffnen einer Datei und dem auslesen von Datum und Uhrzeit bringen.

Da du vom Client ja nicht auf dem Server zugreifen kannst und nur ftp zur verfügung hast ist es nach meiner logik unumgänglich das sich der Server beim Client meldet.

ich würde eine Datei schreiben und vom Server aus versuchen diese Datei zu erreichen, existiert die datei nicht, passiert auch nichts, existiert die Datei heisst das das der Client veränderungen vorgenommen hat und schickt veränderten Daten an den Server.

Bauerntechnik, ich weis ^^. Wenn der Client aber zum globalen Internet zugang hat könnte man es ja von anderer Seite versuchen dem Server zu erreichen, aber ich denke das wird in deinem Fall auch nicht möglich sein.

:::

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Midnight Run,

die Inhalte der Dateien nur zu übertragen, um einen Vergleich durchzuführen, ob sie sich geändert haben, wäre wirklich kontraproduktiv. Der Client kann aber einfach eine (bestimmte) Datei anlegen, in die er schreibt, welche Dateien er wann geändert hat und diesen Datei kann der Server laden und dann entscheiden, welche Inhalte er (neu) übertragen muss.

Davon abgesehen sehe ich nicht, was gegen meinen Vorschlag von oben spricht. Das einrichten eines Kanals, über den die Clients dem Server Änderungen direkt mitteilen können, würde ja nun nicht bedeutet, dass man irgendwas an der (restlichen) Architektur ändern muss.

herbivore

1.815 Beiträge seit 2005
vor 13 Jahren

Hallo!

Sind Erweiterungen nur am Server möglich?

Folgende Überlegung:
Der Server lädt eine Datei auf den FTP-Server, wo seine IP und Port drin steht.
Wenn ein Client diese Datei findet, liesst er Sie aus. Ändert sich nun am Client etwas, meldet er sich mit diesen Daten per TCP/IP beim Server und sendet die Daten.

EDIT: Da wollte herbivore wahrscheinlich ebenfalls drauf hinaus.

Nobody is perfect. I'm sad, i'm not nobody 🙁

Midnight Run Themenstarter:in
80 Beiträge seit 2008
vor 13 Jahren

Hey Leute,
danke für eure Hilfe.

Ich denke mal ich muss da einfach tiefer gehen um euch das Problem nahe zu legen.

  1. Im System befinden sich ein Server und mehrere Clients.
  2. Es wird manuell am Server die IP Adressen der Clients eingetragen.
  3. Der Server versucht, dauerhaft, die Clients zu erreichen und mit Daten zu beliefern( siehe Abbildung 1)

Abbildung 1 :
siehe Anhang

  1. Die Clients bearbeiten diese Dateien, aber nur eine ist von Wichtigkeit.
  2. Nun ist eben die Problemstellung, die Datei zu beziehen. Wann oder dauerhaft. Qualitätsmerkmale für diesen Prozess ist eben so Bandbreiten sparend wie möglich zu sein und auch wirklich nur auf Änderungen zu reagieren.
  3. Das Problem mit dem Rückkanal vom Client zum Server ist, das die Clients sich bewegen. Das heißt sie können eine kurze Zeit lang nicht im System sein und erscheinen dann wieder.
    Wenn nun gerade bei der Benachrichtigung vom Client zu Server keine Verbindung besteht ist dies natürlich schlecht. (Abbildung 2)

Abbildung 2 :
siehe Anhang

(rot markiert, Client ausserhalb des Systems)

Ich hoffe dies macht mein Problem verständlicher 😃

Danke nochmals

Midnight Run Themenstarter:in
80 Beiträge seit 2008
vor 13 Jahren

Sry, hier Abbildung 2 :

N
9 Beiträge seit 2011
vor 12 Jahren

Sry, aber ich verstehe das Problem nicht ganz 🤔

SUMMMM MACHT DIE NSU!

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Midnight Run,

was ist denn überhaupt noch offen? Du hast doch schon Antworten, die dein Problem lösen, bekommen.

herbivore

T
415 Beiträge seit 2007
vor 12 Jahren

Der Client kann doch jederzeit versuchen seine Änderung über den Rückkanal zu senden. Befindet er sich dann eben zu dem Zeitpunkt nicht im System, bricht er das Senden ab und versucht es dann regelmäßig wieder, bis er wieder im System ist.

Wahrscheinlich gibt es sogar Möglichkeiten im Client festzustellen, wann er das System verlässt und wann er wieder eintritt. Dies kann gespeichert werden und z.B. beim Wiedereintritt ein Event gefeuert werden, mit dem das Senden der Änderung - wenn es eine gab - angestoßen wird.