Azure 服务总线:高可用性

Azure Service Bus: High Availability

我目前正在构建一个混合云解决方案,需要将消息写入队列以供以后处理。队列高度可用(99.999+% 正常运行时间)是绝对必要的。

我的选择是 read/write 将消息发送到本地 ZeroMQ 高可用性对或 Azure 服务总线。我更愿意走 Azure 服务总线路线,但找不到任何关于 Azure 服务总线高可用性配置的文档。

有人成功设置了 Azure 服务总线以实现高可用性吗?我了解无法更改任何 Azure 服务的单个实例的 SLA。我更多地考虑 Azure Web 应用程序的故障转移功能。

您可以在此处找到 Azure 服务总线的 SLA:legal/sla/service-bus/v1_0/

For Service Bus Relays, we guarantee that at least 99.9% of the time, properly configured applications will be able to establish a connection to a deployed Relay. For Service Bus Queues and Topics, we guarantee that at least 99.9% of the time, properly configured applications will be able to send or receive messages or perform other operations on a deployed Queue or Topic. For Service Bus Basic and Standard Notification Hub tiers, we guarantee that at least 99.9% of the time, properly configured applications will be able to send notifications or perform registration management operations with respect to a Notification Hub. For Event Hubs Basic and Standard tiers, we guarantee that at least 99.9% of the time, properly configured applications will be able to send or receive messages or perform other operations on the Event Hub.

要以高于 SLA 值使用服务,您可以做的主要事情是确保您正在处理重试逻辑。这里的关键是任何中断的时间性质,并调整重试退避以处理边缘情况。有些使用线性或指数退避来等待更长时间以等待服务恢复。

此外,您可以在不同区域拥有多个服务总线以实现异地冗余,并在两者之间负载平衡消息或使用一个作为热备份。这可以让您避开任何区域中断,并在一个数据中心未满足其本地 SLA 时保持您的服务正常运行。

我们已经启用服务总线中继并 运行 5 年多了,并且有过一次中断。这是在提供中继的特定数据中心发生的一次中断,并触及了许多服务。之后,我们通过在不同的数据中心位置实施辅助服务总线中继命名空间来实施冗余。重新配置的代码设置为检查每个连接的连接性并切换主连接和辅助连接。我们将它们视为平等的,所以一旦我们 "failed over" 该名称空间将成为主要名称空间。

服务总线现在支持命名空间级别的异地灾难恢复和异地复制。

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-geo-dr