Anwendung einer effizienten Protokollbibliothek unter Linux
Aufgrund der inhärenten Eigenschaften des Protokolls selbst werden die Datensätze der Reihe nach von links nach rechts eingefügt, was bedeutet, dass die Datensätze auf der linken Seite „älter“ sind als die Datensätze auf der rechten Seite. Mit anderen Worten, wir müssen uns nicht darauf verlassen Die Systemuhr ist für die Verteilung sehr wichtig.
Es ist unmöglich zu wissen, wann das Protokoll erschienen ist. Möglicherweise ist es vom Konzept her zu einfach. Im Datenbankbereich werden Protokolle eher zum Synchronisieren von Daten und Indizes verwendet, z. B. das Redo-Protokoll in MySQL. Das Redo-Protokoll ist eine festplattenbasierte Datenstruktur, die verwendet wird, um die Richtigkeit und Vollständigkeit der Daten sicherzustellen System werden auch als Write-Ahead-Protokolle bezeichnet. Während der Ausführung einer Sache wird beispielsweise zuerst das Redo-Protokoll geschrieben und dann werden die tatsächlichen Änderungen angewendet. Auf diese Weise kann es sein, dass das System wiederhergestellt wird Basierend auf dem Redo-Protokoll neu schreiben, um die Daten wiederherzustellen (während des Initialisierungsprozesses besteht zu diesem Zeitpunkt keine Clientverbindung). Das Protokoll kann auch zur Synchronisierung zwischen dem Datenbank-Master und dem Slave verwendet werden, da im Wesentlichen alle Betriebsdatensätze der Datenbank in das Protokoll geschrieben wurden. Wir müssen nur das Protokoll mit dem Slave synchronisieren und es auf dem Slave wiedergeben, um den Master zu erreichen -Slave-Synchronisierung Hier können wir auch alle Änderungen in der Datenbank implementieren, indem wir das Redo-Protokoll abonnieren und so personalisierte Geschäftslogik implementieren, z. B. Auditing, Cache-Synchronisierung usw.
Bei verteilten Systemdiensten geht es im Wesentlichen um Zustandsänderungen, die als Zustandsmaschinen verstanden werden können (die nicht von der externen Umgebung wie Systemuhren, externen Schnittstellen usw. abhängig sind) und letztendlich konsistente Ausgaben erzeugen ein konsistenter Zustand, und das Protokoll ist aufgrund seiner inhärenten Reihenfolge nicht auf die Systemuhr angewiesen, was zur Lösung des Problems der Änderungsreihenfolge verwendet werden kann.
Wir verwenden diese Funktion, um viele Probleme zu lösen, die in verteilten Systemen auftreten. Beispielsweise empfängt der Hauptbroker im Standby-Knoten in RocketMQ die Anfrage des Clients und synchronisiert sie dann in Echtzeit mit dem Slave. Wenn der Master auflegt, kann der Slave damit fortfahren Verarbeiten Sie die Anfrage, z. B. das Ablehnen der Schreibanfrage und das Fortfahren mit der Bearbeitung von Leseanfragen. Das Protokoll kann nicht nur Daten aufzeichnen, sondern auch Vorgänge wie SQL-Anweisungen direkt aufzeichnen.
Das Protokoll ist die Schlüsseldatenstruktur zur Lösung des Konsistenzproblems. Das Protokoll ist wie eine Operationssequenz. Die weit verbreiteten Paxos- und Raft-Protokolle basieren beispielsweise alle auf dem Protokoll.
Protokolle können problemlos zum Verarbeiten des Datenzuflusses und -abflusses verwendet werden. Die Datenquellen können hier aus verschiedenen Aspekten stammen, z. B. aus einem Ereignisstrom (Seitenklick, Cache-Aktualisierungserinnerung, Datenbank-Binlog-Änderungen). ) können wir Protokolle zentral in einem Cluster speichern, und Abonnenten können jeden Datensatz des Protokolls basierend auf dem Offset lesen und ihre eigenen Änderungen basierend auf den Daten und Vorgängen in jedem Datensatz anwenden.
Das Protokoll kann hier als Nachrichtenwarteschlange verstanden werden, und die Nachrichtenwarteschlange kann die Rolle der asynchronen Entkopplung und Strombegrenzung spielen. Warum sagen wir Entkopplung? Da die Verantwortlichkeiten der beiden Rollen für Verbraucher und Produzenten sehr klar sind, sind sie für die Erstellung und den Konsum von Nachrichten verantwortlich, ohne sich darum zu kümmern, wer nachgelagert oder vorgelagert ist, ob es sich um das Änderungsprotokoll der Datenbank oder um ein bestimmtes Ereignis handelt Ich muss mich überhaupt nicht um eine bestimmte Partei kümmern, ich muss nur auf die Protokolle achten, die mich interessieren, und auf jeden Eintrag in den Protokollen.
Wir wissen, dass die QPS der Datenbank sicher ist und Anwendungen der oberen Ebene im Allgemeinen horizontal erweitert werden können. Wenn zu diesem Zeitpunkt ein plötzliches Anforderungsszenario wie Double 11 auftritt und die Datenbank überlastet ist, können wir Nachrichtenwarteschlangen einführen um die Vorgänge der Datenbank jedes Teams zu kombinieren. Schreiben Sie in das Protokoll, und eine andere Anwendung ist dafür verantwortlich, diese Protokolldatensätze zu verbrauchen und auf die Datenbank anzuwenden. Selbst wenn die Datenbank hängt, kann die Verarbeitung bei der Wiederherstellung an der Position der letzten Nachricht fortgesetzt werden RocketMQ und Kafka unterstützen die Exactly Once-Semantik. Auch wenn die Geschwindigkeit des Produzenten von der Geschwindigkeit des Verbrauchers abweicht, hat das Protokoll hier keine Auswirkungen. Es kann alle Datensätze im Protokoll speichern und synchronisieren Regelmäßig an den Slave-Knoten gesendet, sodass die Rückstandskapazität erheblich verbessert werden kann, da das Schreiben von Protokollen vom Master-Knoten verarbeitet wird. Eine davon ist Tail-Read, was bedeutet, dass die Verbrauchsgeschwindigkeit mithalten kann Mit der Schreibgeschwindigkeit können Sie direkt zum Cache gehen, und der andere ist der Verbraucher, der hinter der Schreibanforderung zurückbleibt und vom Slave-Knoten gelesen werden kann, und zwar durch die E/A-Isolation und einige damit verbundene Dateirichtlinien B. Pagecache, Cache-Read-Ahead usw., kann die Leistung erheblich verbessert werden.
Horizontale Skalierbarkeit ist ein sehr wichtiges Merkmal in einem verteilten System. Probleme, die durch das Hinzufügen von Maschinen gelöst werden können, sind kein Problem. Wie implementiert man also eine Nachrichtenwarteschlange, die eine horizontale Erweiterung erreichen kann? Wenn wir eine eigenständige Nachrichtenwarteschlange haben, werden E/A, CPU, Bandbreite usw. mit zunehmender Anzahl von Themen allmählich zu Engpässen und die Leistung nimmt langsam ab. Wie geht es hier weiter? Wie sieht es mit der Leistungsoptimierung aus?
- topic/log sharding Im Wesentlichen handelt es sich bei den nach Themen geschriebenen Nachrichten um Protokolleinträge. Mit zunehmender Anzahl von Schreibvorgängen wird ein einzelner Computer langsam zu einem Engpass Ordnen Sie jedes Thema einer anderen Maschine zu. Auf diese Weise können Themen mit einer großen Anzahl von Nachrichten durch Hinzufügen von Maschinen gelöst werden, während einige Themen mit einer kleinen Anzahl von Nachrichten derselben Maschine zugewiesen oder nicht verarbeitet werden können
- Gruppen-Commit, wie der Producer-Client von Kafka, schreibt diese beim Schreiben von Nachrichten zunächst in eine lokale Speicherwarteschlange, fasst die Nachrichten dann nach jeder Partition und jedem Knoten zusammen und übermittelt sie stapelweise. Dies ist möglich Bei dieser Methode wird auch zuerst der Seitencache geschrieben und dann die Festplatte regelmäßig geleert. Die Methode zum Leeren kann je nach Unternehmen festgelegt werden. Beispielsweise können Finanzdienstleistungen eine synchrone Löschmethode anwenden.
- Vermeiden Sie unnötiges Kopieren von Daten
- IO-Isolation
-
Das obige ist der detaillierte Inhalt vonAnwendung einer effizienten Protokollbibliothek unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Die fünf grundlegenden Komponenten des Linux -Systems sind: 1. Kernel, 2. Systembibliothek, 3. System Utilities, 4. Grafische Benutzeroberfläche, 5. Anwendungen. Der Kernel verwaltet Hardware -Ressourcen, die Systembibliothek bietet vorkompilierte Funktionen, Systemversorgungsunternehmen werden für die Systemverwaltung verwendet, die GUI bietet visuelle Interaktion und Anwendungen verwenden diese Komponenten, um Funktionen zu implementieren.

Um die Git -Repository -Adresse anzuzeigen, führen Sie die folgenden Schritte aus: 1. Öffnen Sie die Befehlszeile und navigieren Sie zum Repository -Verzeichnis; 2. Führen Sie den Befehl "git remote -v" aus; 3.. Zeigen Sie den Repository -Namen in der Ausgabe und der entsprechenden Adresse an.

Obwohl Notepad den Java -Code nicht direkt ausführen kann, kann er durch Verwendung anderer Tools erreicht werden: Verwenden des Befehlszeilencompilers (JAVAC), um eine Bytecode -Datei (Dateiname.class) zu generieren. Verwenden Sie den Java Interpreter (Java), um Bytecode zu interpretieren, den Code auszuführen und das Ergebnis auszugeben.

Es gibt sechs Möglichkeiten, Code in Sublime auszuführen: durch Hotkeys, Menüs, Build-Systeme, Befehlszeilen, Standard-Build-Systeme und benutzerdefinierte Build-Befehle und führen Sie einzelne Dateien/Projekte aus, indem Sie mit der rechten Maustaste auf Projekte/Dateien klicken. Die Verfügbarkeit des Build -Systems hängt von der Installation des erhabenen Textes ab.

Zu den Hauptanwendungen von Linux gehören: 1. Server -Betriebssystem, 2. Eingebettes System, 3. Desktop -Betriebssystem, 4. Entwicklungs- und Testumgebung. Linux zeichnet sich in diesen Bereichen aus und bietet Stabilität, Sicherheits- und effiziente Entwicklungstools.

Um Laravel zu installieren, befolgen Sie die folgenden Schritte: Installieren Sie den Komponisten (für MacOS/Linux und Windows). Installieren Sie LaRavel Installer. Erstellen Sie eine neue Projektstart -Service -Access -Anwendung (URL: http://127.0.0.1:8000).

Die Installation der GIT -Software enthält die folgenden Schritte: Laden Sie das Installationspaket herunter und führen Sie das Installationspaket aus, um die Installationskonfiguration Git Installation Git Bash zu überprüfen (nur Windows)

Es gibt viele Möglichkeiten, eine Entwicklungsumgebung anzupassen, aber die globale GIT -Konfigurationsdatei wird am wahrscheinlichsten für benutzerdefinierte Einstellungen wie Benutzernamen, E -Mails, bevorzugte Texteditoren und Remote -Zweige verwendet. Hier sind die wichtigsten Dinge, die Sie über globale Git -Konfigurationsdateien wissen müssen.
