Beide Materialien können nicht nur für diejenigen von Interesse sein, die mit Docsvision arbeiten, sondern auch für alle, die an Skalierungstechnologien interessiert sind.
Ein paar Worte darüber, warum wir darüber reden
Die neueste Version der EDMS / ECM-Plattform Docsvision, die wir entwickeln, unterscheidet sich grundlegend von früheren Versionen in ihrer modularen Architektur. Es war wichtig, die Möglichkeit zu bieten, das System zu skalieren (und praktisch unbegrenzt), während die Arbeitsgeschwindigkeit beibehalten wird. Eine der Technologien, die den neuen Funktionen der Plattform zugrunde liegen, ist MS SQL AlwaysOn.
Meine Kollegen haben bereits über die Skalierungstechnologien gesprochen, die den neuen Funktionen der Plattform zugrunde liegen: Es gibt eine Reihe von 4 Mini-Webinaren auf YouTube , eine Reihe von 3 Artikeln auf Medium ( Artikel 1 , Artikel 2 und Artikel 3)nur dem Thema Datenbankskalierung gewidmet). Diese Materialien zeigen deutlicher, welche Probleme wir gelöst haben und was wir bei ihrer Lösung erreicht haben.
Ich werde eine spezielle Funktion von MS SQL AlwaysOn betrachten, die die Zuverlässigkeit und Leistung des Datenbankservers erhöht.
Zahl: 1. Heute sieht die Architektur der Docsvision-Plattform so aus.
Skalieren des Datenbankdienstes. MS SQL AlwaysOn
Zu den Tools zur Verbesserung der Leistung und Skalierung des Datenbankdienstes unserer Docsvision-Plattform gehört die Möglichkeit, Cluster von Datenbankservern zu erstellen. Diese Funktion wird von der MS SQL AlwaysOn-Technologie bereitgestellt.
AlwaysOn-Verfügbarkeitsgruppen in der Docsvision-Datenbank können zwei Aufgaben gleichzeitig ausführen:
- Eine hohe Verfügbarkeit gewährleistet einen unterbrechungsfreien Betrieb des Systems.
- Das Laden beim Lesen aus der Datenbank wird teilweise für Replikate durchgeführt.
Das Funktionsprinzip des Always On-Modus besteht darin, einen Servercluster zu erstellen, aus dem Sie Folgendes auswählen können:
- Master-Server - der Hauptserver, der alle Änderungen im System aufzeichnet (Lesen, Schreiben);
- Der Slave-Server ist ein Replikationsserver, der alle Änderungen im System dupliziert, jedoch schreibgeschützt ist. Jeder Replikationsserver speichert eine Datenbank (Metadaten) zum Speichern von Zwischendaten für den Betrieb von Suchabfragen und Ansichten.
Zahl: 2. Lastausgleich zwischen Servern.
Wie Sie im Diagramm sehen können, verteilen wir die Leselast, da die überwiegende Mehrheit der Benutzervorgänge im System Lesevorgänge (Suchen, Berichte, Öffnen von Dokumenten) sind.
Während des Tests hatten wir zunächst einen Master-Server, der leistungsfähiger als ein Slave-Server war. Bei der Überwindung der Zahl von ungefähr 40.000 Benutzern stellten wir jedoch fest, dass die Slave-Server nicht in der Lage waren, damit umzugehen, und der Master im Gegenteil nicht ausgelastet war. Dies war eine praktische Bestätigung, dass es mehr Leseanforderungen gibt, sie erzeugen mehr Last, also verteilen wir sie zuerst auf die Knoten.
Wenn der Always On-Modus funktioniert, gibt es verschiedene Arten von Benutzeranforderungen:
- . , , , «Read Only», , slave-, master- . «Read Only», master-, .. .
- . «Timestamp», . «Timestamp» . , «Timestamp» : ( Timestamp), - ( Timestamp Timestamp – , ), – . , , «Timestamp» , slave- master- , «Timestamp» .
- , . slave- «Metadata» ( ). slave- , , .
slave-:
- slave-, . Round Robin, .. , , slave- .
- , . Always On slave- . , slave- . , , slave- .
- master- slave :
- GetCardXmlData – , XML ;
- SectionReadRowsData – , ;
- SearchCreateProcessor – ;
- ViewCreateProcessor – ;
- CardGetState – ;
- ReportGetData – ;
- RowGetData – ;
- RowGetHierarchy – ;
- CardGetType – , ;
- SessionGetIdList;
- UserGetInfo.
Mit der MS SQL Always-Technologie können Sie die Serverkapazitäten reibungslos erhöhen und die erhöhte Last verteilen. In Tests haben wir eine Auslastung von mehr als 100.000 gleichzeitigen Benutzern erreicht, was hauptsächlich auf die Skalierung auf Datenbankebene zurückzuführen ist.
Gerne beantworte ich Ihre Fragen.