Ist eine geografisch verteilte Anwendung mit SQL Server-Replikation eine gute Idee?

7

Wir denken derzeit über eine Zielarchitektur für eine geografisch verteilte Anwendung nach.

Diese Anwendung verfolgt und plant die Bewegungen aller Materialeinheiten über verschiedene Produktionsstandorte hinweg.

Es wird zwei logische Einheiten geben:

  • Der erste ist für die betriebliche / lokale Verwaltung eines bestimmten Geschäfts verantwortlich - es gibt so viele Instanzen dieser Entität wie es Geschäfte gibt
  • Der zweite ist für das globale Management verantwortlich (z. B. Übertragung von Einheiten zwischen Filialen) und kommuniziert daher mit allen operativen / lokalen Einheiten

Hier ist das logische Diagramm der Anwendung:

Logische Architektur

Die Implementierung dieser Anwendung kann nicht direkt aus dem vorherigen Diagramm abgeleitet werden, da die folgenden Einschränkungen berücksichtigt werden müssen:

  • Die Filialen befinden sich in verschiedenen Bereichen (normalerweise einige Filialen pro Bereich). Wenn der Bereich vorübergehend vom globalen Netzwerk isoliert ist, sollte das System für eine begrenzte Zeit funktionsfähig sein.
  • Die operative Einheit erfordert, dass die globale Einheit arbeitet

Daher habe ich über eine neue Architektur nachgedacht, bei der identische Instanzen der globalen Entität (dieselben ausführbaren Dateien) mit synchronisierten Datenbanken für jeden Bereich erstellt werden:

Geben Sie hier die Bildbeschreibung ein

Ich habe mich gefragt, ob bereits jemand die SQL Server-Replikation verwendet hat, um das gleiche Ziel zu erreichen.

Ist es der richtige Weg, um fortzufahren? Alle Empfehlungen / Warnungen sind willkommen!

Vielen Dank, Sébastien.

Seb_Lz
quelle
2
Müssen die Daten tatsächlich in die einzelnen Filialen repliziert werden? Ist dies für eine Anbieteranwendung oder ist dies ein neues Projekt? Haben Sie so etwas wie ein SaaS-Modell in Betracht gezogen, bei dem sich die Web- / Anwendungsserver geografisch in verschiedenen Regionen befinden und eine Peer-to-Peer-replizierte Kopie der Datenbank lokal für jede Webfarm vorhanden ist?
Jon Seigel
Hallo Jon und danke für die Antwort. Dies ist ein neues Projekt: Es ist eine völlig neue Version einer bereits vorhandenen Anwendung. Ich bin mir nicht sicher, ob das SaaS-Modell unseren Anforderungen entspricht, da globale Server genau identisch sind (dieselben Daten). Die Peer-to-Peer-Replikation der Datenbanken scheint jedoch für unseren Fall wirklich angemessen zu sein.
Seb_Lz
Okay. Lassen Sie mich jetzt erwähnen, dass Sie aufgrund spezifischer Anforderungen für diese Anwendung möglicherweise keine gute Antwort auf Ihre Frage erhalten. Was ich sagen werde ist, dass im Allgemeinen die Verwaltung des Systems umso einfacher ist, je weniger Kopien der Daten Sie haben und je weniger Datenbanken mit unterschiedlichen Daten vorhanden sind. Deshalb frage ich, ob es wirklich notwendig ist, die Art der Verteilung durchzuführen, nach der Sie fragen. Ich weiß nicht, wie viele Geschäfte Sie jetzt haben, aber eine solche Skalierung des Systems kann in Zukunft zu Grenzen oder Herausforderungen führen, anstatt die Dinge zu zentralisieren, zumindest ein wenig, wie ich vorgeschlagen habe.
Jon Seigel
Ok, ich verstehe das perfekt und die Antworten, die ich bekommen habe, haben mir bereits in meinen Gedanken geholfen. Ich denke, es gibt höchstwahrscheinlich einige verschiedene Lösungen für mein Problem. Da ich mir über die Best Practices in diesem Bereich nicht sicher bin, wollte ich sicherstellen, dass ich nicht in eine völlig falsche Richtung gehe.
Seb_Lz

Antworten:

3

Die Replikation von einer Box auf Bereichsserver und die Replikation dieser Bereichsserver auf die Speicherserver in diesem Bereich ist einfach. Das Einrichten der Replikation für den Feed von zwei verschiedenen Bereichsservern zu jedem Speicherserver ist nicht wirklich möglich. Sie könnten es wahrscheinlich hacken, um zu funktionieren, aber es wäre nicht so einfach.

Sie sollten die Bereichsserver besser mit hoher Verfügbarkeit einrichten, damit die Wahrscheinlichkeit, dass der Bereichsserver offline geht, minimal ist.

mrdenny
quelle
Hallo mrdenny und danke für die antwort. Die Replikation sollte nur zwischen globalen Servern erfolgen (nicht zwischen globalen und lokalen Servern). Jeder globale Server ändert seine Datenbank aufgrund von Interaktionen mit lokalen Speichern. Diese Änderungen sollten auf alle anderen globalen Server repliziert werden. In dieser Architektur würde es ungefähr 5-6 globale Server geben.
Seb_Lz
Es ist machbar, aber es ist ein großes Design. Dies ist eine dieser Konfigurationen, die sehr sorgfältig entworfen und mit einem großen Proof of Concept sehr sorgfältig zusammengestellt werden müssen, um sicherzustellen, dass alles korrekt funktioniert.
Mrdenny
0

Es hängt davon ab, wie viele Bereiche Sie haben. Wenn Sie viele davon haben, wird die Verwaltung der Datenbankreplikation zwischen diesen ein Albtraum.

Ich würde mein Bestes geben, um alle Daten an einem zentralen Ort mit jeder möglichen Hochverfügbarkeitsoption zu haben. Wenn dies nicht möglich ist, versuchen Sie es möglicherweise mit nur zwei oder drei globalen Servern und nicht mit einem pro Bereich.

Gunter Wesley
quelle