Kafka High Level Vs低级消费者

Mur*_*uga 4 apache-kafka

我有关于主题和分区的以下问题

1)n-topics与m-partitions和n m个主题有什么区别使用n*m个不同的进程通过m个线程和n个 m个主题访问m分区时会有区别吗?

2)一个完美的用例区分高级别和低级别的消费者

3)如果发生故障(即)消息未送达,我在哪里可以找到Kafka中的错误日志.

Den*_*nko 17

1)具有m分区和nm主题的n主题有什么区别?

每个主题必须至少有一个分区.主题只是一组命名的分区,分区实际上是数据流.使用Kafka生产者的代码通常不关心分区,它只是向主题发送消息.默认情况下,生产者使用循环方法选择分区来存储消息,但是如果需要可以创建自定义分区,并根据消息的内容选择分区.

如果只有一个分区,则只有一个代理处理该主题的消息并将它们附加到文件中.另一方面,如果存在与代理一样多的分区,则消息处理被并行化并且存在多达m次(减去开销)加速.这假设每个代理都在自己的盒子上运行,而kafka数据存储不在代理之间共享.

如果某个主题的分区多于代理,Kafka会尝试在所有代理中均匀分配它们.

从卡夫卡读书也是如此.如果只有一个分区,则kafka使用者速度受单个磁盘的最大读取速度限制.如果存在多个分区,则并行检索来自所有分区(在不同代理上)的消息.

1a)使用n*m个不同的进程通过m个线程和nm主题访问m分区时会有区别吗?

您在这里混合分区和主题,请参阅上面的答案.

2)一个完美的用例区分高级别和低级别的消费者

高级消费者:我只想使用Kafka作为外部快速持久FIFO缓冲区而不用担心细节问题.

低级别消费者:我希望自定义分区数据消耗逻辑,例如,从新创建的主题开始读取数据,而无需消费者重新连接到代理.

3)如果发生故障(即)消息未送达,我在哪里可以找到Kafka中的错误日志.

Kafka使用log4j进行日志记录.它取决于存储日志的配置(如果是生产者和消费者).Kafka代理日志通常存储在/ var/log/kafka /中.