PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |