Condividi tramite


PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> Classe

Definizione

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

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)

Parametri di tipo

TLogView

Visualizzazione definita dall'utente del log

TLogEntry

Tipo delle voci di log

TSubmissionEntry

Tipo di voci di invio archiviate nella coda in sospeso

Ereditarietà
PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>
Implementazioni

Costruttori

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

Costruire un'istanza di per i parametri specificati.

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

Costruire un'istanza di per i parametri specificati.

Campi

LastPrimaryIssue

Archiviare l'ultimo problema che si è verificato durante la lettura o l'aggiornamento del database primario. Valore Null se l'operazione riesce.

stats

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

Proprietà

Configuration

Configurazione multi-cluster corrente per questa istanza di granularità.

ConfirmedVersion

Lunghezza del prefisso confermato del log

ConfirmedView

Visualizzazione confermata del log (che riflette solo le voci confermate)

Host

Granularità che usa questo adattatore.

Services

I servizi di runtime necessari per l'implementazione di notifiche tra istanze di granularità in un cluster diverso.

SupportSubmissions

Indica se il cluster supporta l'invio di aggiornamenti

TentativeView

Visualizzazione locale provvisoria del log (che riflette sia le voci confermate che non confermate)

UnconfirmedSuffix

Elenco delle voci inviate che non vengono ancora visualizzate nel prefisso confermato.

UnresolvedConnectionIssues

restituisce un elenco di tutti i problemi di integrità della connessione non ancora ripristinati. Tali problemi vengono osservati durante la comunicazione con il server primario o durante il tentativo di notificare ad altri cluster, ad esempio.

Metodi

BroadcastNotification(INotificationMessage, String)

Inviare un messaggio di notifica a tutte le istanze remote

ConfirmSubmittedEntries()

Confermare tutte le voci inviate.

Attende che tutte le voci inviate in precedenza vengano visualizzate nel prefisso confermato del log.

CopyTentativeState()

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

DisableStatsCollection()

Disabilitare la raccolta di statistiche

EnableStatsCollection()

il metodo è virtuale in modo che le sottoclassi possano aggiungere i propri eventi

EnsureClusterJoinedAsync()

Blocca fino a quando il cluster non viene aggiunto al multicluster.

GetCaughtUpWithConfigurationAsync(DateTime)

Attendere che il cluster abbia ricevuto una configurazione che sia almeno nuova come timestamp

GetConfirmedVersion()

Leggere la versione dello stato globale memorizzato nella cache.

GetCurrentBatchOfUpdates()

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

GetNumberPendingUpdates()

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

GetStats()

Ottenere gli stati

InitializeConfirmedView(TLogView)

Impostare la visualizzazione confermata del valore iniziale (una visualizzazione del log vuoto)

IsMyClusterJoined()

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

LastConfirmedView()

Legge lo stato globale memorizzato nella cache.

MakeSubmissionEntry(TLogEntry)

Creare una voce di invio per la voce di log inviata. Usando un parametro di tipo, è possibile aggiungere informazioni specifiche del protocollo a questa classe.

Merge(INotificationMessage, INotificationMessage)

Unire due messaggi di notifica per l'invio in batch. Eseguire l'override per gestire i sottotipi di notifica.

NotifyPromises(Int32, Boolean)

inviare notifiche di errore

OnConfigurationChange(MultiClusterConfiguration)

Chiamato quando viene modificata la configurazione del multicluster.

OnMessageReceived(ILogConsistencyProtocolMessage)

Gestire i messaggi del protocollo.

OnMessageReceived(ILogConsistencyProtocolMessage)

Gestire i messaggi del protocollo.

OnMultiClusterConfigurationChange(MultiClusterConfiguration)

Chiamato da MultiClusterOracle quando si verifica una modifica della configurazione.

OnNotificationReceived(INotificationMessage)

Gestire i messaggi di notifica. Eseguire l'override di questa opzione per gestire i sottotipi di notifica.

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Chiamata dalla rete

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Chiamata dalla rete

PostOnActivate()

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

PostOnDeactivate()

Chiamato durante la disattivazione, subito dopo l'oggetto definito dall'utente OnDeactivateAsync().

PreOnActivate()

Chiamato durante l'attivazione, subito prima dell'oggetto definito dall'utente OnActivateAsync().

ProcessNotifications()

Elaborare le notifiche archiviate durante il ciclo di lavoro. Eseguire l'override per gestire i sottotipi di notifica.

ReadAsync()

Leggere lo stato primario più recente. Il blocco o il nuovo tentativo deve essere eseguito fino a quando l'operazione non riesce. Non deve generare eccezioni, ma registrarle in LastPrimaryIssue

RemoveStaleConditionalUpdates()

passare attraverso gli aggiornamenti e rimuovere tutti gli aggiornamenti condizionali che hanno già avuto esito negativo

RetrieveLogSegment(Int32, Int32)

Modello generale per la costruzione di adattatori di visualizzazione log basati su una replica primaria di lettura e scrittura sequenziale. Viene usato per creare un'ampia gamma di provider di coerenza dei log diversi, seguendo lo stesso modello di base (lettura e scrittura della visualizzazione più recente da/a primario e invio di notifiche dopo la scrittura).

Si noti che il log stesso è temporaneo, ovvero non viene effettivamente salvato nella risorsa di archiviazione. Solo la visualizzazione più recente e alcuni metadati (la posizione del log e i flag di scrittura) vengono archiviati nel database primario. È sicuro interleavere le chiamate a questo adattatore (usando solo l'utilità di pianificazione granulare, naturalmente).

Le sottoclassi eseguono l'override di ReadAsync e WriteAsync per la lettura da/scrittura a primaria. Le chiamate al database primario vengono serializzate, ovvero non vengono mai interleave.

Submit(TLogEntry)

Inviare una singola voce di log da aggiungere al log globale, in corrispondenza della posizione corrente o successiva.

SubmitRange(IEnumerable<TLogEntry>)

Inviare un intervallo di voci di log da aggiungere in modo atomico al log globale, in corrispondenza dell'attuale o in una posizione successiva.

Synchronize()

Ottenere la visualizzazione log più recente e confermare tutte le voci inviate.

Attende che tutte le voci inviate in precedenza vengano visualizzate nel prefisso confermato del log e forza un aggiornamento del prefisso confermato.

TryAppend(TLogEntry)

Provare ad aggiungere una singola voce di log nella posizione corrente del log.

TryAppendRange(IEnumerable<TLogEntry>)

Provare ad aggiungere un intervallo di voci di log in modo atomico nella posizione corrente del log.

WriteAsync()

Applicare voci in sospeso al database primario. Il blocco o il nuovo tentativo deve essere eseguito fino a quando l'operazione non riesce. Non deve generare eccezioni, ma registrarle in LastPrimaryIssue

Si applica a