Azure Blob 存储与文件服务 [关闭]

Posted

技术标签:

【中文标题】Azure Blob 存储与文件服务 [关闭]【英文标题】:Azure Blob Storage vs. File Service [closed] 【发布时间】:2014-09-12 20:43:21 【问题描述】:

请纠正我的错误。从我目前对该主题的阅读来看,在我看来,Azure Blob 存储和文件服务都提供了存储文件和文件夹的能力(我知道 blob 可以存储任何二进制对象,但任何序列化二进制流最终只是一个文件)在模仿文件系统的层次结构中。

只有访问它们的 API 略有不同,因为文件服务除了使用 REST API 之外,还允许您使用类似 Win32 文件 I/O 的函数来查询源。

如果您希望您的应用程序存储您的应用程序用户拥有的一些文件,为什么要选择一个而不是另一个?

【问题讨论】:

您是否阅读过 Azure 存储团队的这篇博文:blogs.msdn.com/b/windowsazurestorage/archive/2014/05/12/…?请向下滚动到说明何时使用哪种服务的部分。 是的,我在发布之前阅读了那篇文章。我正处于思考问题的早期阶段,我的理解还没有很好地形成。我仍然很困惑。我了解我读过的所有文章中所写的所有内容,但如果我想为我正在设计的应用程序存储用户拥有的文件,我正在努力找出最好的使用方法。 我想这归结为你想对这些用户文件做什么?它们会以某种方式流回(通过网络浏览器等)还是会被进一步处理?如果是前者,那么 Blob 存储是有意义的。如果是后者,那么文件服务是有意义的。 事情是:我想让用户上传和下载他自己的文件,并与他的联系人组中的其他人分享其中的一些文件(他们只能下载/阅读)。我可以使用带有 Blob 存储的共享访问签名 (SAS) 来做到这一点,但这并不能满足我的“共享”要求。我倾向于一种解决方案,在该解决方案中,我的应用程序/服务进行了所有身份验证,并且没有向用户公开实际的存储资源。在这种情况下,对我来说,文件服务和 Blob 存储都做同样的事情。没有人比其他人更能安慰我。 docs.microsoft.com/en-us/azure/storage/common/… 【参考方案1】:

你的问题的几个项目:

    您不能将 Azure Blob 存储作为本机共享装载到虚拟机上。 Azure Blob 存储不是容器之外的分层结构。您可以添加其中包含 / 或 \ 字符的文件,这些字符被许多读取 blob 存储的应用程序解释为文件夹。 Azure 文件服务为 Azure Blob 存储提供 SMB 协议接口,解决了 (1) 的问题。

如果您正在开发新的应用程序,则将本机 Azure API 直接用于 Blob 存储。

如果要移植需要共享文件的现有应用程序,请使用 Azure 文件服务。

请注意,Azure File Service doesn't support 有一些 SMB 协议功能。

【讨论】:

非常感谢,西蒙。关于你的回复的一些事情。看,归根结底,我想要一个最终结果。从这个角度来看,我发布了这个问题。从最终结果的角度来看,您列表中的论点 #1 和 #3 是不相关的。我根本不是在和你争论。 :-) 您的回答非常有帮助。我只是想告诉你导致我提出这个问题的思考过程。论点 #2 不是问题,因为它提出了一个问题并说这不是问题。假设我想存储用户拥有的文件,我在想,为什么我更喜欢一个而不是另一个? 查看编号列表后的两点 - 这应该是您的指南。 @SimonW - 您的指南后面的两点被称为“做这件事的方法”。然而,它们并不是绝对的。在这种情况下,它们更像是建议。在某些情况下,您不想直接使用 Azure API,即使是使用新应用程序也是如此。同样,在某些情况下,您可能希望修改现有应用以使用 Azure API。 它们之间的IOPS性能有区别吗? @SimonW - 你能详细说明上面的第 3 点吗?这是将 Blob 挂载为 SBM 文件共享还是以某种方式将其作为“磁盘”访问的一种方式?【参考方案2】:

需要考虑的其他一些事项:

定价:Blob 存储比文件存储便宜得多。 可移植性:如果您决定将来迁移到差异平台,则使用 blob 存储可能需要更改应用程序代码,但使用文件存储,您可以将应用程序迁移到支持 SMB 的任何其他平台(假设您使用的是本机文件应用中的系统 API)

【讨论】:

这里的价格是一个很大的因素(目前大约相差 5 倍),另外值得一提的是文件存储的 5TB 限制。 旧帖,但我今天第一次阅读。默认情况下,标准价格层有 5TB 的限制,但可以通过切换到 100TB 的限制来更改。注意* 在帐户上启用大文件共享是 Azure 存储帐户上的一个不可逆转的过程。 docs.microsoft.com/azure/storage/files/…【参考方案3】:

Azure 文件服务更多地针对内部文件处理。内部是指将目录安装到云中或本地的虚拟机上,以便可以将其加载到后端(基于 SMB 的协议)。

对于与最终用户(网络或应用程序)共享文件,使用 blob 存储可能更有意义,因为这简化了通过 URL 下载并通过共享访问签名保护下载。

这篇文章分享了更多关于比较的细节(在底部):https://blogs.msdn.microsoft.com/windowsazurestorage/2014/05/12/introducing-microsoft-azure-file-service/

【讨论】:

嗨 Clemens Schotte,blob 存储允许通过 url 下载是什么意思你的意思是文件存储不提供 url 自这些帖子以来,有些事情发生了变化,但文件服务确实支持通过 URL 和其他 REST API (docs.microsoft.com/en-us/azure/storage/common/…) 下载。此外,安全性似乎处于存储帐户级别,因此 Blob 和文件服务之间应该非常相似 (docs.microsoft.com/en-us/azure/storage/common/…)。

以上是关于Azure Blob 存储与文件服务 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将文件从 Azure 存储 blob 移动到 Ftp 服务器

从 SFTP 服务器将文件上传到 Azure 存储 Blob

何时使用 Azure Blob 存储与 Azure 文件共享?

使用服务帐户从 Azure Blob 存储中批量删除文件

与 v11 相比,使用 v12 将文件上传到 Azure Blob 存储 SDK 的 ASP.NET Core 使用更高的内存

C# MVC Web 应用服务连接到 Azure 存储 Blob