【发布时间】:2016-04-15 09:49:03
【问题描述】:
我们有一个系统(比如系统 A)通过 HTTP 接收时间序列数据,并且这些数据通过 OpenTSDB 的 REST 接口被持久化在 OpenTSDB 中。我现在想将 Apache Kafka 引入系统。我的想法是让 Kafka 服务器运行,其中系统 A 一旦接收到时间序列消息,就会将此消息发布到 Apache Kafka 服务器。
然后我可以让消费者从主题中读取数据并将此数据写入 OpenTSDB。我对这种方法有几个问题:
关于构建生产者和消费者:
我可以有一个独立的客户端,我将在其中编写仅从 Kafka 主题消费并将消息写入 OpenTSDB 的消费者
生产者将成为系统 A 的一部分,并将向相应主题发布消息
关于Kafka主题,时间序列数据是一些具有键和值的指标,示例如下:
"metric.metricType.tagName"
我将拥有数百甚至数千个这些不同的标记名。如何构建这些信息并将其表示为 Apache Kafka 中的主题。我不确定我可以创建的主题数量是否有限制。
我应该为每个 tagName 设置一个主题吗?划分主题有什么用?
关于 Apache Kafka 分区,我有以下问题:
如果我有一个主题“主题 A”,并且为此主题设置了 4 个分区,并且如果我的生产者写入此分区,那么此消息将在该主题的哪个分区中可用?同一主题内的每个分区是否都提供相同的消息?
如果我为这个分区主题编写一个消费者,它的行为会如何,我的意思是,这个消费者会收到来自分区的消息吗?
如果此分区主题有多个消费者,所有这些消费者都会收到相同的消息吗?我的意思是如果主题中有 4 个分区(TP1、TP2、TP3、TP4)并且我有 4 个消费者组(CG1、CG2、CG3、CG4),在每个消费者组中,我有一个消费者从各自的主题分区(C1 从 TP1 读取,C2 从 TP2 读取等等)。如果我的所有消费者组都将收到的消息写入同一个数据库,我最终会收到重复的消息吗?
【问题讨论】:
标签: apache-kafka