【发布时间】:2017-10-27 10:43:33
【问题描述】:
我在机器(机器#1 和机器#2)之间设置了 kafka 集群,配置如下:
1) 每台机器配置为运行一个代理和一个动物园管理员。 2) 服务器和 zookeeper 属性配置为具有多代理、多节点 zookeeper。
我目前对KafkaProducer和KafkaConsumer的理解如下:
1) 如果我将一个文件从machine#1 发送到machine#2,它会使用一些默认分隔符(LF 或\n)分成几行。
2) 因此,如果机器#1 向同一个主题发布了 2 个不同的文件,这并不意味着 machine#2 将收到这两个文件。相反,每一行都将附加到主题日志分区,machine#2 将按照到达的顺序从日志分区中读取它。即顺序与
file1-line1
file1-line2
end-of-file1
file2-line1
file2-line2
end-of-file2
但它可能是这样的: 文件 1 行 1 文件 2 行 1 文件 1 行 2 文件结束1 文件 2 行 2 文件结束2
假设以上是正确的(我很高兴错了),我相信简单的生产者消费者使用来传输文件不是正确的方法(可能连接 API 是这里的解决方案)。由于 Kafka 网站说“日志聚合”是一个非常流行的用例,我想知道是否有人有任何示例项目或网站来演示使用 Kafka 的文件交换示例。
P.S. 我知道Connect API 的定义是为了在kafka 和“其他”系统之间进行可靠的数据交换——但我不明白为什么其他系统不能有kafka。所以我希望我的问题不必集中在“其他”非 kafka 系统上。
【问题讨论】:
标签: apache-kafka kafka-consumer-api kafka-producer-api apache-kafka-connect