系统极客一直在努力
专注于操作系统及软件使用教程

Microsoft Azure存储服务:存储类型与访问

Microsoft Azure

在上次的文章中我们对 Microsoft Azure 存储服务进行了简介概述,本文我们将更深入地探讨不同的 Microsoft Azure 存储服务类型,并介绍如何对 Microsoft Azure 存储中的各类型数据进行访问。

Azure存储提供哪些服务

Azure 存储将不同的服务类型抽象成了 blobs、表(table)、队列(queue)和文件(file)这几大类型,下面我们分别对其进行简要介绍:

  • Blob:Blob 存储主要用于存储非结构化内容,如文档、图片、文字和视频等。它使用容器(container)对用户数据进行组织,自身又分为区块 blob(block blob)、附加 blob(append blob)和分页 blob(page blob)共 3 种类型。
  • :Azure 表存储具有 NoSQL 的结构化关键属性,允许对大量数据进行快速操作和访问。
  • 队列:无论你的应用程序跑在云中、本地数据中心还是移动设备上,Azure 队列存储都提供了灵活的异步消息传递解决方案。
  • 文件:Azure 存储服务中也提供了基于(SMB 的)文件共享方案,说直白一点就是基于云存储的 SMB 2.1 和 SMB 3.0 文件共享。Azure 文件共享可以直接 mount 到 Azure VM 的 Linux 和 Windows 虚拟机上进行访问,咱们系统极客的数据库和网站就是备份到 Azure 文件存储中的。

访问Azure存储数据

Azure 存储采用了全局的 DNS 名称空间,其 URI 主要由 3 个部分组成:

http(s)://AccountName.<services>.core.windows.net/PartitionName/ObjectName

在公共访问 Azure 存储数据时需要解析 DNS 主机名,即 URI 中的 AccountName 部分。完整的 FQDN 解析出来会指向存储数据的主区域,如果你的数据选择了多数据中心承载存储,则可能会有多个 AccountName 可用。

第二部分的 services 用于表明不同存储服务类型,例如下面截图是 Blob 存储,则会用 blob 进行替代。如果是文件共享服务,则是 http(s)://AccountName.file.core.windows.net/XXXX。

microsoft-azure-storage-type-2

Azure 存储账户内的数据资源都通过 REST API 暴露,所以管理人员可以轻松使用 Azure Protal 或各种工具进行管理,开发人员也可从容使用兼容 HTTP/HTTPS 协议的客户端进行数据操作。

大多数时候 REST 是我最喜欢和常用的访问方法,也可以使用 PowerShell 3.0 自带的 Invoke-RestMethod cmdlet 通过 RESTful 发送基于 HTTP 或 HTTPS 的请求给后端服务。

下面是访问由 RESTful 暴露后端资源的一些基本 HTTP 动作:

  • GET
  • PUT
  • DELETE
  • POST

当你需要通过 REST 处理 Azure 存储的操作时,例如设置 blob 属性,需要使用 MSDN 文档指定属性并使用 PUT 方法。

microsoft-azure-storage-type-3

微软还提供了众多客户端支持库,例如 .NET、Java、Node.JS 和 Android 等等,可以直接在 Azure 下载中心或在 GitHub 上搜索所需语言或平台的 SDK 和工具。

对于普通用户和 IT 管理员的常规管理工作而言,还有一大堆免费或付费工具可选。Azure Storage Explorer 就是一款支持 Windows、Mac OS 和 Linux 的 Azure 存储图形化资源交互客户端。Cerebrata 开发的 Azure Explorer 也是一款非常强大的图形化 Azure 存储客户端,它支持搜索和筛选 blob,不过费用有点高。虽然没有图形界面点击操作方便,其实 PowerShell 和 Azcopy 组合才是 Azure Storage 最强大的客户端,更多 Azure 存储工具大家可以访问 Azure Storage Tools 选择

数据安全和可靠性

我们的文章中经常提到,大规模应用一定需要精心的设计和高可用性选项。目前 Microsoft Azure 的大部分服务都考虑到了可靠性和容灾,Microsoft Azure 存储服务这种最最基础的存储服务更是需要高可靠性、可扩展性和高 SLA 作为保障。

为了保证持久高可用并满足 SLA,在用户首次创建「存储账户」时就会让用户选择「Azure Storage 复制」选项(选定之后可更改)。

microsoft-azure-storage-type-4

本地冗余存储(LRS)

LRS 是最低可选的数据复制级别,它会在同一 region(数据中心区域)范围内对存储的数据进行复制保存。用户对数据的每一次操作和变化都将复制到同一 region 的 3 个不同故障域(FD)和升级域(UD)中。关于 FD 和 UD 的更多信息和解释可以参考这篇文章

该存储的单位价格也是所有复制选项中最低的,只能保证在单 region 范围内实现三副本容灾。

区域冗余存储空间(ZRS)

ZRS 会在一至两个 region 的二或三个设备中复制数据,比 LRS 有更高的可靠性,不过只适用于 blob 存储。

异地冗余存储(GRS)

异地嘛,表明有两个 region 参数到数据的冗余备份复制当中。而且 Azure 全球的数据中心至少都是两两建设,相隔至少数百英里互为冗余。启用 GRS 的存储账户会先在本地(主要区域)的 3 个不同 FD 和 UD 中更新数据,再到另一个(次要区域)的 3 个不同 FD 和 UD 中更新数据,也就是说用户数据会在两个不同数据中心存储 6 份副本。

读取访问权限异地冗余存储(RA-GRS)

RA-GRS 与 GRS 在存储机制上完全一致,唯一不同的是 RA-GRS 提供了次要区域的只读访问权限。如果主要区域的访问端点为 sysgeek.blob.core.windows.net,则次要区域的只读访问端点则为 sysgeek-secondary.blob.core.windows.net。

不同的数据冗余和可靠性复制级别的存储费用单价也是不同的,大家在创建存储时会有相应的价格提示。微软对不同 Azure 存储复制级别所保障的 SLA 也是不同的,大家可以参考官网的细节说明

分享到:更多 ()