Compartilhar via


PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> Classe

Definição

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

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)

Parâmetros de tipo

TLogView

A exibição definida pelo usuário do log

TLogEntry

O tipo das entradas de log

TSubmissionEntry

O tipo de entradas de envio armazenadas na fila pendente

Herança
PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>
Implementações

Construtores

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

Construa uma instância para os parâmetros especificados.

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

Construa uma instância para os parâmetros especificados.

Campos

LastPrimaryIssue

Armazene o último problema que ocorreu durante a leitura ou atualização do primário. Será nulo se tiver êxito.

stats

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

Propriedades

Configuration

A configuração de vários clusters atual para essa instância de granularidade.

ConfirmedVersion

O comprimento do prefixo confirmado do log

ConfirmedView

Exibição confirmada do log (refletindo apenas entradas confirmadas)

Host

A granularidade que está usando esse adaptador.

Services

Os serviços de runtime necessários para implementar notificações entre instâncias de granularidade em clusters diferentes.

SupportSubmissions

Se esse cluster dá suporte ao envio de atualizações

TentativeView

Exibição local e provisória do log (refletindo entradas confirmadas e não confirmadas)

UnconfirmedSuffix

Uma lista das entradas enviadas que ainda não aparecem no prefixo confirmado.

UnresolvedConnectionIssues

retorna uma lista de todos os problemas de integridade da conexão que ainda não foram restaurados. Esses problemas são observados durante a comunicação com o primário ou ao tentar notificar outros clusters, por exemplo.

Métodos

BroadcastNotification(INotificationMessage, String)

Enviar uma mensagem de notificação para todas as instâncias remotas

ConfirmSubmittedEntries()

Confirme todas as entradas enviadas.

Aguarda até que todas as entradas enviadas anteriormente apareçam no prefixo confirmado do log.

CopyTentativeState()

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

DisableStatsCollection()

Desabilitar coleta de estatísticas

EnableStatsCollection()

o método é virtual para que as subclasses possam adicionar seus próprios eventos

EnsureClusterJoinedAsync()

Bloqueie até que esse cluster seja unido ao multicluster.

GetCaughtUpWithConfigurationAsync(DateTime)

Aguarde até que esse cluster tenha recebido uma configuração que seja pelo menos tão nova quanto o carimbo de data/hora

GetConfirmedVersion()

Versão de leitura do estado global armazenado em cache.

GetCurrentBatchOfUpdates()

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

GetNumberPendingUpdates()

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

GetStats()

Obter estados

InitializeConfirmedView(TLogView)

Definir a exibição confirmada do valor inicial (uma exibição do log vazio)

IsMyClusterJoined()

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

LastConfirmedView()

Ler o estado global armazenado em cache.

MakeSubmissionEntry(TLogEntry)

Crie uma entrada de envio para a entrada de log enviada. Usando um parâmetro de tipo para que possamos adicionar informações específicas do protocolo a essa classe.

Merge(INotificationMessage, INotificationMessage)

Mesclar duas mensagens de notificação, para envio em lote. Substitua para manipular subtipos de notificação.

NotifyPromises(Int32, Boolean)

enviar notificações de falha

OnConfigurationChange(MultiClusterConfiguration)

Chamado quando a configuração do multicluster está sendo alterada.

OnMessageReceived(ILogConsistencyProtocolMessage)

Manipular mensagens de protocolo.

OnMessageReceived(ILogConsistencyProtocolMessage)

Manipular mensagens de protocolo.

OnMultiClusterConfigurationChange(MultiClusterConfiguration)

Chamado por MultiClusterOracle quando há uma alteração de configuração.

OnNotificationReceived(INotificationMessage)

Manipular mensagens de notificação. Substitua isso para lidar com subtipos de notificação.

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Chamado da rede

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

Chamado da rede

PostOnActivate()

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

PostOnDeactivate()

Chamado durante a desativação, logo após o definido OnDeactivateAsync()pelo usuário.

PreOnActivate()

Chamado durante a ativação, logo antes do definido OnActivateAsync()pelo usuário.

ProcessNotifications()

Processar notificações armazenadas durante o ciclo de trabalho. Substitua para manipular subtipos de notificação.

ReadAsync()

Leia o estado primário mais recente. Deve bloquear/tentar novamente até que seja bem-sucedido. Não deve gerar exceções, mas registrá-las em LastPrimaryIssue

RemoveStaleConditionalUpdates()

passar por atualizações e remover todas as atualizações condicionais que já falharam

RetrieveLogSegment(Int32, Int32)

Um modelo geral para construir adaptadores de exibição de log baseados em um primário lido e gravado sequencialmente. Usamos isso para construir uma variedade de provedores de consistência de log diferentes, todos seguindo o mesmo padrão básico (ler e gravar a exibição mais recente de/para primário e enviar notificações após a gravação).

Observe que o log em si é transitório, ou seja, não é realmente salvo no armazenamento – apenas o modo de exibição mais recente e alguns metadados (a posição de log e sinalizadores de gravação) são armazenados no primário. É seguro intercalar chamadas para esse adaptador (usando apenas o agendador de granularidade, é claro).

As subclasses substituem ReadAsync e WriteAsync para ler/gravar no primário. As chamadas para o primário são serializadas, ou seja, nunca intercalam.

Submit(TLogEntry)

Envie uma única entrada de log a ser acrescentada ao log global, seja na posição atual ou posterior.

SubmitRange(IEnumerable<TLogEntry>)

Envie um intervalo de entradas de log a serem acrescentadas atomicamente ao log global, seja na posição atual ou posterior.

Synchronize()

Obtenha a exibição de log mais recente e confirme todas as entradas enviadas.

Aguarda até que todas as entradas enviadas anteriormente apareçam no prefixo confirmado do log e força uma atualização do prefixo confirmado.

TryAppend(TLogEntry)

Tente acrescentar uma única entrada de log na posição atual do log.

TryAppendRange(IEnumerable<TLogEntry>)

Tente acrescentar um intervalo de entradas de log atomicamente na posição atual do log.

WriteAsync()

Aplique entradas pendentes ao primário. Deve bloquear/tentar novamente até que seja bem-sucedido. Não deve gerar exceções, mas registrá-las em LastPrimaryIssue

Aplica-se a