我有一个场景,当副本即将失去其主要状态时,我希望将内存中的数据转储到可靠的字典中。
正确的方法是通过观察取消令牌在RunAsync方法上执行吗?例如:
protected override async Task RunAsync(CancellationToken cancellationToken)
{
while (true)
{
// exit only after data is dumped to reliable dictionary
if (cancellationToken.IsCancellationRequested)
{
await DumpDataToDictionaryAsync(data);
cancellationToken.ThrowIfCancellationRequested();
}
...
答案 0 :(得分:2)
如果信息应该保留,那么每当信息发生变化时都应该这样做。如果服务崩溃,您将无法保存任何内容。即使在从主副本切换到辅助副本的情况下,也无法保存可靠的集合。关于生命周期的documentation说明:
在Service Fabric中,当一个Primary被降级时,首先发生的事情之一就是撤销对底层状态的写访问权。
由于无法判断副本何时会失去其主要状态,因此无法将数据保存在可靠的集合中。