Programm Redundanz/Ausfallsicherheit

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von MrTrebron.

    Programm Redundanz/Ausfallsicherheit

    Hallo Zusammen,

    ich stehe gerade (Vermutlich wegen falschem Denkens) vor einem kleinen "Problem" bzw. hab ich da eher eine Frage zu dem ganzen Thema.

    Okay erst einmal zur Ausgangssituation:


    Ich habe 2 verschiedene Endgeräte (z.B. Smartphone und Temperaturmesser, im folgenden Typ 1 und Typ 2 genannt).
    Diese Verbinden sich zum einen über einen TCP-Socket und zum anderen über einen Websocket zu meiner Anwendung um die Daten miteinander auszutauschen. Mit einem zwischen Schritt: Typ 1 sendet die Daten, die Anwendung bereitet die Daten in einem Algorithmus auf und sendet sie dann zur Anzeige zu Typ 2.

    Soweit so gut. Funktioniert auch alles wunderbar wenn die Anwendung auf einem Server läuft.

    Jetzt zu dem eigentlichen Problem:
    Wie Stelle ich jetzt am besten Sicher, das wenn Server 1 mit der Anwendung abstürzt oder Sonstige Dinge passieren die den Server unerreichbar machen, das es einen Redundanten Server 2 gibt der die Aufgabe übernimmt? Ist sowas überhaupt möglich? Ich meine mit Datenservern ist sowas z.B. ja über ein Cluster möglich.

    Genauso wäre es Interessant ob es möglich ist im selben System eine Lastverteilung, auf verschieden viele Server + Ausfallsicherheit, anzuwenden.

    Viele Grüße,
    Nevs08
    ich hab von nix 'ne Ahnung, aber zu allem eine Meinung. ;)
    Hier würde mein Senf dazu so aussehen, darauf hinzuweisen, dass das kein kleines Problem ist, sondern eine Riesen-Baustelle.
    (Es sei denn, es gibt vorgefertigte Lösungen dafür, von dene ich noch nix gehört hab - gut möglich).

    Jdfs. sind da offsichtlich überdurchschnittlich hohe Anforderungen an die Stabilität des Systems gestellt, die man glaub nicht mehr mit gängiger Hobby-Programmierer-Praxis abdecken kann.
    Weil zusätzlich zu den hohen Ansprüchen potenziert sich die Komplexität bei sonem Redundanz-System: Die eine Komponente kann Mist bauen, die andere, die Interaktion zwischen beiden (laufende Daten-Synchronisation der Teilsysteme, Auswahl des aktiven Partners) - das baut nochmal anderen Mist - und das eine System flutscht wie eins, beim anderen hakelt iwas anne Installation/Konfiguration - da werden wohl auch Laufzeit-Selbst-Tests beim Hochfahren oder auch Periodisch zu implementieren sein (und die sind auch zu testen).

    Evtl. 50% der Entwicklerzeit sollteste fürs Testing und SelfTesting etc. veranschlagen.
    Und dann ein UnitTest-System aufsetzen, glaub für Integrationstests gibts auch Systeme.

    Und dann muss jede popelige Methode mit allen nur denkbaren Eingaben getestet werden, und immer muss rauskommen, was vom Test erwartet wird - das können auch Exceptions sein.
    Also wird kein Spaziergang, erfordert eine erweiterte Entwicklungsumgebung und Beherrschung derselben - mehr willich hier jetzt garnet gesagt haben - und das mag auch nur halbrichtig sein.
    @Nevs08 Das ist glaub ich kein Thema für Programmierer, das ist ein Thema für Netzwerk-Administratoren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Grundsätzlich lässt sich die Ausfallsicherheit ohne Programmieraufwand lösen. Stichwort: Cluster

    Welches Server Betriebssystem ist denn im Einsatz, welches DBMS?
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Naja das das ganze ohne Programmieraufwand zu machen ist glaube ich kaum. Immerhin müsste der Ausfallserver wissen welche Verbindungen er jetzt übernehmen muss und die Daten des 1. Servers zum Berechnen ebenfalls haben. Dabei muss auch sichergestellt sein das der Fehler nicht auch auf dem 2. Server mit übernommen wird oder eben dort auftritt.

    Selbiges würde auch für die Lastverteilung gelten da man ja wissen muss wo welche Berechnung stattfindet und wo welche Daten hingesendet werden müssen.

    Aber wenn du @MrTrebron da was anderes weißt gerne her mit den Informationen :) Server Betriebssystem wäre letztendlich Windows Server 2016. Datenbank wäre dann ein Microsoft SQL Server 2016. Allerdings könnte man hier ja auch jederzeit was anderes überlegen. Noch ist ja nichts programmiert :D
    Ein LoadBalancing bedarf natürlich Programmierung, da ist aber die Frage ob das Nötig ist.

    Für Windows Cluster mal zum Einstieg Windows Server-Failoverclustering (WSFC) mit SQL Server
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.