Azure Blob存储:按地理位置复制(Azure Blob Storage: Replicating Geographically)

我在West Europe地区有一个主要blob存储,其中包含通过同一区域内的应用程序访问的用户上载文件。 如果你在East US地区,那么就会遇到高延迟。

因此,我将该应用程序的另一个实例添加到美国东部地区,并使用流量管理器根据性能在两个实例之间进行路由。 现在,美国东部地区的用户可以在自己的区域与应用程序实例进行通信。

问题是,现在美国东部的实例正在与西欧的blob商店交谈,因此应用程序会受到延迟的影响。 我可以打开西欧blob商店的地理冗余,但这基本上只是为了备份,而不是性能,因为我无法选择要复制到哪个区域。

我无法使用CDN,因为正在访问的文件是用户私有文件,我只在用户与应用程序交互时为每个URL生成共享访问签名。 (CDN仅适用于公共商店)。

那么,如何将blob商店从一个地区复制到我选择的另一个地区? 理想情况下,这将是两种方式,就像我可以为SQL-Sync做的那样。 理想的最终结果是东美实例与美国东部的一家blob商店进行谈判,其中blob与西欧主要商店同步。

I have a primary blob storage in West Europe region that contains user uploaded files accessed through a we application within the same region. This suffers from high latency, say if you're in East US region.

So I add another instance of the application to the East US region, and use traffic manager to route between the two instances based on performance. Users in the East US region now talk to the application instance in their own region.

The problem is, now the East US instance is talking to the blob store in West Europe, so the application suffers from the latency. I can turn on geo-redundancy for the West Europe blob store, but this is basically just for backup, not performance, as I can't pick which region to replicate to.

I can't use a CDN, since the files being access are the users private files, and I only generated Shared Access Signatures for each URL when the user interacts with the application. (CDNs are just for public stores).

So, how to replicate a blob store from one region to another of my choosing? Ideally this would be two way, like I could do for SQL-Sync. The ideal end result is the East US instance talks to a East US based blob store, with the blobs in sync with the West Europe primary.

最满意答案

Azure中没有内置机制来促进区域之间的blob同步(除了配对区域之间的地理复制)。 您需要在应用中实现此功能。 这个怎么做? 这是主观的,可能会邀请一个热烈的讨论(加上StackOverflow不是征求意见的地方)。

那说......从客观的角度来看,在Azure中,你最接近的内置启动器就是Service Bus,因为它支持pub / sub。 这将允许您发布与存储内容相关的消息,然后让订阅者代表每个所需区域从其自己的订阅者队列中消费这些消息并写入特定于区域的blob存储。

There's no built-in mechanism in Azure to facilitate blob sync'ing between regions (aside from geo-replication between paired regions). You'd need to implement this in your app. How to do this? That's subjective and would probably invite a lively discussion (plus StackOverflow isn't a place to solicit opinions).

That said... from an objective standpoint, the closest you'd find as a built-in enabler, in Azure, would be Service Bus, as it supports pub/sub. This would allow you to publish messages related to storing content, and then have subscribers representing each desired region consuming these messages from their own subscriber queue and writing to region-specific blob storage.

Azure Blob存储:按地理位置复制(Azure Blob Storage: Replicating Geographically)

我在West Europe地区有一个主要blob存储,其中包含通过同一区域内的应用程序访问的用户上载文件。 如果你在East US地区,那么就会遇到高延迟。

因此,我将该应用程序的另一个实例添加到美国东部地区,并使用流量管理器根据性能在两个实例之间进行路由。 现在,美国东部地区的用户可以在自己的区域与应用程序实例进行通信。

问题是,现在美国东部的实例正在与西欧的blob商店交谈,因此应用程序会受到延迟的影响。 我可以打开西欧blob商店的地理冗余,但这基本上只是为了备份,而不是性能,因为我无法选择要复制到哪个区域。

我无法使用CDN,因为正在访问的文件是用户私有文件,我只在用户与应用程序交互时为每个URL生成共享访问签名。 (CDN仅适用于公共商店)。

那么,如何将blob商店从一个地区复制到我选择的另一个地区? 理想情况下,这将是两种方式,就像我可以为SQL-Sync做的那样。 理想的最终结果是东美实例与美国东部的一家blob商店进行谈判,其中blob与西欧主要商店同步。

I have a primary blob storage in West Europe region that contains user uploaded files accessed through a we application within the same region. This suffers from high latency, say if you're in East US region.

So I add another instance of the application to the East US region, and use traffic manager to route between the two instances based on performance. Users in the East US region now talk to the application instance in their own region.

The problem is, now the East US instance is talking to the blob store in West Europe, so the application suffers from the latency. I can turn on geo-redundancy for the West Europe blob store, but this is basically just for backup, not performance, as I can't pick which region to replicate to.

I can't use a CDN, since the files being access are the users private files, and I only generated Shared Access Signatures for each URL when the user interacts with the application. (CDNs are just for public stores).

So, how to replicate a blob store from one region to another of my choosing? Ideally this would be two way, like I could do for SQL-Sync. The ideal end result is the East US instance talks to a East US based blob store, with the blobs in sync with the West Europe primary.

最满意答案

Azure中没有内置机制来促进区域之间的blob同步(除了配对区域之间的地理复制)。 您需要在应用中实现此功能。 这个怎么做? 这是主观的,可能会邀请一个热烈的讨论(加上StackOverflow不是征求意见的地方)。

那说......从客观的角度来看,在Azure中,你最接近的内置启动器就是Service Bus,因为它支持pub / sub。 这将允许您发布与存储内容相关的消息,然后让订阅者代表每个所需区域从其自己的订阅者队列中消费这些消息并写入特定于区域的blob存储。

There's no built-in mechanism in Azure to facilitate blob sync'ing between regions (aside from geo-replication between paired regions). You'd need to implement this in your app. How to do this? That's subjective and would probably invite a lively discussion (plus StackOverflow isn't a place to solicit opinions).

That said... from an objective standpoint, the closest you'd find as a built-in enabler, in Azure, would be Service Bus, as it supports pub/sub. This would allow you to publish messages related to storing content, and then have subscribers representing each desired region consuming these messages from their own subscriber queue and writing to region-specific blob storage.