gpt4 book ai didi

java - Kafka Consumer架构设计 : java plugin or external client

转载 作者:行者123 更新时间:2023-12-02 01:44:36 27 4
gpt4 key购买 nike

我正在为 kafka 集群的数据消费者编写一个解决方案(使用 kafka 的 docker),但我仍然需要决定如何编码:

  1. Kafka采用母语开发:java,其中官方网站和git repo提供了示例,https://github.com/apache/kafka/tree/trunk/examples/src/main/java/kafka/examples
  2. 在以另一种语言提供的另一个客户端中,https://cwiki.apache.org/confluence/display/KAFKA/Clients ,例如Node.js

关键是我知道如何用两种语言编写解决方案,但我必须决定必须考虑哪一种语言:

  • 使用 kafka 消息的真实性能,不会造成瓶颈。 (我的第一印象是,用 Kafka 构建的同一核心语言编码所有内容将减少过载),但我对此不太确定。
  • 在解决方案的设计方面(保持语言、代码风格的一致性和可扩展性)。整个 Web 界面、其余服务以及数据持久性都是用 Node.js 开发的,客户端是用 javascript/HTML5 开发的。

这是一个 ubuntu 服务器,在一个完整的 Docker 化环境中,我使用 Node.js 作为 Web 服务和连接模块的核心语言。我仍然没有调整 kafka 客户端,而是使用默认选项:

Java(使用 KafkaConsumer)

import org.apache.kafka.clients.consumer.KafkaConsumer;
...
props = ...
KafkaConsumer consumer = new KafkaConsumer<>(props);

Node.js(使用 kafka-node npm lib)

var kafka = require('kafka-node');
...
client = ....
var consumer = new kafka.Consumer( client, [{ topic: 'topicVehicle' }], { autoCommit: true });

我必须处理用各种语言(java、nodejs...可能是python)在各个层维护代码的问题,我想知道哪个是更合适的解决方案。

最佳答案

我的看法是,出于以下几个原因,您不希望将 Kafka 消费者创建为 Kafka 插件:

  • 主要原因:创建独立消费者允许您根据需要根据负载进行扩展和缩小,方法是添加或删除同一消费者组的消费者实例,让 Kafka 重新分配可用分区以在这些消费者之间进行处理实例

其他原因:

  • 插件通常可以扩展您正在为其编写插件的任何内容的功能 - 在本例中为 Kafka
  • Kafka 作为分布式消息系统的最大优势在于,您可以拥有许多独立的消费者,每个消费者都做自己的事情,根据需要来来去去
  • 这些消费者的创建和部署不应与 Kafka(或其插件)的部署相结合 - 您应该能够添加/删除消费者,而不依赖于 Kafka 本身

现在,如果您正在开发某种新型的连接器或另一个消费者,其真正的目的更像是由其他消费者/生产者使用的框架/工具 - 将其开发为插件是有意义的卡夫卡

关于java - Kafka Consumer架构设计 : java plugin or external client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53871648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com