PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> 类

定义

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

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)

类型参数

TLogView

日志的用户定义视图

TLogEntry

日志条目的类型

TSubmissionEntry

挂起队列中存储的提交条目的类型

继承
PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>
实现

构造函数

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

为给定参数构造 实例。

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

为给定参数构造 实例。

字段

LastPrimaryIssue

存储读取或更新主数据库时发生的最后一个问题。 如果成功,则为 null。

stats

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

属性

Configuration

此 grain 实例的当前多群集配置。

ConfirmedVersion

日志的已确认前缀的长度

ConfirmedView

日志的确认视图 (仅反映已确认条目)

Host

使用此适配器的粒度。

Services

在不同群集中的 grain 实例之间实现通知所需的运行时服务。

SupportSubmissions

此群集是否支持提交更新

TentativeView

日志 (反映已确认和未确认条目的本地暂定视图)

UnconfirmedSuffix

已确认前缀中尚未显示的已提交条目的列表。

UnresolvedConnectionIssues

返回尚未还原的所有连接运行状况问题的列表。 例如,在与主群集通信或尝试通知其他群集时,会观察到此类问题。

方法

BroadcastNotification(INotificationMessage, String)

向所有远程实例发送通知消息

ConfirmSubmittedEntries()

确认所有提交的条目。

等待,直到所有以前提交的条目都出现在日志的确认前缀中。

CopyTentativeState()

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

DisableStatsCollection()

禁用统计信息收集

EnableStatsCollection()

方法是虚拟的,因此子类可以添加其自己的事件

EnsureClusterJoinedAsync()

阻止,直到此群集联接到多群集。

GetCaughtUpWithConfigurationAsync(DateTime)

等待此群集收到至少与时间戳一样新的配置

GetConfirmedVersion()

已缓存全局状态的读取版本。

GetCurrentBatchOfUpdates()

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

GetNumberPendingUpdates()

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

GetStats()

获取状态

InitializeConfirmedView(TLogView)

将确认视图的初始值 (空日志)

IsMyClusterJoined()

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

LastConfirmedView()

读取缓存的全局状态。

MakeSubmissionEntry(TLogEntry)

为提交的日志条目创建提交条目。 使用类型参数,以便我们可以向此类添加特定于协议的信息。

Merge(INotificationMessage, INotificationMessage)

合并两个通知消息,用于批处理。 重写以处理通知子类型。

NotifyPromises(Int32, Boolean)

发送失败通知

OnConfigurationChange(MultiClusterConfiguration)

在多群集的配置发生更改时调用。

OnMessageReceived(ILogConsistencyProtocolMessage)

处理协议消息。

OnMessageReceived(ILogConsistencyProtocolMessage)

处理协议消息。

OnMultiClusterConfigurationChange(MultiClusterConfiguration)

发生配置更改时由 MultiClusterOracle 调用。

OnNotificationReceived(INotificationMessage)

处理通知消息。 重写此项以处理通知子类型。

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

从网络调用

OnProtocolMessageReceived(ILogConsistencyProtocolMessage)

从网络调用

PostOnActivate()

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

PostOnDeactivate()

在停用期间调用,恰好在用户定义的 OnDeactivateAsync()之后调用。

PreOnActivate()

在激活期间调用,就在用户定义的 OnActivateAsync()之前。

ProcessNotifications()

在工作周期期间处理存储的通知。 重写以处理通知子类型。

ReadAsync()

读取最新的主要状态。 必须阻止/重试,直到成功。 不应引发异常,但应将其记录在 LastPrimaryIssue

RemoveStaleConditionalUpdates()

完成更新并删除所有已失败的条件更新

RetrieveLogSegment(Int32, Int32)

一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。

请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 grain 计划程序 (交错对此适配器的调用是安全的,) 。

子类替代 ReadAsync 和 WriteAsync 以从/写入主数据库。 对主服务器的调用是序列化的,即从不交错。

Submit(TLogEntry)

提交要追加到全局日志的单个日志条目,无论是在当前位置还是在以后的任何位置。

SubmitRange(IEnumerable<TLogEntry>)

提交一系列日志条目,以原子方式追加到全局日志中,无论是在当前位置还是在以后的任何位置。

Synchronize()

获取最新的日志视图并确认所有已提交的条目。

等待之前提交的所有条目出现在日志的确认前缀中,并强制刷新已确认的前缀。

TryAppend(TLogEntry)

尝试在日志的当前位置追加单个日志条目。

TryAppendRange(IEnumerable<TLogEntry>)

尝试在日志的当前位置以原子方式追加一系列日志条目。

WriteAsync()

将挂起的条目应用于主数据库。 必须阻止/重试,直到成功。 不应引发异常,但应将其记录在 LastPrimaryIssue

适用于