我的云服务默认部署了两个实例,并具有自动扩展功能,使Azure可以根据需要部署其他实例。我需要发信号通知当前正在运行的所有实例,以使其内部缓存无效。理想情况下,通过POST到面向公众的网址。但Azure负载均衡器会将请求随机路由到其中一个实例。
我可能可以利用服务总线主题/订阅来解决问题,但这看起来有点过分。有更简单的方法吗?
答案 0 :(得分:1)
RoleEnvironment.Changing Event
在将更改服务配置应用于正在运行的角色实例之前发生。
更改事件和已更改事件一起用于识别和管理服务模型的配置更改。通过使用更改事件,实例可以响应配置更改[...]
说实话,我不记得你是怎么做的,但我相信我非常接近:
private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
if ((e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)))
{
// Deal with e.Cancel
// Invalidate cache
}
}
以下是有关配置更改触发的事件的更多信息:
https://azure.microsoft.com/en-us/blog/responding-to-role-topology-changes/
下图显示了包含单个角色的示例方案中触发的事件。最初部署了2个实例,然后将部署扩展到4个实例,然后再降低到3个实例,最后部署停止。