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,我有一个用例,我将读取一组键/值对,其中键只是一个字符串,值是一个JSON。我必须将这些值作为JSON公开给一个REST端点,我将使用kafka流媒体消费者来实现这一点 现在我的问题是: 我如何处理卡夫卡分区?我计划为消费者使用spark流媒体 制片人呢?我希望以固定的间隔轮询来自外部服务的数据,并将生成的键/值对写入Kafka主题。是流媒体制作人吗 这是使用卡夫卡的有效用例吗?我的意思是,我可以有另一个消费者组,它只将传入的键/值对记录到数据库中。这正是吸引我使用卡夫卡的原因,它可以让多个消费

我有一个用例,我将读取一组键/值对,其中键只是一个字符串,值是一个JSON。我必须将这些值作为JSON公开给一个REST端点,我将使用kafka流媒体消费者来实现这一点

现在我的问题是:

  • 我如何处理卡夫卡分区?我计划为消费者使用spark流媒体

  • 制片人呢?我希望以固定的间隔轮询来自外部服务的数据,并将生成的键/值对写入Kafka主题。是流媒体制作人吗

  • 这是使用卡夫卡的有效用例吗?我的意思是,我可以有另一个消费者组,它只将传入的键/值对记录到数据库中。这正是吸引我使用卡夫卡的原因,它可以让多个消费群体做不同的事情

  • 我认为分区的主题是增加并行性,从而增加使用者吞吐量。这种吞吐量与没有分区相比如何?我有一个用例,我必须确保排序,所以我不能划分主题,但同时我希望我的消费者有一个非常高的吞吐量。我该怎么做呢


    有什么建议吗?

    只是想和大家分享一些想法

    主题是卡夫卡的主要平行层次。具有
    N
    分区的主题可以被
    N
    个线程并行使用。但拥有多个分区主要会在数据排序方面产生问题。例如,如果您没有N个分区P,并且您将生产者配置为随机发布消息(默认行为),那么在T1时生成的消息M1可能会转到分区P1,消息M2@T2到P2,M3@T3到P2,然后M4到P1。您可以将自定义规则配置为将生成的消息发送到特定分区(使用称为
    键的东西),但它需要在您的终端进行处理

    我不知道你对制作人到底是什么意思。通常,您可以创建观察者来监听这些事件,并在它们到达时调用生产者。您也可以选择成批发送消息


    选择Kafka的一个关键原因是它与不同的计算引擎(如ApacheStorm、ApacheSpark等)的兼容性。但据我所知,Kafka的主要目标是高吞吐量,希望数据能够以非常频繁的时间发布。如果在您的案例中,事件之间的间隔很长,那么在最终确定卡夫卡之前,可能需要考虑其他可能性,因为维护空闲集群不是一个好主意

    我们正在处理高频吞吐量。我们目前正在使用ReactiveStreams协议来读取数据并将其公开给WebSocket端点。但正如我所说,对于反应流,我必须在这个应用程序中耦合所有侦听器。我在想,如果我使用Kafka,我可以让不同的使用者进程独立运行!然后,为了并行使用,您需要相应地划分主题。使用多个使用者从一个分区读取将获取重复的条目。如果我对主题进行分区,我将失去排序。我如何保证分割后的订单?一般来说你不能。。。在使用者端检索时,您可以检查消息是否附加了任何时间戳或等效物,但这可能会再次给应用程序造成瓶颈。卡夫卡只保证在同一个部分内对消息进行排序