Apache kafka 保证在水平kafka上扩展节点时快速处理数据
我用java构建了一个kafka应用程序,它具有:Apache kafka 保证在水平kafka上扩展节点时快速处理数据,apache-kafka,kafka-consumer-api,apache-kafka-streams,Apache Kafka,Kafka Consumer Api,Apache Kafka Streams,我用java构建了一个kafka应用程序,它具有: 为卡夫卡制作唱片的制作人 使用这些记录的卡夫卡流,对其值应用一些(时间窗口和状态存储)操作并将其发送回卡夫卡 消费者消费这些转换后的值并将其写入数据库 我正在测量生产者记录(被卡夫卡流消费)和消费者记录(被消费者消费)的卡夫卡时间戳之间的时间差。基本上,当生产者记录被创建时,当这个记录被流转换并发送回卡夫卡时。最后,我计算数据库中每个时差的平均值 无论出于何种原因,当我在主题中添加更多的流节点和分区时,时间差都会增加。事实上,我预计时差会减
- 为卡夫卡制作唱片的制作人
- 使用这些记录的卡夫卡流,对其值应用一些(时间窗口和状态存储)操作并将其发送回卡夫卡
- 消费者消费这些转换后的值并将其写入数据库
此外,如果您的KafkaProducer在同步模式下工作,它必须更频繁地等待代理的回复(这可能会根据生产商配置
acks
和max.request.In.flight
而有所不同)。谢谢您的回复。在消息和分区之间找到一个良好平衡的唯一方法是试错吗?或者你能从多个分区和节点的消息数(每秒)判断它是否值得使用吗?我认为这主要是反复试验。至少我不知道有任何一刀切的解决方案,因为每个集群的行为完全不同(网络速度、代理数量、其他硬件…),您确定您正在测量您想要测量的内容吗。我不知道你在卡夫卡流部分做了什么,但记录时间戳一般不是挂钟时间。特别是,流发送到输出主题的记录的时间戳是由记录上的操作定义的,而不是由挂钟时间定义的。据我所知,卡夫卡时间戳是在记录到达卡夫卡时分配的,不幸的是,卡夫卡时间戳没有得到很好的记录-可能是我误解了这一点。最后,我只想知道记录从制作人发送到卡夫卡和从流发送回卡夫卡需要多长时间。我可以推荐这两次谈话,以便更好地理解卡夫卡和卡夫卡流中的时间语义:这个为卡夫卡流引入端到端延迟度量的KIP也可能是对你来说很有趣:谢谢布鲁诺,这对我来说确实很有趣,我会看看的