Stateful Service Fabric 服务 - 复制磁盘中更改的文件

Stateful service fabric service - replication of files changed in the disk

如果我将 SQLite 数据库(或任何大文件)嵌入到有状态的 Service Fabric 服务或 Actor 进程(甚至是 Azure 应用程序服务)中,复制在后台如何工作?
Azure 会在检测到更改时尝试复制整个文件,还是仅复制磁盘扇区?

Azure will try to copy the whole file when it detects changes, or disk sectors only?

不,有状态服务仅复制放置在可靠集合上的数据,您应该期望更改的文件跨节点复制,无论何时创建服务的新实例,原始文件被复制到新节点,您将无法访问修改后的文件。您不应该将文件保存在节点磁盘中,为此您应该使用像 Azure Blob 存储这样的持久存储,或者将文件共享附加到节点。

How the replication works in the background?

我认为您误解了可靠集合和有状态服务的概念,我建议您查看此文档以清楚了解其工作原理: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-reliable-collections

建议:

如果您想依赖 SF 数据管理和复制功能,我建议您将数据存储在可靠的集合中,而不是使用 SqlLite。如果符合您的要求。

更新:

在 Build 2018 上,SF 团队宣布计划支持两个版本的 'reliable' 卷,一个将基于 Azure 文件,与描述的相同 here,另一个将基于可靠的集合,将复制更改的文件,后者尚未发布。如果您可以等待,我认为这些功能将适合您的需求。