我正在寻找在多个部署环境中跨Azure的多个角色进行相互通信的最佳实践。
我们有以下部署环境
在所有这些部署中,我们有多个Web角色以及工作者角色。
我正在寻找为每个部署创建唯一标识符的最佳实践,以便我们可以跨每个部署的角色进行相互通信。
例如,如果我使用天蓝色队列或服务总线,我如何唯一地识别每个部署,以便消息不会从一个环境跨越到另一个环境?
谢谢, 诺姆
答案 0 :(得分:0)
您可能希望查看Azure Service Runtime中可用的名为RoleEnvironment.DeploymentId的全局静态变量。
此变量对于每个部署的Azure服务都是唯一的(注意,而不是角色)。
警告:
1)如果每个角色需要一个唯一编号,请将RoleName附加到此变量:RoleEnvironment.CurrentRoleInstance.Role.Name
2)本地开发模式下的部署遵循不同的命名约定,并且不返回部署ID的Guid。可能想为他们实施Guid生成策略。
答案 1 :(得分:0)
一个更好的选择,我们在Dev,Test&产品环境 - 简单地创建Dev,Test&产品储存容器和服务总线。我们使用每个构建环境的服务配置定义来控制正在使用的容器/总线。如果您使用诊断程序,这一点尤为重要,您确实应该使用单独的容器进行诊断。
答案 2 :(得分:0)
您可能希望将这组服务分组到单个Cloud Service(或可能是VNet)中,然后在内部使用WCF(net.tcp)通信。
忽略图片中的“VPN”部分 - 这与我在文章中提到的一些特定内容有关。