Freigeben über


PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> Klasse

Definition

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

public abstract class PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> : Orleans.LogConsistency.ILogViewAdaptor<TLogView,TLogEntry>, Orleans.LogConsistency.ILogViewRead<TLogView,TLogEntry>, Orleans.LogConsistency.ILogViewUpdate<TLogEntry> where TLogView : class, new() where TLogEntry : class where TSubmissionEntry : SubmissionEntry<TLogEntry>
public abstract class PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> : Orleans.EventSourcing.ILogViewAdaptor<TLogView,TLogEntry>, Orleans.EventSourcing.ILogViewRead<TLogView,TLogEntry>, Orleans.EventSourcing.ILogViewUpdate<TLogEntry> where TLogView : class, new() where TLogEntry : class where TSubmissionEntry : SubmissionEntry<TLogEntry>
type PrimaryBasedLogViewAdaptor<'LogView, 'LogEntry, 'SubmissionEntry (requires 'LogView : null and 'LogView : (new : unit -> 'LogView) and 'LogEntry : null and 'SubmissionEntry :> SubmissionEntry<'LogEntry>)> = class
    interface ILogViewAdaptor<'LogView, 'LogEntry (requires 'LogView : null and 'LogView : (new : unit -> 'LogView) and 'LogEntry : null)>
    interface ILogViewRead<'LogView, 'LogEntry (requires 'LogView : null and 'LogView : (new : unit -> 'LogView) and 'LogEntry : null)>
    interface ILogViewUpdate<'LogEntry (requires 'LogEntry : null)>
    interface ILogConsistencyDiagnostics
Public MustInherit Class PrimaryBasedLogViewAdaptor(Of TLogView, TLogEntry, TSubmissionEntry)
Implements ILogViewAdaptor(Of TLogView, TLogEntry), ILogViewRead(Of TLogView, TLogEntry), ILogViewUpdate(Of TLogEntry)

Typparameter

TLogView

Die benutzerdefinierte Ansicht des Protokolls

TLogEntry

Der Typ der Protokolleinträge

TSubmissionEntry

Der Typ der in der ausstehenden Warteschlange gespeicherten Übermittlungseinträge

Vererbung
PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>
Implementiert

Konstruktoren

PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>(ILogViewAdaptorHost<TLogView,TLogEntry>, TLogView, ILogConsistencyProtocolServices)

Erstellen Sie eine instance für die angegebenen Parameter.

PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>(ILogViewAdaptorHost<TLogView,TLogEntry>, TLogView, ILogConsistencyProtocolServices)

Erstellen Sie eine instance für die angegebenen Parameter.

Felder

LastPrimaryIssue

Speichern Sie das letzte Problem, das beim Lesen oder Aktualisieren der primären Datei aufgetreten ist. Ist NULL, wenn der Vorgang erfolgreich war.

stats

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

Eigenschaften

Configuration

Die aktuelle Konfiguration mit mehreren Clustern für dieses Grain instance.

ConfirmedVersion

Die Länge des bestätigten Präfixes des Protokolls

ConfirmedView

Bestätigte Ansicht des Protokolls (nur bestätigte Einträge)

Host

Das Korn, das diesen Adapter verwendet.

Services

Die Laufzeitdienste, die für die Implementierung von Benachrichtigungen zwischen Grain-Instanzen in verschiedenen Clustern erforderlich sind.

SupportSubmissions

Ob dieser Cluster das Übermitteln von Updates unterstützt

TentativeView

Lokale, vorläufige Sicht des Protokolls (sowohl bestätigte als auch unbestätigte Einträge)

UnconfirmedSuffix

Eine Liste der übermittelten Einträge, die noch nicht im bestätigten Präfix angezeigt werden.

UnresolvedConnectionIssues

gibt eine Liste aller Probleme mit der Verbindungsintegrität zurück, die noch nicht wiederhergestellt wurden. Solche Probleme werden beispielsweise bei der Kommunikation mit dem primären Cluster oder beim Versuch, andere Cluster zu benachrichtigen, beobachtet.

Methoden

BroadcastNotification(INotificationMessage, String)

Senden einer Benachrichtigungsnachricht an alle Remoteinstanzen

ConfirmSubmittedEntries()

Bestätigen Sie alle übermittelten Einträge.

Wartet, bis alle zuvor übermittelten Einträge im bestätigten Präfix des Protokolls angezeigt werden.

CopyTentativeState()

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

DisableStatsCollection()

Deaktivieren der Statistiksammlung

EnableStatsCollection()

-Methode ist virtuell, sodass Unterklassen ihre eigenen Ereignisse hinzufügen können

EnsureClusterJoinedAsync()

Blockieren Sie, bis dieser Cluster mit dem Multicluster verbunden ist.

GetCaughtUpWithConfigurationAsync(DateTime)

Warten Sie, bis dieser Cluster eine Konfiguration erhalten hat, die mindestens so neu wie der Zeitstempel ist.

GetConfirmedVersion()

Lesen Sie die Version des zwischengespeicherten globalen Zustands.

GetCurrentBatchOfUpdates()

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

GetNumberPendingUpdates()

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

GetStats()

Zustände abrufen

InitializeConfirmedView(TLogView)

Festlegen des Anfangswerts für die bestätigte Ansicht (Ansicht des leeren Protokolls)

IsMyClusterJoined()

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

LastConfirmedView()

Lesen des zwischengespeicherten globalen Zustands.

MakeSubmissionEntry(TLogEntry)

Erstellen Sie einen Übermittlungseintrag für den übermittelten Protokolleintrag. Mithilfe eines Typparameters können wir dieser Klasse protokollspezifische Informationen hinzufügen.

Merge(INotificationMessage, INotificationMessage)

Führen Sie zwei Benachrichtigungen für die Batchverarbeitung zusammen. Überschreiben Sie, um Benachrichtigungsuntertypen zu behandeln.

NotifyPromises(Int32, Boolean)

Senden von Fehlerbenachrichtigungen

OnConfigurationChange(MultiClusterConfiguration)

Wird aufgerufen, wenn sich die Konfiguration des Multiclusters ändert.

OnMessageReceived(ILogConsistencyProtocolMessage)

Verarbeiten von Protokollmeldungen.

OnMessageReceived(ILogConsistencyProtocolMessage)

Verarbeiten von Protokollmeldungen.

OnMultiClusterConfigurationChange(MultiClusterConfiguration)

Wird von MultiClusterOracle aufgerufen, wenn eine Konfigurationsänderung erfolgt.

OnNotificationReceived(INotificationMessage)

Behandeln sie Benachrichtigungsmeldungen. Überschreiben Sie dies, um Benachrichtigungsuntertypen zu behandeln.

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Aufgerufen aus dem Netzwerk

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Aufgerufen aus dem Netzwerk

PostOnActivate()

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

PostOnDeactivate()

Wird während der Deaktivierung aufgerufen, direkt nach dem benutzerdefinierten OnDeactivateAsync().

PreOnActivate()

Wird während der Aktivierung aufgerufen, direkt vor dem benutzerdefinierten OnActivateAsync().

ProcessNotifications()

Verarbeiten gespeicherter Benachrichtigungen während des Workerzyklus. Überschreiben Sie, um Benachrichtigungsuntertypen zu behandeln.

ReadAsync()

Lesen Sie den aktuellen primären Zustand. Muss blockieren/wiederholen, bis der Vorgang erfolgreich ist. Ausnahmen sollten nicht ausgelöst werden, sondern sie in aufzeichnen LastPrimaryIssue

RemoveStaleConditionalUpdates()

Durchlaufen Sie Updates, und entfernen Sie alle bedingten Updates, die bereits fehlgeschlagen sind.

RetrieveLogSegment(Int32, Int32)

Eine allgemeine Vorlage zum Erstellen von Protokollansichtsadaptern, die auf einer sequenziell gelesenen und geschriebenen primären Instanz basieren. Wir verwenden dies, um eine Vielzahl von verschiedenen Protokollkonsistenzanbietern zu erstellen, die alle dem gleichen grundlegenden Muster folgen (Lese- und Schreibzugriff der neuesten Ansicht von/an der primären Instanz und Senden von Benachrichtigungen nach dem Schreiben).

Beachten Sie, dass das Protokoll selbst vorübergehend ist, d. h. nicht tatsächlich im Speicher gespeichert ist. Nur die neueste Ansicht und einige Metadaten (Protokollposition und Schreibflags) werden im primären gespeichert. Es ist sicher, Aufrufe an diesen Adapter zu verschachteln (natürlich nur mit Grain Scheduler).

Unterklassen überschreiben ReadAsync und WriteAsync, um aus dem primären Wert zu lesen bzw. zu schreiben. Aufrufe des primären werden serialisiert, d. h. nie ineinandergreifen.

Submit(TLogEntry)

Übermitteln Sie einen einzelnen Protokolleintrag, der an das globale Protokoll angefügt werden soll, entweder an der aktuellen Position oder an einer beliebigen späteren Position.

SubmitRange(IEnumerable<TLogEntry>)

Übermitteln Sie einen Bereich von Protokolleinträgen, die atomar an das globale Protokoll angefügt werden sollen, entweder an der aktuellen oder an einer späteren Position.

Synchronize()

Rufen Sie die neueste Protokollansicht ab, und bestätigen Sie alle übermittelten Einträge.

Wartet, bis alle zuvor übermittelten Einträge im bestätigten Präfix des Protokolls angezeigt werden, und erzwingt eine Aktualisierung des bestätigten Präfixes.

TryAppend(TLogEntry)

Versuchen Sie, einen einzelnen Protokolleintrag an der aktuellen Position des Protokolls anzufügen.

TryAppendRange(IEnumerable<TLogEntry>)

Versuchen Sie, einen Bereich von Protokolleinträgen atomar an der aktuellen Position des Protokolls anzufügen.

WriteAsync()

Wenden Sie ausstehende Einträge auf den primären An. Muss blockieren/wiederholen, bis der Vorgang erfolgreich ist. Ausnahmen sollten nicht ausgelöst werden, sondern sie in aufzeichnen LastPrimaryIssue

Gilt für: