AoP:如何从 RabbitMQ 迁移到 Apache Pulsar

2022/12/27 18:30
阅读数 119

本文翻译自 StreamNative 博客《How to Migrate from RabbitMQ to Apache Pulsar™》,作者 David Kjerrumgaard。
本文译者 @dros6(https://github.com/dros6),译文由 StreamNative 组织整理。

RabbitMQ 是一个流行的开源消息系统,被广泛用于使用发布-订阅模型的异步服务间通信。

RabbitMQ 在设计时针对的是单台机器上的部署,但现今企业处理的数据比以往任何时候都多,创建和消费的数据量也日渐快速增长,没有放缓的迹象。很多基于旧消息技术开发关键业务应用的机构都面临着扩展性问题。

因此,各机构都在寻找云原生替代方案,而 Apache Pulsar 也越发成为首选的消息技术。Iterable 是一个每天发送大量消息的营销平台,为解决高负载的流量控制问题,它从 RabbitMQ 迁移到了 Pulsar。智联招聘是中国流行的在线招聘和求职平台,在使用 RabbitMQ 管理多种消息技术方面遇到了挑战,最终也选择了 Pulsar。这两家公司只是众多采用 Pulsar 的典型案例,它们借助 Pulsar 对消息基础设施进行了现代化改造,并大规模提高了数据弹性和可靠性。

在本博客中,我们将讨论为什么企业会选择 Apache Pulsar 进行消息传递,以及如何利用为 RabbitMQ 开发的 AMQP-on-Pulsar (AoP) 协议来实现从 RabbitMQ 到 Pulsar 的轻松迁移。

Pulsar 如何帮助公司在云端扩展

Apache Pulsar 天然云原生,让企业能够在弹性云环境中构建可扩展且可靠的消息流应用程序。Pulsar 于 2016 年开源,在 2018 年作为 Apache 软件基金会顶级项目毕业,此后其采用率飙升。2021 年,Apache Pulsar 入选 ASF 项目 Top 5 榜单[1]

虽然许多人认为 Pulsar 是一种实时数据流解决方案,但它最初是为雅虎设计的全球消息平台,同时支持数据流和消息的使用场景。

越来越多的企业采用 Pulsar 以解决异步消息和复杂消息队列的可伸缩性和可靠性问题。以下为推动 Pulsar 被采用的关键因素:

  1. 1. 多租户简化操作:Pulsar 的内置多租户架构使企业能够在共享环境中安全地部署应用程序。

  2. 2. 弹性可扩展:Pulsar 的存算分离架构提供了独立添加新 Broker 和 Bookie 的能力,实现了无缝扩展。

  3. 3. 跨地域复制容错性强:Pulsar 开箱即用地支持跨多个数据中心的异步和同步跨地域复制策略。

  4. 4. 数据保留策略成本效益高:Pulsar 的分层存储功能允许将历史数据卸载到云原生的存储系统并无限期保留事件流。

接下来将介绍一个帮助企业从 RabbitMQ 迁移到 Pulsar 的工具。

AoP 简介:RabbitMQ 的一站式协议处理器方案

替换软件堆栈的任何组件都可能会很困难,尤其是需要迁移一个或多个对业务不可或缺的应用程序时就更是如此。对于希望从 RabbitMQ 迁移到 Pulsar 的企业来说,可采用 AMQP-on-Pulsar (AoP) 协议处理器,帮助其简化迁移。

AoP 使现有的应用程序能够使用相同的 RabbitMQ 客户端库直接与 Apache Pulsar 通信:无需更改 API,也无需更改现有代码库。你只需将 AoP 协议处理器添加到现有的 Pulsar 集群中,并对配置稍作更改,就可照旧运行现有的应用程序代码。这将使你能轻松利用 Pulsar 的强大功能,例如分层存储和事件流无限期保留。

图 1:Apache Pulsar 的连接器使应用程序能够使用 AMQP 协议(RabbitMQ 也使用该协议)与 Pulsar 进行通信。

如何使用 AoP

AoP 入门流程很简单。按照下面步骤说明配置 Apache Pulsar 以支持 RabbitMQ:

1.从下载页面[2]下载并解压最新的 Apache Pulsar 二进制版本,我们将这个解压后的文件夹称为 $PULSAR_HOME。在撰写本文时,最新的稳定版本是 2.9.1。
2.从发布页面[3]下载最新二进制版本的 AoP 连接器,并将其复制到 $PULSAR_HOME/protocols 目录中。在撰写本文时,最新的稳定版本是 2.9.1.2。
3.配置 Pulsar Broker 以将 AoP 协议处理器作为插件运行,将以下配置添加到 Pulsar Broker 的配置文件中。例如,如果你计划在 Standalone 模式下运行 Broker(这很可能是笔记本电脑/开发人员的环境情况),请配置 broker.conf 或 standalone.conf 文件。

4.将 messagingProtocols 和 protocolHandlerDirectory 属性添加到 Pulsar Broker 的配置文件中。对于 AoP,messagingProtocols 的值为 amqp;protocolHandlerDirectory 的值是下载的 AoP NAR 文件目录。
5.在 Pulsar Broker 配置文件中设置 AMQP 服务监听器。请注意,监听器中的 hostname 值应与 Pulsar Broker 的 advertisedAddress 值相同,例如 amqpListeners=amqp://127.0.0.1:5672 advertisedAddress=127.0.0.1
6.使用上述配置启动 Pulsar Broker。更多详细信息,请参阅 AoP 指南[4]。如果你对 standalone.conf 文件进行了所有更改,那么你需要使用以下命令以 Standalone 模式启动 Pulsar:$PULSAR_HOME/bin/pulsar standalone
7.使用以下命令为 AMQP vhost 创建命名空间:$PULSAR_HOME/bin/pulsar-admin namespaces create -b 1 public/vhost
8.使用以下命令将刚刚创建的命名空间的数据保留策略增加到 100 MB 或 2 天:$PULSAR_HOME/bin/pulsar-admin namespaces set-retention -s 100M -t 2d public/vhost
9.现在已准备就绪,可在 Java 程序中使用 RabbitMQ 客户端(建议使用 5.8.0 或更高版本)测试 AoP 协议处理器。
10.完成 1-9 步骤后,将应用程序内 RabbitMQ 客户端使用的 Broker URL 更改为你在 amqpListeners 属性中指定的地址,例如 amqp://:5672。这能让应用程序使用 Apache Pulsar 而不是 RabbitMQ。

恭喜!完成上述步骤后,你已成功配置 Pulsar 支持 RabbitMQ。现在我们将讨论一种将生产应用程序从 RabbitMQ 迁移到 AoP 的方法。

从 RabbitMQ 迁移到 AoP 的最佳实践

从 RabbitMQ 迁移到 Pulsar 有多种选择。在此示例中,我们将引导你完成迁移过程,其中包括建立并行测试环境。并行测试环境有助于降低关键任务应用程序的潜在迁移风险。

具体步骤:

  1. 1. 使用文档中的一种安装方法[5]搭建一个新的 Apache Pulsar 集群。我们建议使用 Helm Chart 部署 Pulsar 的开源版本到 Kubernetes 环境。

  2. 2. 为 Pulsar 启用 AMQP 支持。你可以在此处[6]查阅相关步骤说明。

  3. 3. 在 Pulsar 集群上为单个应用程序复制 Topic 结构,以便你可以发布应用数据。

  4. 4. 创建应用程序代码的新分支,并将其配置更改为发送消息到 Pulsar 而不是 RabbitMQ。

  5. 5. 运行重新配置的应用程序实例,同时配置为写入 RabbitMQ 测试环境的应用程序实例。

  6. 6. 比较 Topic 的内容。

此迁移策略使你能够在迁移上线之前,验证现有的应用程序将按预期运行。此外,现有的 RabbitMQ 环境可以在出现任何不可预见的问题时充当备用环境,在必要时可恢复到安全环境。

在你对 Pulsar 上的 AMQP 设置满意之后,我们建议你开始逐个迁移应用程序,这也可以让你在较小的范围内识别任何潜在问题。

AoP 的其他资料

RabbitMQ 连接器(和其他几个连接器)完全开源,由 Apache Pulsar 社区所支持。如果你有兴趣在 Pulsar 上测试 AMQP,可以在此处查阅开源版 Pulsar[7] 或使用 StreamNative Cloud 在几分钟内迅速运行一个 Pulsar 集群。

引用链接

[1] ASF 项目 Top 5 榜单: https://thestack.technology/top-apache-projects-in-2021-from-superset-to-nuttx/
[2] 下载页面: https://pulsar.apache.org/en/download/
[3] 发布页面: https://github.com/streamnative/aop/releases
[4] AoP 指南: https://hub.streamnative.io/protocol-handlers/aop/0.1.0/
[5] 安装方法: https://github.com/streamnative/aop
[6] 此处: https://hub.streamnative.io/protocol-handlers/aop/0.1.0/
[7] 开源版 Pulsar: https://pulsar.apache.org/

本文分享自微信公众号 - StreamNative(StreamNative)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部