如何在主副本关闭之前将数据写入可靠的集合

时间:2017-10-24 05:54:25

标签: azure-service-fabric

我有一个场景,当副本即将失去其主要状态时,我希望将内存中的数据转储到可靠的字典中。

正确的方法是通过观察取消令牌在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();
            }
        ...

1 个答案:

答案 0 :(得分:2)

如果信息应该保留,那么每当信息发生变化时都应该这样做。如果服务崩溃,您将无法保存任何内容。即使在从主副本切换到辅助副本的情况下,也无法保存可靠的集合。关于生命周期的documentation说明:

  

在Service Fabric中,当一个Primary被降级时,首先发生的事情之一就是撤销对底层状态的写访问权。

由于无法判断副本何时会失去其主要状态,因此无法将数据保存在可靠的集合中。