如何在两个不同数据中心上托管的两个Azure存储(blob)之间进行同步

Sur*_*mar 7 azure azure-storage

我们计划将纯天然网络应用程序部署到两个独立的数据中心(一个位于西欧,另一个位于东南亚),纯粹是出于性能原因.我们允许用户上传文件,这意味着我们需要保持两个数据中心的blob存储同步.我知道Azure提供了对同步结构化数据的支持,但似乎没有对blob同步的支持.我的问题是:

是否有一种服务可以在不同的数据中心之间提供blob同步?如果没有,我该如何实施呢?我在Web上看到很多样本在Azure blob存储和本地文件系统之间同步,反之亦然,但在数据中心之间没有.

Gau*_*tri 3

是否有提供不同数据中心之间的 blob 同步的服务?

否。目前不存在这样的现成服务可以在两个数据中心之间同步内容。

如果没有,我该如何实施?

尽管您可以使用所有必要的基础设施来实现这一点,但实际的实现会很棘手。

首先,您需要决定是否需要实时同步还是批量同步?

对于实时同步,您可以信赖Async Copy Blob。使用异步复制 blob,您实际上可以指示存储服务将 blob 从一个存储帐户复制到另一个存储帐户,而不是手动从源下载 blob 并上传到目标。假设所有上传都是从您的应用程序进行的,一旦上传了 blob,您就会知道它正在上传到哪个数据中心。您可以做的是创建此 blob 的 SAS URL 并启动到其他数据中心的异步复制。

对于批量同步,您需要查询存储帐户并列出每个 Blob 容器中的 Blob。如果该 Blob 仅在一个存储帐户中可用,而在其他存储帐户中不可用,则您可以通过启动异步复制 Blob 在目标存储帐户中简单地创建该 Blob。如果两个存储帐户中都存在 Blob(同名),事情就会变得更加棘手。在这种情况下,您需要定义一些规则(例如比较修改日期等)来决定是否应将 blob 从源存储帐户复制到目标存储帐户。

为了安排批量同步,您可以使用Windows Azure Scheduler Service. 即使使用此服务,您也需要编写同步逻辑代码。调度程序服务将只处理调度部分。它不会进行实际的同步。

我建议使用辅助角色来实现同步逻辑。另一种选择是Web Jobs最近宣布的,尽管我对此不太了解。