通过KoP将Kafka应用迁移到Pulsar版权声明:原文来自https://github.com/streamnati...,由Redisant整理翻译[TOC]什么是KoPKoP(PulsaronKafka)通过在PulsarBroker上引入Kafka协议处理程序,为ApachePulsar带来原生ApacheKafka协议支持。通过将KoP协议处理程序添加到现有的Pulsar集群,您可以将现有的Kafka应用程序和服务迁移到Pulsar,而无需修改代码。这使Kafka应用程序能够利用Pulsar的强大功能,例如:通过企业级多租户简化操作通过无重平衡架构简化操作通过ApacheBookKeeper分层存储简化操作使用PulsarFunctions进行无服务器事件处理KoP作为Pulsar协议处理插件,在Pulsarbroker启动时加载。它通过在ApachePulsar上提供原生Kafka协议支持,帮助减少人们在业务中采用Pulsar的障碍。通过集成两个流行的事件流生态系统,KoP解锁了新的用例。您可以利用每个生态系统的优势,使用ApachePulsar构建一个真正统一的事件流平台,以加速实时应用程序和服务的开发。KoP利用Pulsar已有的组件(如主题发现、分布式日志库-ManagedLedger、cursors等)在Pulsar上实现了Kafkawireprotocol。下图说明了KoP在Pulsar中是如何实现的:安装KoP如果你有一个ApachePulsar集群,你可以启用Kafka-on-Pulsar。它需要三个步骤:下载KoP协议处理程序,然后将其复制到您的Pulsar协议目录。在Pulsarbroker.conf或standalone.conf文件中设置KoP协议处理程序的配置。重启Pulsar代理以加载KoP协议处理程序。然后你可以启动你的经纪人并使用KoP。以下是每个步骤的详细说明。下载KoP协议处理程序可以直接下载【KoP协议处理程序】chen_ubuntu@LAPTOP-IH0640SI:~/start_pulsar/apache-pulsar-2.10.3/protocols$lspulsar-protocol-handler-kafka-2.10.3.3.nar配置好KoP后要将.nar文件复制到Pulsar协议目录,您需要通过在Pulsar配置文件broker.conf或standalone.conf中添加配置来配置Pulsarbroker以插件形式运行KoP协议处理程序。在broker.conf或standalone.conf文件中设置KoP协议处理程序的配置。messagingProtocols=kafkaprotocolHandlerDirectory=./protocolsallowAutoTopicCreationType=partitionednarExtractionDirectory=./unpacked属性名默认值建议值messagingProtocolskafkaprotocolHandlerDirectory./protocolsLocationofKoPNARfileallowAutoTopicCreationTypenon-partitionedpartitionednarExtractionDirectory/tmp/pulsar-narLocationofunpackedKoPNARfile默认情况下,allowAutoTopicCreationType设置为未分区.由于主题在Kafka中默认是分区的,因此最好避免为Kafka客户端创建非分区主题,除非Kafka客户端需要与现有的非分区主题进行交互。默认情况下,/tmp/pulsar-nar目录位于/tmp目录下。如果我们将KoPNAR文件解压到/tmp目录下,有些类可能会被系统自动删除,从而产生ClassNotFoundException或NoClassDefFoundError错误。因此,建议将narExtractionDirectory选项设置为不同的路径。设置Kafka侦听器#在KoP2.8.0中使用`kafkaListeners`因为`listeners`被标记为从KoP2.8.0开始弃用kafkaListeners=PLAINTEXT://127.0.0.1:9092#除非你想公开另一个,否则不需要此配置到Kafka客户端的地址。#如果没有配置,默认情况下与`kafkaListeners`配置相同kafkaAdvertisedListeners=PLAINTEXT://127.0.0.1:9092其中kafkaListeners是一个以逗号分隔的侦听器列表和Kafka绑定到侦听主机/IP和端口。kafkaAdvertisedListeners是一个以逗号分隔的侦听器列表及其主机/IP和端口。如下设置offset管理,因为KoP的offset管理依赖于“BrokerEntryMetadata”。KoP2.8.0或更高版本需要它。brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor禁止删除非活动主题。这不是必需的,但在KoP中非常重要。目前,Pulsar会删除分区主题的非活动分区,但不会删除分区主题的元数据。在这种情况下,KoP无法创建丢失的分区。brokerDeleteInactiveTopicsEnabled=false启动Pulsar./bin/pulsar-daemon独立测试KoP使用KafkaAssistant连接到KoP创建主题并发送一些消息使用PulsarAssistant连接到PulsarBroker并接收消息
