我需要能够在Azure上定位特定的Web角色实例。我们有一个数据缓存,偶尔我需要能够在缓存过期时转储缓存。
为此我们一遍又一遍地翻页并检查
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Id
我们检查是否从0更改为1以确保在两个实例上转储缓存。这不是一个理想的解决方案。我真的希望能够将请求定向到Instance 0或Instance 1。
有没有办法专门将请求定位到实例?
答案 0 :(得分:3)
不,你不能真的,即使你可以,它仍然似乎不可扩展。我建议你稍微分一点。方式:而不是知道有多少台服务器以及如何到达每台服务器,而只是拥有一个Azure Service Bus主题。然后,Web应用程序的部分启动逻辑将消失,并订阅此主题。接下来,当需要清除某些内容时,您会向主题发送一条消息。然后,该消息将被分散到每个订阅者(正在侦听的Web应用程序实例),而这些订阅者将负责从其本地缓存中清除指定的缓存条目。
邮件的内容将取决于您的缓存方案,但我想它需要包含的所有内容都是您要强制刷新的缓存项的关键。
答案 1 :(得分:3)
Drew的答案很好,但也可以直接处理个别实例。查看InstanceInputEndpoint - http://msdn.microsoft.com/en-us/library/windowsazure/gg557553.aspx#InstanceInputEndpoint。
这允许您为所有实例指定端口范围,然后在该范围内,您可以使用正确的端口号来寻址每个实例。
答案 2 :(得分:0)