Azure服务总线会话状态可靠性

zujrkrfu  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(155)

我正在考虑利用由azure函数支持的azure服务总线会话作为运行工作流/sagas的协调器,其中工作流的每个步骤都是azure服务总线主题/azure函数。
我相信服务总线会在启用会话时触发函数,服务总线负责挑选/锁定Azure函数消费者(可以是在应用服务计划中运行的100个示例中的任何一个)。没有两个消费者可以从同一会话接收消息。是否有可能失败并破坏会话状态的情况?
在弹性方面,在启用了区域冗余和主题分区的高级层上,如果运行服务总线的服务器/VM停机,是否存在存储在Azure服务总线上的会话状态可能丢失的情况?如果是,除了确保可靠性之外还需要做什么。此外,在发生区域性灾难恢复中断时,保护此事务会话状态沿着主题/订阅中的消息的规定是什么?
我试图遵循@Sean Feldman在https://weblogs.asp.net/sfeldman/sagas-with-azure-service-bus中给出的例子。

qlvxas9a

qlvxas9a1#

没有两个消费者可以从同一个会话接收消息。是否有可能失败并破坏会话状态的情况?
没有两个并发的接收者(函数)会消耗来自同一个会话的消息。如果会话中没有消息,在会话超时(可以配置)之后,函数示例将移动到下一个可用的会话。
在弹性方面,在启用了区域冗余和主题分区的高级层上,如果运行服务总线的服务器/虚拟机停机,是否存在存储在Azure服务总线上的会话状态可能丢失的情况?
Azure服务总线不是在单个服务器/虚拟机上运行。它比这稍微复杂一些。具有可用性区域和分区有助于解决停机问题。如果发生真实的的灾难(认为哥斯拉正在访问数据中心),截至今天,没有数据平面恢复,只有元数据平面。您的实体将故障转移到辅助名称空间,但不会故障转移到消息。不过,提醒一下,这必须是一个真实的的灾难性事件才能摧毁数据中心。
此外,在发生区域性灾难恢复中断时,保护此事务会话状态沿着主题/订阅中的消息的规定是什么?
会话状态就像服务总线存储中的另一条消息一样,受相同的规则和约束的约束。

相关问题