[Santian Engine] Huawei Santian Engine-Kernarchitektur, Quellcodearchitektur, Multithread-Dienste, Datenknotenverwaltung und Metadatenverwaltung zwischen mehreren Knoten

Quellcodestruktur der Cantian-Engine

Inhalt der Spalte :

  • Santian Engine-Kernel-Architektur
    In dieser Kolumne sprechen wir über die Santian Engine-Kernel-Architektur und wie man Multi-Lesen und Multi-Schreiben von Multi-Maschinen-Datenbankknoten erreicht, den Unterschied zu herkömmlichen Aktiv- und Standby-Knoten, MPP, Analyse technischer Schwierigkeiten, Daten-Metadaten-Synchronisierung, Multi-Master. Unterstützung für Fehlerbehebung bei Knoten.

  • In dieser Kolumne werden hauptsächlich die Entwicklung der handgeschriebenen Datenbank toadb
    von Grund auf, die Entwicklungsschritte, die Prinzipien des Entwicklungsprozesses, die aufgetretenen Probleme usw. vorgestellt, damit alle mithalten und sich gemeinsam weiterentwickeln können, sodass jeder, der sie benötigt, dies tun kann Werden Sie Teilnehmer.
    Diese Spalte wird regelmäßig aktualisiert, und der entsprechende Code wird ebenfalls regelmäßig aktualisiert. Der Code in jeder Phase wird mit Tags versehen, um das Lernen in jeder Phase zu erleichtern.

Open- Source-Beiträge :

Persönliche Homepage : Meine Homepage
Management-Community : Open-Source-Datenbank
Motto: Wenn der Himmel stark ist, strebt ein Gentleman nach Selbstverbesserung; wenn das Gelände gut ist, trägt ein Gentleman große Tugenden.

Vorwort

Die Entwicklung inländischer Datenbanken ist in vollem Gange und jedes Jahr gibt es auf verschiedenen Konferenzen gute Nachrichten. Zusätzlich zu den verschiedenen technologischen Entwicklungen der Datenbank selbst hat Huawei in diesem Jahr die Shentian Engine veröffentlicht, die eine Basisform der Datenbank darstellt. Das heißt, alle Datenbanken. Die Datenbank kann auf der Grundlage der Santian Engine erstellt werden, um ein Datenbanksystem mit einer verteilten Multi-Master-Architektur zu bilden, weshalb sie als Engine bezeichnet wird.

In dieser Kolumne geht es ausführlich um die interne Architektur der Santian Engine und um die Anpassung an die Santian Engine.

Überblick

Der Kerncode der Cantian-Engine ist im Wesentlichen Open Source, was Enthusiasten dazu veranlasst, ihn auszuprobieren. Heute werde ich Ihnen die Quellcodestruktur der Cantian-Engine mitteilen.

Quellcode-Adresse

Adresse des Ferienhauses

Quellcode-Verzeichnisstruktur

Der Quellcode befindet sich hauptsächlich im Verzeichnis pkg/src:

[senllang@hatch src]$ ll
total 44
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 cluster
-rw-r--r--.  1 senllang develops  792 Dec  9 14:03 CMakeLists.txt
drwxr-xr-x.  4 senllang develops   94 Dec  9 14:03 cmd
drwxr-xr-x.  4 senllang develops   56 Dec  9 14:03 cms
drwxr-xr-x.  3 senllang develops 8192 Dec  9 14:03 common
drwxr-xr-x.  3 senllang develops   39 Dec  9 14:03 driver
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 gstbox
drwxr-xr-x. 18 senllang develops 4096 Dec  9 14:03 kernel
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 mec
drwxr-xr-x.  2 senllang develops 4096 Dec  9 14:03 protocol
drwxr-xr-x.  2 senllang develops   66 Dec  9 14:03 rc
drwxr-xr-x.  3 senllang develops 4096 Dec  9 14:03 server
drwxr-xr-x.  4 senllang develops 4096 Dec  9 14:03 tse
drwxr-xr-x.  2 senllang develops   60 Dec  9 14:03 upgrade_check
drwxr-xr-x.  4 senllang develops   52 Dec  9 14:03 utils
drwxr-xr-x.  2 senllang develops   72 Dec  9 14:03 version

Wie oben gezeigt, sehen Sie das nach dem Modul benannte Verzeichnis.

Einführung in die Hauptmodule

Es gibt mehrere Hauptmodule:

cantianLib

Er kann als separater Knoten existieren, beispielsweise als Datenknoten oder Koordinationsknoten. Im Allgemeinen wird er als Datenknoten verwendet und dient der Speicherung von Verwaltungsdaten. Er hat nur die Funktion der Verwaltung und Koordination. Der CMS-Knoten ist für die Implementierung von Daten und Geräten verantwortlich.

cantianlib ist die Brücke zwischen der Datenbank-Engine und dem CMS-Knoten. Sie verarbeitet Datenanforderungen in verschiedenen SQL-Ausführungsszenarien und zeichnet Transaktionsprotokolle auf.

Quellcodeverzeichnis

Der cantianLib-Code befindet sich in
./pkg/src/server/

Systemstruktur

Fügen Sie hier eine Bildbeschreibung ein

Es ist außerdem mit einer Multithread-Architektur implementiert. Sein Front-End ist ein DB-Agent, der auf Netzwerkanfragen von ihm lauscht, wie etwa die Anmeldung bei der Datenbank, die Ausführung von DDL, DML usw., und diese in Datenanfragen umwandelt und sendet sie dann an das CMS. Es umfasst im Wesentlichen mehrere Dienstleistungen:

  • Der Kernel-Dienst wird hauptsächlich für die Daten- und Sperranforderungsverarbeitung verwendet und ist für die Pufferverwaltung, Katalogmetadatenverwaltung usw. verantwortlich.
  • Der DB-Hintergrunddienst verarbeitet hauptsächlich Anfragen vom DB-Agenten und wandelt SQL-Szenarien in Datenanfragen um. Durch die Bindung von Sitzungen an Thread-Dienste kann er den gleichzeitigen Zugriff auf Daten verarbeiten.

CMS-Modul

CMS ist ein Kerndienst, der hauptsächlich verteilte Ressourcen, verteilte Sperren und Speichergeräte plant und verwaltet. Das Ganze ist eine Multithread-Architektur, die über das Netzwerk mit dem Front-End interagiert, auf Ressourcenanforderungen reagiert und diese vom Speicherdateisystem abruft.

Quellcodeverzeichnis

Der Quellcode des CMS-Moduls befindet sich in
./pkg/src/cms/cms

Systemstruktur

Die Codestruktur ist in der folgenden Abbildung dargestellt
Fügen Sie hier eine Bildbeschreibung ein

Das Modul besteht aus drei Hauptphasen:

  • Initialisierung; einschließlich Laden und Initialisieren der Konfiguration, Initialisierung jedes Dienstes und Start von Dienst-Threads, Geräten und Netzwerken;
  • Die laufende Phase; verarbeitet hauptsächlich Ereignisse von Nachrichten und Prozessen und reagiert auf Nachrichten; hier sind die Hauptanforderungen die Zuweisung verschiedener Ressourcen und Sperren;
  • Beenden; wenn CMS beendet wird, Daten bereinigen und herunterladen;

Zusammenfassen

Im Allgemeinen ist die Santian-Engine in drei Hauptteile unterteilt.

  • Der erste ist der Agent, der mit Datenbankberechnungen kombiniert wird. Hier ist kein Open Source zu sehen. Er gilt hauptsächlich für den Datenknoten zur Freigabe der Daten, die während der Datenbankberechnung benötigt werden.
  • Die zweite ist cantianLib, der Datenknoten. Dieser Teil verwaltet datenbankbezogene Daten wie Datencache, Datenbankmetadaten usw., synchronisiert zwischen mehreren Knoten und verfügt auch über einige Dienste, die von mehreren Knoten koordiniert werden müssen, z als Backup, Checkpoint, Transaktionseinreichung usw.;
  • Der dritte Teil ist CMS, der physische Speicherteil. Es verteilt Datenzeilen auf Speichergeräte, verwaltet die Datenverteilung und kann bei Datenanforderung Daten von physischen Geräten lesen und schreiben.

Als vierter Teil gilt natürlich auch das entsprechende physische Speichergerät, das NFS oder DBstor entsprechen kann. Für die Optimierung dieses Teils gibt es keine Open Source.

Ende

Vielen Dank für Ihre Unterstützung. Vergessen Sie nicht, beim Stöbern Ihre wertvollen Kommentare zu hinterlassen. Wenn Sie der Meinung sind, dass es eine Ermutigung wert ist, liken Sie es bitte und speichern Sie es. Ich werde härter arbeiten!

E-Mail des Autors: [email protected]
Wenn es Fehler oder Auslassungen gibt, weisen Sie bitte darauf hin und lernen Sie voneinander.

Supongo que te gusta

Origin blog.csdn.net/senllang/article/details/135075873
Recomendado
Clasificación