IReliableDictionary 的内容是否已更改?
Has the contents of an IReliableDictionary changed?
我定期对 IReliableDictionary 进行完整备份是 Azure Service Fabric。每 X 分钟我检查一次集合中的元素数量是否发生变化,如果发生变化,我创建一个新备份。
这显然有一个缺点,如果我只是更改字典中某个项目的值,集合大小不会改变并且不会发生备份。
一种解决方案是枚举整个字典并计算集合的整体哈希(假设可以保证项目的顺序)。有没有更好的方法来确定 IReliableDictionary 是否已更改?
StateManager
生成的 few events 可能会有帮助。
TransactionChanged
如果提交事务,则会引发事件。
例如:
public MyService(StatefulServiceContext context)
: base(MyService.EndpointName, context, CreateReliableStateManager(context))
{
this.StateManager.TransactionChanged += this.OnTransactionChangedHandler;
}
我定期对 IReliableDictionary 进行完整备份是 Azure Service Fabric。每 X 分钟我检查一次集合中的元素数量是否发生变化,如果发生变化,我创建一个新备份。
这显然有一个缺点,如果我只是更改字典中某个项目的值,集合大小不会改变并且不会发生备份。
一种解决方案是枚举整个字典并计算集合的整体哈希(假设可以保证项目的顺序)。有没有更好的方法来确定 IReliableDictionary 是否已更改?
StateManager
生成的 few events 可能会有帮助。
TransactionChanged
如果提交事务,则会引发事件。
例如:
public MyService(StatefulServiceContext context)
: base(MyService.EndpointName, context, CreateReliableStateManager(context))
{
this.StateManager.TransactionChanged += this.OnTransactionChangedHandler;
}