PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
一个常规模板,用于构造基于按顺序读取和写入的主节点的日志视图适配器。 我们使用它来构造各种不同的日志一致性提供程序,所有这些提供程序都遵循相同的基本模式, (从主数据库读取和写入最新视图,并在写入) 后发送通知。
请注意,日志本身是暂时性的,即实际上未保存到存储中 - 只有最新的视图和某些元数据 (日志位置,并且写入标志) 存储在主节点中。 当然,仅使用 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>
- 实现
构造函数
字段
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 |