Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka ApacheKafka用于时间序列数据持久化_Apache Kafka - Fatal编程技术网

Apache kafka ApacheKafka用于时间序列数据持久化

Apache kafka ApacheKafka用于时间序列数据持久化,apache-kafka,Apache Kafka,我们有一个系统(比如系统a),它通过HTTP接收时间序列数据,这些数据通过OpenTSDB的REST接口被持久化到OpenTSDB中。现在我想将ApacheKafka介绍到系统中。我的想法是让Kafka服务器运行,系统a在接收到时间序列消息后,立即将该消息发布到ApacheKafka服务器 然后,我可以让一个消费者从主题中读取数据并将其写入OpenTSDB。对于这种方法,我有几个问题: 关于生产者和消费者的架构: 我可以有一个独立的客户端,在那里我可以编写只使用Kafka主题的消费者,并将消息写

我们有一个系统(比如系统a),它通过HTTP接收时间序列数据,这些数据通过OpenTSDB的REST接口被持久化到OpenTSDB中。现在我想将ApacheKafka介绍到系统中。我的想法是让Kafka服务器运行,系统a在接收到时间序列消息后,立即将该消息发布到ApacheKafka服务器

然后,我可以让一个消费者从主题中读取数据并将其写入OpenTSDB。对于这种方法,我有几个问题:

关于生产者和消费者的架构:

  • 我可以有一个独立的客户端,在那里我可以编写只使用Kafka主题的消费者,并将消息写入OpenTSDB吗

  • 制作人将是系统A的一部分,并将向各自的主题发布消息

  • 关于卡夫卡主题,时间序列数据是一些具有键和值的度量,其示例如下:

     "metric.metricType.tagName"
    
    我将拥有数百甚至数千个不同的标记名。我如何构造这些信息并将其表示为ApacheKafka中的主题。我不确定我可以创建的主题数量是否有限制

    每个标记名应该有一个主题吗?如何划分主题

    关于Apache Kafka分区,我有以下问题:

  • 如果我有一个主题“topica”,并且为此主题将分区设置为4,并且如果我的生产者写入此分区,则此消息将在该主题的哪个分区中可用?同一主题中的每个分区是否都有相同的消息

  • 如果我为这个分区主题编写一个使用者,它将如何运行,我的意思是,这个使用者会从分区接收消息吗

  • 如果此分区主题有多个使用者,所有这些使用者是否都会收到相同的消息?我的意思是,如果主题中有4个分区(TP1、TP2、TP3、TP4),我有4个消费者组(CG1、CG2、CG3、CG4),其中在每个消费者组中,我有一个消费者从各自的主题分区读取消息(C1从TP1读取,C2从TP2读取,等等)。如果我的所有消费者组都将收到的消息写入同一个数据库,我是否会收到重复的消息

  • 我可以有一个独立的客户端,在那里我将编写 使用Kafka主题中的内容并将消息写入OpenTSDB

    是的,我就是这样做的。一个独立的java应用程序(您可以称之为“java服务器应用程序”)

    每个标记名应该有一个主题吗

    如果您希望以不同于其他标记的方式对待带有一个标记的邮件,例如保留、邮件大小(和),那么有一个单独的主题是有意义的,但是如果您将拥有数千个标记,我宁愿不这样做。它可以只是消息中的一个简单字段。您可以有一个主题用于度量,然后,当您想要添加其他类型的消息时(一旦您看到好处,您肯定会希望这样做:),您可以为此创建一个不同的主题。您可以粗略地将主题视为数据库中的实体,但这是一个相当弱的比较,因为它取决于许多因素,如大小、传入率和类似的内容。没有一刀切的食谱,所以你必须问一个单独的、具体的问题,包括你所有的参数

    如何划分主题

    分区是Kafka的消费并行机制(它们也促进了冗余,因为每个分区都是跨代理复制的,具体取决于您选择的复制因子)。由于分区不能由多个使用者线程使用,所以您首先需要创建更多的分区(并开始使用较少的线程),以便以后可以将线程数增加到分区数。(此限制可能在最新的卡夫卡版本0.9中解除。此规则适用于v0.8的低级消费者)

    如果我有一个主题“topica”,并且为此将分区设置为4 主题,如果我的生产者写入此分区,则在哪个分区中 是否提供此主题的信息

    如果您像前面描述的那样发布消息,您将不知道消息将在哪个分区中结束。 这是由生产者端的散列决定的,默认散列机制是随机的(类似于“循环”)。 您可以通过确定将用于散列的属性来控制分区。例如,如果在哈希中包含
    标记
    ,则具有相同标记的所有邮件将始终转到同一分区。当您希望确保具有相同标记的消息按照放入卡夫卡(即生成)的相同顺序被消费时,这一点非常重要

    同一主题中的每个分区是否都有相同的消息

    不,分区总是包含其主题的大致相等的消息子集(如果默认,则使用随机散列)

    如果我为这个分区主题编写一个消费者,这将如何实现 行为举止,我的意思是,这个消费者会收到来自 分割

    消息将被随机消费,因为消费者线程之间没有协调。当然,这是可以理解的,因为这将导致巨大的性能损失

    如果此分区主题有多个使用者,所有使用者 那些消费者得到了同样的信息

    这取决于消费者群体。同一组中的所有使用者线程总共接收100%的消息(例如,4个使用者线程中的每个线程将从该主题接收25%的消息)。另一方面,如果您有两个具有不同组的消费者,那么他们每个人都会100%地使用来自该主题的消息。我想你可以由此推断出最后两个问题的答案,对吗?

    1。我猜你指的是一个sta