【发布时间】:2015-11-17 17:19:18
【问题描述】:
虽然这违反了 Flume 的基本设计原则,但我有一个问题。 这是否可以保持源和接收器之间的连接并重用?
我们正在使用 HTTP 源、文件通道和 Kafka 接收器,并且在该配置下,由于每个事件都重新连接源和接收器,因此无法获得预期的吞吐量。
那么,是否可以为多个事务重用相同的 HTTP 和 Kafka 连接? (即使使用自定义源和接收器)
【问题讨论】:
虽然这违反了 Flume 的基本设计原则,但我有一个问题。 这是否可以保持源和接收器之间的连接并重用?
我们正在使用 HTTP 源、文件通道和 Kafka 接收器,并且在该配置下,由于每个事件都重新连接源和接收器,因此无法获得预期的吞吐量。
那么,是否可以为多个事务重用相同的 HTTP 和 Kafka 连接? (即使使用自定义源和接收器)
【问题讨论】:
不确定我是否理解您的问题...源和接收器之间没有直接通信,但它们通过通道连接。源将 Flume 事件放入通道,接收器获取这些事件;由于您使用的是文件通道,因此在您的情况下,此类 put 和 get 是磁盘写入和读取;如果您使用的是内存通道,则写入和读取将与易失性内存有关。
也许你想知道是否可以忽略通道并直接将源构建的 Flume 事件传递给接收器......在这种情况下,Flume 没有任何意义,因为这样的架构忽略了使用内部通道的所有好处(可靠性、容错性、负载吸收峰值......),以及负责接收数据并直接写入 Kafka 的简单脚本或应用程序可能满足您的需求(当然,这样的解决方案不会扩展,不会出错宽容,你将不得不处理类似http的数据接收和用于输出数据的Kafka API,如果不使用Flume,你会错过更多的事情。
最后,您可能会要求在发送数据的外部数据源和接收数据的 Flume http 源之间建立持久连接......这很有趣,我认为您可以通过发送关于 @ 的较大值来实现这种持久连接987654321@http头。
【讨论】: