【发布时间】:2018-10-22 16:45:01
【问题描述】:
如果我将 SQLite 数据库(或任何大文件)嵌入到有状态的 Service Fabric 服务或 Actor 进程(甚至是 Azure 应用服务)中,复制在后台如何工作?
Azure 会在检测到更改时尝试复制整个文件,还是仅复制磁盘扇区?
【问题讨论】:
标签: sqlite azure azure-service-fabric service-fabric-stateful
如果我将 SQLite 数据库(或任何大文件)嵌入到有状态的 Service Fabric 服务或 Actor 进程(甚至是 Azure 应用服务)中,复制在后台如何工作?
Azure 会在检测到更改时尝试复制整个文件,还是仅复制磁盘扇区?
【问题讨论】:
标签: sqlite azure azure-service-fabric service-fabric-stateful
Azure 会在检测到更改时尝试复制整个文件,还是仅复制磁盘扇区?
不,有状态服务仅复制放置在可靠集合上的数据,您不应该不期望更改的文件会跨节点复制,每当创建服务的新实例时,原始文件都会复制到新节点,您将无法访问修改后的文件。不应将文件持久保存在节点磁盘中,为此应使用 Azure Blob 存储等持久存储,或将文件共享附加到节点。
复制如何在后台工作?
我认为您误解了可靠集合和有状态服务的概念,我建议您查看此文档以清楚了解其工作原理: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-reliable-collections
建议:
如果您想依赖 SF 数据管理和复制功能,我建议您将数据存储在可靠的集合中,而不是使用 SqlLite。如果符合您的要求。
更新:
在 Build 2018 上,SF 团队宣布了支持两个版本的“可靠”卷的计划,一个将基于 Azure 文件,与 here 所述相同,另一个将基于可靠集合,将复制更改的文件,后者尚未发布。如果您可以等待,我认为这些功能将适合您的需求。
【讨论】: