Azure Web PubSub 中的异地复制

任务关键型应用通常需要具有可靠的故障转移系统,并更靠近用户的位置提供服务。 在发布异地复制功能之前,开发人员需要部署多个 Web PubSub 资源并编写自定义代码来协调资源之间的通信。 现在,通过 Azure 门户快速配置,可以轻松启用此功能。

使用异地复制的好处

  • 对区域中断的适应性更强: 如果发生区域性服务中断,客户端将自动路由到正常的副本。
  • 跨区域通信: 开发人员像往常一样使用启用了异地复制的资源,即使幕后有多个资源也一样。 跨副本的通信由服务处理。
  • 提高了网络速度:地理位置分散的客户端会连接到最近的副本。 这些副本通过 Azure 全球网络主干进行通信,确保网络快速稳定。
  • 易于管理。 所有副本共享主 Web PubSub 资源的配置。

先决条件

示例用例

Contoso,一家社交媒体公司

Contoso 是一家社交媒体公司,其客户群遍布美国和加拿大。 Contoso 为其用户提供移动和 Web 应用,以便他们可以相互连接。 Contoso 应用程序部署在中国北部。 作为 Contoso 体系结构的一部分,Web PubSub 用于在客户端应用和应用程序服务器之间建立持久的 WebSocket 连接。 Contoso 的优点是可以将 WebSocket 连接管理卸载到 Web PubSub,但缺点是加拿大用户阅读报告会遇到较高的延迟。 此外,Contoso 的开发团队希望确保应用免受区域性中断的影响,以便用户访问应用而不会中断。

示意图显示了使用一个 Azure WebPubSub 实例处理来自两个国家/地区的流量。

Contoso 可以在加拿大中部建立另一个在地理上更接近其加拿大用户的 Web PubSub 资源。 但是,管理多个 Web PubSub 资源会带来一些挑战:

  1. 需要实施跨区域通信机制,以便加拿大和美国的用户可以相互交互。
  2. 开发团队需要管理两个单独的 Web PubSub 资源,每个资源都有不同的域和连接字符串。
  3. 如果发生区域性服务中断,则需要将流量定向到可用资源。

上述所有资源都使工程资源无法专注于产品创新。

示意图显示了使用两个 Azure WebPubSub 实例处理来自两个国家/地区的流量。

利用异地复制功能

借助异地复制功能,Contoso 现在可以在加拿大中部建立副本,从而有效地克服上述挑战。 开发人员团队很高兴地发现他们不需要进行任何代码更改。 只需单击 Azure 门户上的几个按钮即可。 开发人员团队也很高兴与利益干系人分享,因为 Contoso 计划进入欧洲市场,他们只需在欧洲添加另一个副本。

示意图显示了使用一个具有副本的 Azure WebPubSub 实例处理来自两个国家/地区的流量。

如何在 Web PubSub 资源中启用异地复制

若要在 Azure 区域中创建副本,请转到 Web PubSub 资源,并在 Azure 门户上找到“副本”边栏选项卡,然后单击“添加”以创建副本。

屏幕截图显示了在门户上创建 Azure Web PubSub 副本。

创建副本后,可以通过单击副本名称在门户上查看/编辑副本。

屏幕截图显示了 Azure Web PubSub 副本资源的概述边栏选项卡。

注意

  • 副本计数目前限制为每个主资源最多 8 个。

定价和资源单元

每个副本都有其自己的 unitautoscale settings

副本是 Azure Web PubSub 服务的高级层的一项功能。 每个副本根据其自己的单元和出站流量单独计费。 免费消息配额也是单独计算的。

在前面的示例中,Contoso 在加拿大中部添加了一个副本。 Contoso 将根据其单位和消息在高级价格中支付加拿大中部的副本费用。

跨区域出站流量将收取出口费用。 如果消息跨副本传输并且在传输后成功发送到客户端或服务器,则该消息将按出站消息计费。

删除副本

为 Web PubSub 资源创建副本后,如果不再需要,可以随时将其删除。

若要在 Azure 门户中删除副本:

  1. 导航到 Web PubSub 资源,然后选择“副本”边栏选项卡。 单击要删除的副本。
  2. 单击副本概述边栏选项卡上的“删除”按钮。

使用 Azure CLI 删除副本:

 az webpubsub replica delete --replica-name MyReplica --name MyWebPubSub -g MyResourceGroup

了解异地复制功能的工作原理

Azure Web PubSub 副本体系结构的示意图。

  1. 客户端解析 Web PubSub 服务的完全限定域名 (FQDN) contoso.webpubsub.azure.com。 此 FQDN 指向流量管理器,该管理器返回最近的区域 Web PubSub 实例的 Canonical 名称 (CNAME)。
  2. 使用此 CNAME,客户端建立与区域实例(副本)的 Websocket 连接。
  3. 这两个副本会相互同步数据。 必要时,发送到一个副本的消息会被传输到其他副本。
  4. 如果副本未通过流量管理器 (TM) 执行的运行状况检查,TM 会从域解析结果中排除失败实例的终结点。 有关详细信息,请参阅下面的复原能力和灾难恢复

注意

  • 在数据平面中,主 Azure Web PubSub 资源与其副本相同

复原能力和灾难恢复

Azure Web PubSub 服务利用流量管理器对副本进行运行状况检查和 DNS 解析。 正常情况下,当所有副本都正常运行时,客户端会被定向到最近的副本。 例如:

  • 靠近 chinaeast 的客户端会被定向到 chinaeast 中的副本。
  • 同样,靠近 chinanorth 的客户端会被定向到 chinanorth 中的副本。

如果 chinaeast2 发生区域性服务中断(如下所示),流量管理器会检测到该区域的运行状况检查失败。 然后,该故障副本的 DNS 就会被从流量管理器的 DNS 解析结果中排除。 在设置为 90 秒的 DNS 生存时间 (TTL) 过后,chinaeast 中的客户端会被重定向以与 chinanorth 中的副本连接。

Azure Web PubSub 副本故障转移的示意图。

一旦 chinaeast 中的问题得到解决并且该区域重新联机,运行状况检查就会成功。 然后,chinaeast 中的客户端会再次被定向到其区域中的副本。 此转换是平稳的,因为在关闭这些现有连接之前,连接的客户端不会受到影响。

Azure Web PubSub 副本故障转移恢复的示意图。

此故障转移和恢复过程是自动的,不需要手动干预。

禁用或启用副本终结点

设置副本时,可选择启用或禁用其终结点。 如果禁用,则主要 FQDN 的 DNS 解析不包括副本,因此不会将流量定向到该副本。

Azure Web PubSub 副本终结点设置的示意图。

还可在创建终结点后启用“禁用终结点”。 在主资源的副本边栏选项卡上,单击副本右侧的省略号按钮,然后选择“启用终结点”或“禁用终结点”

Azure Web PubSub 副本终结点修改的示意图。

删除复制之前,请考虑先禁用其终结点。 随着时间的推移,现有连接将断开连接。 由于没有新的连接,因此复制最终会处于空闲状态。 这可确保无缝的删除过程。

此功能还可用于排查区域问题。

注意

  • 由于 DNS 缓存,DNS 更新可能需要几分钟才能生效。
  • 现有连接在断开连接之前不会受到影响。

启用异地复制功能后对性能的影响

启用副本后,客户端会自然地根据地理位置进行数据分配。 虽然 Web PubSub 负责在这些副本之间同步数据,但我们会很高兴地告诉你,对于大多数常见用例而言,服务器负载的相关开销很小。

具体来说,如果应用程序通常向较大的组(大小 > 10)或单个连接进行广播,则同步对性能的影响几乎看不到。 如果向小的组(大小 < 10)发送消息,你可能会注意到同步开销会多一点。

为了确保有效的故障转移管理,建议设置每个副本的单元大小以处理所有流量。 也可以启用自动缩放来管理它。

有关更多性能评估,请参阅性能