我有一个订阅Azure服务总线主题的Bus作业。webjob自动化了一个非常重要的业务流程。对于Service bus,它是Premium SKU并配置了Geo-Recovery。我的问题是关于为我的webjob作业设置高可用性的最佳实践(以确保进程始终运行)。我已经在两个地区部署了App Service Plan,并且在这两个地区都安装了webjob。但是,我希望我在辅助区域中的due作业仅在主要区域停机时运行-可能是暂时的,因为停机。如何实现这一点?如果我并行运行这两个webjob,就会产生一些严重的重复问题。有没有我可以参考的架构模式,或者使用App Service或Azure中的任何功能来实现它?
发布于 2019-08-13 03:34:25
发布于 2019-08-13 06:40:24
由于WebJob与应用程序服务相关联,因此这实际上取决于您如何配置它。你已经提到WebJobs在两个地区,这意味着你的应用程序服务在两个地区运行。(请确保每个地域和不同可用区运行多个实例)。
现在来看看你对备用地域有什么配置。它是具有热备的主动/被动、具有冷备的主动/被动还是主动/主动。如果您的辅助区域处于活动状态,并且您至少有一个实例在运行,则您的webjob实际上正在处理消息。
我建议您通读这些模式并理解它们。
Standby Regions Configuration,Multi Region Config
关于服务总线,当您使用Peek-Lock处理消息时,这意味着消息在队列中不可见,因此不会有其他实例拾取。如果您的webjob不能及时处理,或者处理失败或崩溃,消息将在队列中再次可见,任何其他实例都可以拾取它,因此没有两个实例可以拾取相同的消息。
更好地接近
我推荐使用Azure函数来处理队列消息,.They是无服务器的产品,每月免费调用,并且具有很高的可用性。你可以在这里找到更多信息
https://stackoverflow.com/questions/57466149
复制相似问题