PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |