gpt4 book ai didi

azure - Windows Azure - 无单点故障的领导者实例

转载 作者:行者123 更新时间:2023-12-05 01:18:07 24 4
gpt4 key购买 nike

我正在寻找一种在多个辅助角色实例上拥有“单例”模块的方法。我希望在 Azure 中拥有一个带有队列和多个辅助角色的并行执行模型。

这个想法是希望有一个“主”实例,也就是说检查新数据,并通过将其添加到队列来调度它,处理来自特殊队列的所有消息,该队列不由没有其他人,并且已将 Blob 存储安装为虚拟驱动器,具有读/写访问权限。

我将永远只有一个“主实例”。当该主实例由于某种原因关闭时,已经实例化的实例中的另一个实例应该很快被“选举”为主实例(几秒钟)。这应该在 Azure 环境将损坏的实例更换为新实例之前发生(大约 15 分钟)。

所以这将是某种自组织的动态环境。我正在考虑基于存储或表数据进行一些锁定。如果我们能用微处理器术语来讨论的话,就有机会设置锁定超时和某种“看门狗”计时器。

最佳答案

有一个通用方法可以实现您想要实现的目标。

首先,您的主实例。您可以根据实例 ID 进行检查。这相当容易。您需要RoleEnvironment.CurrentRoleInstance要获取“当前实例”,现在比较 Id propertyRoleEnvironment.CurrentRoleInstance.Role.Instances中得到什么第一个成员(member)由 Id 订购。像这样的东西:

var instance = RoleEnvironment.CurrentRoleInstance;
if(instance.Id.Equals(instance.Role.Instances.OrderBy(ins => ins.Id).First().Id))
{
// you are in the single master
}

现在你需要在“治疗”/回收时选举主人。您需要获取 RoleEnvironment 的 Changed事件。检查是否是TopologyChange (只需检查是否是拓扑变化,不需要确切的拓扑变化)。如果是拓扑变化——根据上述算法选举下一个master。查看this great blog post关于如何准确执行事件 Hook 和更改检测。

忘记添加。

如果您喜欢锁 - blob 租赁是获取/检查锁的最佳方式。然而,仅使用 RoleEnvironment 事件和基于实例 ID 的简单主选举,我认为您不需要那种复杂的锁定机制。此外 - 所有内容都存在于队列中,直到成功处理为止。因此,如果主节点在处理某些内容之前死亡,“下一个主节点”将处理它。

关于azure - Windows Azure - 无单点故障的领导者实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com