跳到主要内容

复制最佳实践

本节提供了配置数据中心复制的推荐做法。在阅读这些最佳实践之前,请确保您也理解了灾难恢复中数据中心复制所描述的复制概念。此外,您还应该理解事务的使用和复制模式如何影响复制过程。这些概念在《复制工作原理》和《同步和异步消息复制》中有详细讨论。

不要混合消息类型

我们建议您不要混合消息类型。特别是,在单个端点上混合以下类型的信息可能会造成复杂性:

  • 复制和非复制消息
  • 事务性和非事务性消息

如果混合了复制和非复制消息,端点将在活动和备用站点上有不同的消息集。在发生复制故障转移到备用站点的情况下,客户端将在端点上有不同的消息需要消费,这很可能会让客户端应用程序难以处理。此外,在之前活动(现在是备用)站点上的端点中的非复制消息不能保证被保留(因为它们从未打算被复制),并且最终将从备用事件代理上的端点中清除,因为从新活动站点上的该端点消费了更新的复制消息。这意味着在恢复到原来的活动站点时,这些消息可能或可能不在端点中。

如果端点受到事务性和非事务性操作的混合,那么可能会出现交付延迟,特别是在使用同步事务和复制服务降级时。如果启用了 reject-msg-when-sync-ineligible 选项,问题会更严重。

使用复制特定的主题层次结构

为了防止在端点上混合消息类型时出现的复杂性,我们建议您使用按类型分类消息的主题结构。我们推荐一个按以下方式分类消息的主题层次结构:

  • 将保证消息分类为:
    • 不复制
    • 同步复制
    • 异步复制
  • 直接消息
  • 来自特定配对复制站点的消息(例如,配对的纽约和波士顿复制站点)
  • 来自不同发布者的消息

例如,实现所有这些功能的主题层次结构将具有以下主题前缀:

<Rep_site_pair>/<pubId>/MODE_DIRECT/<app-topic>
<Rep_site_pair>/<pubId>/MODE_GM_SF/REPL_NONE/<app-topic>
<Rep_site_pair>/<pubId>/MODE_GM_SF/REPL_AYNC/<app-topic>
<Rep_site_pair>/<pubId>/MODE_GM_SF/REPL_SYNC/<app-topic>

对于偏好短主题的部署,主题可以做得不那么冗长。例如,<Rep_site_pair>/<pubId>/GM_SF/S/<app-topic>

创建这样的层次结构提供以下好处:

  • 它简化了复制主题订阅的配置——每个复制消息 VPN 只需要添加两个订阅即可复制所有消息:
solace(configure/message-vpn/replication)# create replicated-topic */*/MODE_GM_SF/REPL_ASYNC/>
solace(...sage-vpn/replication/replicated-topic)# exit
solace(configure/message-vpn/replication)# create replicated-topic */*/MODE_GM_SF/REPL_SYNC/>
solace(...sage-vpn/replication/replicated-topic)# replication-mode sync
solace(...sage-vpn/replication/replicated-topic)# exit
  • 它防止了由于主题匹配而意外提升或降级消息(例如,将非持久消息转换为直接消息)。如果直接消息消费者只订阅 */*/MODE_DIRECT 主题,而保证消息消费者只订阅 */*/MODE_GM* 主题,则避免了提升和降级。
  • 配对复制站点前缀允许创建没有转发循环的桥接网络。
  • 发布者可以轻松地使用最后值队列(LVQs)来确定他们最后发布的消息,方法是将 LVQ 的订阅设置为 <Rep_site_pair>/<pubId>/>

最后三点为所有基于 Solace 的解决方案提供了好处,不仅仅是使用复制的解决方案。对于非复制解决方案,配对复制站点前缀将成为特定于虚拟路由器的前缀。

对于直接发布到队列而不是发布到映射到队列的主题的应用程序,可以通过配置队列的唯一主题(#P2P/QUE/<queue-name>)来复制发布的消息。

确保足够的网络带宽

当您部署复制时,必须有足够的网络带宽来容纳所有复制主题的发布消息速率。如果您使用事务,则需要一些额外的开销。复制队列可以吸收超过可用带宽的消息突发,但重要的是,活动和备用站点之间的网络连接要足够快以跟上复制数据。如果需要,可以在复制桥连接上启用压缩。

如果复制站点之间的安全性是一个问题,可以在复制桥上启用 SSL 加密。

注意复制所使用的系统资源

当在事件代理上启用复制设施时,复制设施会消耗一些系统资源,因为事件代理会自动创建以下对象:

  • 一个用于复制设施的消息 VPN 桥,加上每个复制消息 VPN 的一个消息 VPN 桥
  • 每个复制消息 VPN 的一个队列
  • 每个复制消息 VPN 的一个队列主题订阅

这些系统创建的对象的名称都以 # 字符开头(例如,复制桥是 #MSGVPN_REPLICATION_BRIDGE)。作为复制设施成功操作所需的对象,您不能删除或直接编辑它们。

当启用 Config-Sync 设施时,事件代理也会自动创建一些消耗系统资源的对象。有关信息,请参阅 Config-Sync 所使用的系统资源。

如果正在复制本地或 XA 事务,那么在活动和备用站点上将使用额外的事务资源来复制事务。

确保两个站点都有充足的资源

使用复制时,您必须确保一个事件代理所使用的消息 VPN 级别和系统级别的资源不超过另一个复制站点的事件代理所能支持的资源。例如,考虑这样一种情况:在主站点使用的事件代理比在备份站点的事件代理具有更高的客户端连接容量。在发生故障转移的情况下,可能不是所有的客户端都能连接到备份站点。