(设计)使用Kafka的记录框架



我们正计划构建一个记录框架,对于我们的规模,我们倾向于Kafka成为我们想要的解决方案。这就是我现在在想的:

Set of ~200 application machines -----> (each independently has a built in kafka producer) --------> which write to kafka --------> we use a hdfs sink to eventually write to hdfs. 

拥有应用程序机器direclty Call Kafka是个好主意吗?这些机器每天接近十亿次命中。我不想影响应用机器。应用机上的生产商将进行异步发送。我不认为这些是CPU强化操作,但我不确定我是否缺少任何事情。

或,我是否应该在客户端机上使用某种形式的日志aggegator,然后将日志的块(例如时间或大小)汇总,然后进行发送。这将减少我的Kafka群集的负载,并减少客户端机器所做的工作。我倾向于这个想法。我可以与Kafka生产商一起使用客户端的日志聚合器吗?

有更好的想法吗?

谢谢!

可以直接从应用程序调用kafka。如果您要使用基于队列的解决方案进行应用程序与Kafka生产商之间的通信,我只想注意一个事实,您应该强烈考虑可能的队列大小。如果Kafka不可用并且队列最大容量如此之大,它可能会消耗所有可用的内存。

另外,考虑是否需要为Kafka生产商重试逻辑是有意义的。通常,重试逻辑比火灾实施需要更多的资源。

不确定是否正确理解您对客户端特定日志聚合器的想法,但是如果您想从日志文件中读取数据并将其填充到Kafka,建议您使用Logstash Kafka。因此,Kafka输出插件可能会帮助您:https://www.elastic.co/guide/en/logstash/current/plugins-unputs-kafka.html

最新更新