帖子

如何在Apache Pulsar中实现异步复制

David Kjerrumgaard为那些仍在学习使用该平台作为数据备份策略一部分的人解释了异步复制在Apache Pulsar中的工作原理。

这篇文章摘自阿帕奇脉冲星正在运行,讨论了Apache Pulsar中的异步复制模式以及如何实现它们。按照这个链接然后打35%的折扣阿帕奇脉冲星正在运行在所有格式中输入“ttkjerrumgaard”到折扣代码框在结帐。

异步geo-replication模式

异步复制在美国,Pulsar为租户提供了很大程度的灵活性,以定制他们的复制策略。这意味着应用程序能够设置跨多个数据中心的active-active和全网格复制、active-standby复制和聚合复制。让我们快速了解一下如何在内部实现这些模式Apache脉冲星

这辆geo-replication用途

在脉冲星中,异步地球复制是基于每个租户进行控制的。这意味着geo-replication只能在两者之间启用集群创建租户时,该租户允许访问所涉及的所有集群。为了配置这辆Geo-Replication用途,您需要指定一个租户可以通过pulse -admin CLI访问哪些集群,如清单1所示,其中显示了创建一个新租户并仅授予其访问us-east和us-west集群的权限的命令。

清单1。授予租户对集群的访问权限

$ /pulsar/bin/ pular -admin租户创建客户\ #A——允许集群us-west,us-east \ #B——admin-role test-admin-role

创建一个名为customers的新租户
#B只允许租户访问这两个集群。

现在已经创建了租户,我们需要在名称空间级别配置地理复制。因此,我们首先需要使用pulse -admin CLI工具创建名称空间,然后使用set-clusters命令将名称空间分配给一个集群(或多个集群),如清单2所示。

清单2。为集群分配命名空间

$ /pulsar/bin/pulsar-admin namespaces set-clusters customers/orders \——clusters us-west,us-east,us-central
阿帕奇脉冲星正在运行

默认情况下,如清单2所示,一旦在两个或多个集群之间配置了复制,发布到一个集群中名称空间内的主题的所有消息都会异步复制到列表中的所有其他集群。因此,默认行为是有效地全网格复制名称空间中的所有主题,并在多个方向发布消息。当你只有两个集群,那么默认的行为可以被认为是一个active - active集群配置,数据可以在两个集群服务客户,在单个集群出现故障时,所有的客户端可以被重定向到剩下的活跃集群没有中断。

图1双向复制
图1所示。默认行为是所有集群之间的全网格地理复制。发布到us-east集群命名空间中的主题的消息将被转发到us-west和us-central集群。

除了全网格(active-active)地理复制,还有一些其他的复制模式可以使用。另一个常见的灾难恢复是- standby复制模式。

- standby geo-replication

在这种情况下,您希望在不同的地理位置上保留集群的最新副本,以便在发生故障时能够以最小的数据损失或恢复时间恢复操作。

由于Pulsar不提供指定名称空间单向复制的方法,完成此配置的唯一方法是将客户机限制在称为“活动”集群的单个集群中,并仅在发生故障时将它们全部故障转移到备用集群。通常,这可以通过负载均衡器或其他网络级机制来完成,这些机制使转换对客户机透明,如图2所示。脉冲星客户端将消息发布到活动集群,然后复制到备用集群进行备份。

图2主备场景
图2。您可以使用异步地理复制来实现一个主备场景,其中给定命名空间中的所有数据都被转发到一个集群,该集群只在发生故障时使用。

正如你可能已经注意到的,脉冲星数据的复制仍然是双向的,这意味着美国西部的星团将试图将它在中断期间接收到的数据发送到美国东部的星团。如果故障与脉冲星星团中的一个或多个组件有关,或者美东星团的网络无法到达,等等,这可能会有问题。因此,您应该考虑在脉冲星生成器中添加选择性复制代码,以防止美国西部星团试图复制消息到美国东部星团,而美国东部星团很可能已经死亡。

您可以通过直接在应用程序级别为消息指定复制列表来有选择地限制复制。清单3中的代码显示了生成只会复制到us-west集群的消息的示例,这是active-standby场景中需要的行为。

清单3。每个消息的选择性复制

列表
          restrictDatacenters = Lists.newArrayList(“美国西”);Message Message = MessageBuilder.create() ... .setReplicationClusters(restrictDatacenters) .build();producer.send(消息);

有时,为了聚合目的,您希望将来自多个集群的消息输送到单个位置。例如,从所有地理区域收集所有支付数据进行处理和收集,等等。

聚合geo-replication

假设我们有三个集群积极服务于所有客户在各自的区域,和第四个脉冲星集群命名为“内部”,从网络完全隔离,只能通过内部员工用于聚合的数据从所有客户服务脉冲星集群,如图3所示。为了实现聚合Geo-Replication在这四个集群中,您需要使用清单4中所示的命令,该命令首先创建“e -payment”租户,并授予对所有集群的访问权。

图3聚合地理复制配置
图3。一个聚集的地理复制配置,将信息从3个面向客户的脉冲星星团输送到一个内部脉冲星星团进行聚集和分析。

接下来,您需要为每个客户服务集群创建一个名称空间,例如E-payments/us-east-payments。不能使用e -payment /payment这样的名称空间,因为如果尝试使用它,会导致完全网格复制,因为每个集群都有这个名称空间。因此,为了使其工作,需要每个集群的名称空间。

清单4。聚合器geo-replication

脉冲星/ bin / pulsar-admin租户创建网络支付\ #——allowed-clusters美国西,美国东部,美国中央,内部/脉冲星/ bin / pulsar-admin名称空间创建网络支付/ us-east-payments # B /脉冲星/ bin / pulsar-admin名称空间创建网络支付/ us-west-payments /脉冲星/ bin / pulsar-admin名称空间创建网络支付/ us-central-payments脉冲星/ bin / pulsar-admin名称空间set-clusters \ # C网络支付/ us-east-payments——美国东部,集群内部/脉冲星/ bin / pulsar-admin名称空间set-clusters \ # D网络支付/ us-west-payments——集群于内部/脉冲星/ bin / pulsar-admin名称空间set-clusters \ # E集群网络支付/ us-central-payments——美国中央内部的

如果你决定实施这一模式和你打算运行应用程序的相同副本在所有客户服务集群,然后确保主题名称可配置的应用程序运行在美国东部知道内部消息发布到主题us-east-payments名称空间,等等。否则,复制将无法工作。

关于作者:
David Kjerrumgaard是Streamlio解决方案架构总监,也是Apache Pulsar和Apache NiFi项目的贡献者。

深入了解数据缩减和重复数据删除

搜索灾难复苏
搜索存储
搜索聚合基础设施
搜索通道
关闭
Baidu