刷新所有 Azure 实例中的数据的最佳方式是什么?
我有多个实例,每个实例都运行相同的 Web 角色。角色启动时,数据从 Blob 存储读取到本地存储。网站使用的数据会间歇性地有新的更新。我希望能够以编程方式通知每个实例,将更新后的数据从 Blob 存储获取到实例的本地存储中,以便每个实例都得到刷新。
一个想法是编写一个自定义客户端程序来调用 Web 角色上的 Web 服务,并传入要更新的角色 ID。如果端点是角色 ID,则实例会自行刷新。如果没有,客户端会再次尝试,直到所有实例报告它们已刷新。这是一个好方法还是 Azure 中有内置方法可以实现此目的?
我考虑过使用一个单独的线程来间歇性地检查刷新标志,但我担心我的实例会变得不同步。
数据量并不大,所以我可以将其放入 Azure 缓存中。但是,我担心使用缓存的网络延迟。 Azure 缓存可以很好地处理这个问题吗?
另一个想法是依次重新启动实例(在角色启动时执行刷新操作)。
最佳答案
我认为您可以执行此操作的一种可能方法是在配置设置中使用设置(例如时间戳) - 然后您可以以编程方式更新配置并使用 RoleEnvironment.Changing 事件来监视所有更改实例 - http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleenvironment.changing.aspx
如果您执行此操作,请确保拦截所有角色中的事件 - 并确保解析更改(查找 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironmentConfigurationSettingChange)并向 Cancel 参数返回 false 以防止实例重新启动.
关于azure - 刷新所有 Azure 实例上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398627/