Partager via


PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> Classe

Définition

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

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)

Paramètres de type

TLogView

Vue définie par l’utilisateur du journal

TLogEntry

Type des entrées de journal

TSubmissionEntry

Type d’entrées de soumission stockées dans la file d’attente en attente

Héritage
PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>
Implémente

Constructeurs

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

Construisez un instance pour les paramètres donnés.

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

Construisez un instance pour les paramètres donnés.

Champs

LastPrimaryIssue

Stockez le dernier problème qui s’est produit lors de la lecture ou de la mise à jour du principal. A la valeur Null en cas de réussite.

stats

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

Propriétés

Configuration

Configuration à plusieurs clusters actuelle pour ce instance de grain.

ConfirmedVersion

Longueur du préfixe confirmé du journal

ConfirmedView

Affichage confirmé du journal (ne reflétant que les entrées confirmées)

Host

Grain qui utilise cet adaptateur.

Services

Services d’exécution requis pour l’implémentation des notifications entre les instances de grain dans un cluster différent.

SupportSubmissions

Si ce cluster prend en charge l’envoi de mises à jour

TentativeView

Vue locale et provisoire du journal (reflétant les entrées confirmées et non confirmées)

UnconfirmedSuffix

Liste des entrées envoyées qui n’apparaissent pas encore dans le préfixe confirmé.

UnresolvedConnectionIssues

retourne une liste de tous les problèmes d’intégrité de connexion qui n’ont pas encore été restaurés. De tels problèmes sont observés lors de la communication avec le serveur principal ou lors de la tentative de notification d’autres clusters, par exemple.

Méthodes

BroadcastNotification(INotificationMessage, String)

Envoyer un message de notification à toutes les instances distantes

ConfirmSubmittedEntries()

Confirmez toutes les entrées envoyées.

Attend que toutes les entrées précédemment envoyées apparaissent dans le préfixe confirmé du journal.

CopyTentativeState()

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

DisableStatsCollection()

Désactiver la collecte de statistiques

EnableStatsCollection()

la méthode étant virtuelle, les sous-classes peuvent ajouter leurs propres événements

EnsureClusterJoinedAsync()

Bloquer jusqu’à ce que ce cluster soit joint au multicluster.

GetCaughtUpWithConfigurationAsync(DateTime)

Attendez que ce cluster ait reçu une configuration au moins aussi nouvelle que timestamp

GetConfirmedVersion()

Lire la version de l’état global mis en cache.

GetCurrentBatchOfUpdates()

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

GetNumberPendingUpdates()

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

GetStats()

Obtenir les états

InitializeConfirmedView(TLogView)

Définir la valeur initiale de l’affichage confirmé (une vue du journal vide)

IsMyClusterJoined()

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

LastConfirmedView()

Lire l’état global mis en cache.

MakeSubmissionEntry(TLogEntry)

Créez une entrée de soumission pour l’entrée de journal envoyée. Utilisation d’un paramètre de type pour pouvoir ajouter des informations spécifiques au protocole à cette classe.

Merge(INotificationMessage, INotificationMessage)

Fusionner deux messages de notification, pour le traitement par lot. Remplacez pour gérer les sous-types de notification.

NotifyPromises(Int32, Boolean)

envoyer des notifications d’échec

OnConfigurationChange(MultiClusterConfiguration)

Appelé lorsque la configuration du multicluster change.

OnMessageReceived(ILogConsistencyProtocolMessage)

Gérer les messages de protocole.

OnMessageReceived(ILogConsistencyProtocolMessage)

Gérer les messages de protocole.

OnMultiClusterConfigurationChange(MultiClusterConfiguration)

Appelé par MultiClusterOracle en cas de modification de configuration.

OnNotificationReceived(INotificationMessage)

Gérer les messages de notification. Remplacez cette valeur pour gérer les sous-types de notification.

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Appelé à partir du réseau

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Appelé à partir du réseau

PostOnActivate()

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

PostOnDeactivate()

Appelé pendant la désactivation, juste après le défini par OnDeactivateAsync()l’utilisateur.

PreOnActivate()

Appelé lors de l’activation, juste avant le défini par OnActivateAsync()l’utilisateur.

ProcessNotifications()

Traiter les notifications stockées pendant le cycle de travail. Remplacez pour gérer les sous-types de notification.

ReadAsync()

Lisez l’état principal le plus récent. Doit bloquer/réessayer jusqu’à ce que la réussite soit réussie. Ne doit pas lever d’exceptions, mais les enregistrer dans LastPrimaryIssue

RemoveStaleConditionalUpdates()

parcourir les mises à jour et supprimer toutes les mises à jour conditionnelles qui ont déjà échoué

RetrieveLogSegment(Int32, Int32)

Modèle général pour construire des adaptateurs de vue de journal basés sur une base de données primaire en lecture et écriture séquentielle. Nous l’utilisons pour construire différents fournisseurs de cohérence des journaux, tous suivant le même modèle de base (lecture et écriture de la dernière vue depuis/vers le serveur principal, et envoi de notifications après l’écriture).

Notez que le journal lui-même est temporaire, c’est-à-dire qu’il n’est pas réellement enregistré dans le stockage : seule la vue la plus récente et certaines métadonnées (la position du journal et les indicateurs d’écriture) sont stockées dans le serveur principal. Il est sûr d’entrelacer les appels à cet adaptateur (à l’aide du planificateur de grain uniquement, bien sûr).

Les sous-classes remplacent ReadAsync et WriteAsync pour lire/écrire à la classe primaire. Les appels au serveur principal sont sérialisés, c’est-à-dire jamais entrelacés.

Submit(TLogEntry)

Envoyez une seule entrée de journal à ajouter au journal global, à la position actuelle ou ultérieure.

SubmitRange(IEnumerable<TLogEntry>)

Envoyez une plage d’entrées de journal à ajouter atomiquement au journal global, à la position actuelle ou ultérieure.

Synchronize()

Obtenez la dernière vue du journal et confirmez toutes les entrées envoyées.

Attend que toutes les entrées précédemment envoyées apparaissent dans le préfixe confirmé du journal et force l’actualisation du préfixe confirmé.

TryAppend(TLogEntry)

Essayez d’ajouter une seule entrée de journal à la position actuelle du journal.

TryAppendRange(IEnumerable<TLogEntry>)

Essayez d’ajouter une plage d’entrées de journal de manière atomique à la position actuelle du journal.

WriteAsync()

Appliquez les entrées en attente au serveur principal. Doit bloquer/réessayer jusqu’à ce que la réussite soit réussie. Ne doit pas lever d’exceptions, mais les enregistrer dans LastPrimaryIssue

S’applique à