关于pulsar:通过-KoP-将-Kafka-应用迁移到-Pulsar

6次阅读

共计 2643 个字符,预计需要花费 7 分钟才能阅读完成。

通过 KoP 将 Kafka 利用迁徙到 Pulsar

版权申明:原文出自 https://github.com/streamnati…,由 Redisant 进行整顿和翻译

[TOC]

什么是 KoP

KoP(Pulsar on Kafka)通过在 Pulsar Broker 上引入 Kafka 协定处理程序,为 Apache Pulsar 带来原生 Apache Kafka 协定反对。通过将 KoP 协定处理程序增加到您现有的 Pulsar 集群,您能够将现有的 Kafka 应用程序和服务迁徙到 Pulsar,而无需批改代码。这使 Kafka 应用程序可能利用 Pulsar 的弱小性能,例如:

  • 通过企业级多租户简化经营
  • 应用 rebalance-free 架构简化操作
  • 应用 Apache BookKeeper 分层存储
  • 应用 Pulsar Functions 进行 Serverless 事件处理

KoP 作为 Pulsar 协定解决插件,在 Pulsar broker 启动时加载。它通过在 Apache Pulsar 上提供原生 Kafka 协定反对,帮忙缩小人们采纳 Pulsar 实现业务的阻碍。

通过整合两个风行的事件流生态系统,KoP 解锁了新的用例。您能够利用每个生态系统的劣势,应用 Apache Pulsar 构建一个真正对立的事件流平台,以减速实时应用程序和服务的开发。

KoP 利用 Pulsar 已有的组件(例如主题发现、分布式日志库 – ManagedLedger、游标等)在 Pulsar 上实现了 Kafka wire 协定。

下图阐明了 KoP 是如何在 Pulsar 中实现的:

装置 KoP

如果您有 Apache Pulsar 集群,则能够通过间接下载 KoP 协定处理程序并将其装置到 Pulsar Broker,在现有 Pulsar 集群上启用 Kafka-on-Pulsar。它须要三个步骤:

  1. 下载 KoP 协定处理程序,而后将其复制到您的 Pulsar protocols 目录。
  2. 在 Pulsar broker.confstandalone.conf 文件中设置 KoP 协定处理程序的配置。
  3. 重启 Pulsar broker 以加载 KoP 协定处理程序。

而后你能够启动你的 Broker 并应用 KoP。以下是每个步骤的具体阐明。

下载 KoP 协定处理程序

您能够在这里间接下载 [KoP 协定处理程序]

chen_ubuntu@LAPTOP-IH0640SI:~/start_pulsar/apache-pulsar-2.10.3/protocols$ ls
pulsar-protocol-handler-kafka-2.10.3.3.nar

配置 KoP

.nar 文件复制到 Pulsar protocols 目录后,您须要通过在 Pulsar 配置文件 broker.confstandalone.conf 中增加配置来配置 Pulsar broker 以插件模式运行 KoP 协定处理程序。

  1. broker.confstandalone.conf 文件中设置 KoP 协定处理程序的配置。

    messagingProtocols=kafka
    protocolHandlerDirectory=./protocols
    allowAutoTopicCreationType=partitioned
    narExtractionDirectory=./unpacked
属性名 默认值 倡议值
messagingProtocols kafka
protocolHandlerDirectory ./protocols Location of KoP NAR file
allowAutoTopicCreationType non-partitioned partitioned
narExtractionDirectory /tmp/pulsar-nar Location of unpacked KoP NAR file
 默认状况下,`allowAutoTopicCreationType` 设置为未分区。因为主题在 Kafka 中默认是分区的,因而最好防止为 Kafka 客户端创立非分区主题,除非 Kafka 客户端须要与现有的非分区主题进行交互。默认状况下,`/tmp/pulsar-nar` 目录位于 `/tmp` 目录下。如果咱们将 KoP NAR 文件解包到 `/tmp` 目录,一些类可能会被零碎主动删除,这将产生一个 `ClassNotFoundException` 或 `NoClassDefFoundError` 谬误。因而,倡议将 `narExtractionDirectory` 选项设置为其余门路。
  1. 设置 Kafka listeners

    # Use `kafkaListeners` here for KoP 2.8.0 because `listeners` is marked as deprecated from KoP 2.8.0 
    kafkaListeners=PLAINTEXT://127.0.0.1:9092
    # This config is not required unless you want to expose another address to the Kafka client.
    # If it’s not configured, it will be the same with `kafkaListeners` config by default
    kafkaAdvertisedListeners=PLAINTEXT://127.0.0.1:9092

    kafkaListeners 是一个以逗号分隔的侦听器列表以及 Kafka 绑定以进行侦听的主机 /IP 和端口。
    kafkaAdvertisedListeners 是一个以逗号分隔的侦听器列表及其主机 /IP 和端口。

  2. 如下设置偏移量治理,因为 KoP 的偏移量治理取决于“Broker Entry Metadata”。KoP 2.8.0 或更高版本须要它。

    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor
  3. 禁止删除非流动主题。这不是必须的,但在 KoP 中十分重要。目前,Pulsar 会删除分区主题的非流动分区,而不会删除分区主题的元数据。在这种状况下,KoP 无奈创立失落的分区。

    brokerDeleteInactiveTopicsEnabled=false
  4. 启动 Pulsar

    ./bin/pulsar-daemon standalone

测试 KoP

  1. 应用 Kafka Assistant 连贯到 KoP

  2. 创立主题并发送一些音讯

  3. 应用 Pulsar Assistant 连贯到 Pulsar Broker 并接管音讯

正文完
 0