跳到主要内容

同步和异步消息复制

复制可以在以下两种模式中进行:

  • 同步复制 - 消息或事务在被确认存储在活动站点和备用站点之前,不被认为是持久化的。虽然提供更大的保证,即在不受控制的故障转移中发布的消息或事务不会丢失,但同步复制对发布者来说会有一定的性能损失,特别是阻塞发布者。这是因为发布者必须等待两个复制站点之间的通信完成后,才能发布下一条消息或事务。在这些用例中,单个发布者的最大消息速率受到活动站点和备用站点之间往返时间和可用带宽的限制。

  • 异步复制 - 一旦消息或事务存储在活动站点,并放入活动站点的复制队列(#MSGVPN_REPLICATION_DATA_QUEUE)中以交付给备用站点,就被认为是持久化的。这种类型的复制提供了更好的性能,因为它不需要等待与备用站点的通信完成,但在活动站点发生不受控制的故障时,存在一种可能性,即客户端已被告知已完成的消息或事务尚未交付给备用站点。在这种不受控制的情况下,消息或事务可能会丢失或重复。

非事务性消息

在使用非事务性消息时,复制主题订阅被配置为使用同步或异步复制模式。如果发布的消息匹配被配置为同步的复制主题订阅,那么该消息在存储在活动站点和备用站点之前不会被确认。发布到异步主题的消息一旦存储在活动站点并放入复制队列以交付给备用站点后就会被确认。如果消息同时匹配同步和异步复制主题订阅,将使用同步复制。

事务

在使用事务时,复制模式是在消息 VPN 级别设置的。消息 VPN 中的所有本地和 XA 事务使用相同的复制模式。同步事务必须在响应客户端之前存储在备用站点。异步事务只需要存储在复制队列中。在使用事务时,复制主题订阅的复制模式被忽略。

降级到异步复制

使用同步复制时,如果复制桥连接非常慢或中断,代理可能无法处理复制的消息和事务。为了继续处理消息和事务,默认情况下,消息 VPN 切换到异步复制。消息 VPN 随后被认为是“同步不合格”的,复制服务被认为是降级的。在那时,所有发布的消息如果匹配同步复制主题订阅并且在同步事务中,都将以异步方式处理。

这种行为有助于避免在备用站点暂时无法访问时业务中断。

当以下任何情况发生时,复制服务被认为是降级的:

  • 复制桥与复制队列断开连接。
  • 消息可以放入复制队列但不能立即(流式传输)发送到复制伙伴,因为链路慢或复制队列积压。这种状态必须持续30秒,复制才被认为是降级的。
  • 放入复制队列的消息可以立即发送,但在30秒内没有被复制伙伴确认(因此需要重传)。这种状态必须持续30秒,复制才被认为是降级的。

事件代理在它在同步合格和不合格(即,降级或未降级)之间转换时生成通知事件。

防止降级到异步复制

如果异步复制相关的风险是不可接受的,可以确保始终严格强制执行同步复制。为了保持同步复制模式,您可以为消息 VPN 启用 reject-msg-when-sync-ineligible 选项。启用此选项后,如果无法成功存储在活动站点和备用站点上,同步复制的消息或事务将被拒绝。