Hallo Zusammen,
erstmal danke für eure antworten....
zu euren Fragen / Randbedingungen
- Schreib/Lesevorgänge: Wie wird die Datei geschrieben? Sequentiell, vollständig, ..
Vollständig
- Dateigröße: Ab einer gewissen Größe entstehen deutliche Laufzeiten für den Schreibvorgang, die Berücksichtigt werden müssen.
Dateigrösse max. 1 MB
- Daraus folgend sind ggF. beim Schreiben die jeweils andere Datei zu sperren o.ä.
nicht notwendig, den das eigentliche Beschreiben der Binär-Datei und der zu implmentierende Sync laufen parallel (Datei wird geschrieben und im Hintergrund - Thread?! - läuft der Sync respektive die Überwachung über Sync notwendig)
- Sind es im Normalfall immer nur 2 PCs?
ja,
- Läuft das Programm ständig?
ja
- Wie robust muss das Protokoll sein (Ausfall eines oder beider Rechner)?
wenn ein PC ausfällt soll der zweite einspringen
- Kannst du die Programmme ändern oder musst du ein zusätzliches Tool schreiben, dass die Synchronisierung übernimmt?
kann das programm ändern
Möglichkeit 1:
Es wird ein Locking benötigt, der zuverlässig das Schreiben von nur einer Stelle zulässt.
Möglichkeit 2:
Erzeugen von einem Transaktionslog, was dann auf jede Datei angwendet wird.
wie würdest du diesen Transaktionslog konzipieren/implmentieren?
Implementierungsgrund ist eine Daten-Redundanz:
2 PCs laufen ständig (in einem Netzwerk) und haben jeweils einen und den selben Client am laufen, die jeweiligen Clients beziehen von ein und der selben Quelle Daten und schreiben diese dann in eine *.dat Datei (2 x 1:1 Beziehungen - Client vs. OPC-Server).
Falls mal ein Client aus ist (z.B. Absturz) und er wieder angestellt wird, muss geprüft werden ob die Daten der *.dat (auf den PC welcher gerade abgestürzt war) "noch aktuell sind" > an dieser Stelle müsste dann der Sync laufen (Copy *.dat von anderne PC). Eine andere Möglichkeit warum bedarf von einem Sync besteht ist wenn z.B. der Client die Daten vom OPC-Server nicht richtig lesen konnte ...
Auf beiden PC soll einfach eine 100% Datengleichheit bestehen, zu jeder Zeit.
Eine Datenbank ist auszuschliessen! (Kundenwusch)