我们运行apachestorm从多个http流api获取和处理数据。这将每秒生成大约250个项目,我们希望将其发送到elasticsearch。每条记录的大小为250kb。将这些数据发送到elasticsearch的最佳做法是什么?
例如,我们是否应该使用批处理将它们插入elasticsearch,例如,将它们写入文件并使用logstash加载和处理这些项目?
或者用Apache·Kafka作为中间人?
或者我们可以简单地使用一个螺栓来保持http连接的活动性,并使用它将项目加载到elasticsearch中吗?
1条答案
按热度按时间3pvhb19x1#
同样,这取决于你的选择,人们倾向于使用你列出的所有方法,每种方法都有一些优点和缺点,你需要选择一种最适合你的需求的方法。
在一个非常高的层次上,我将尝试提及其中最重要的方面。
贮木场
如果需要某种过滤,可以使用logstash和grok过滤器。
需要另一个基础设施和日志存储维护。
Kafka
当es停机或出现性能问题时,可以提供更好的容错和排队机制。
另一个infra,而不是在麋鹿堆里,比如logstash。
使用批量api的直接es摄取
简单易用,无需任何额外的配置和维护,如果你有良好的容错和重试机制在客户端。
根据您提供的信息,它似乎不是非常频繁,低延迟系统和imho您可以简单地继续选择3 ie直接摄入es使用批量api。