Logstash和Kafka有何不同?如果两者相同,哪个更好?为什么?
我发现这两个都是管道,可以将数据推送进行进一步处理。
Logstash和Kafka有何不同?如果两者相同,哪个更好?为什么?
我发现这两个都是管道,可以将数据推送进行进一步处理。
Kafka比Logstash更强大。例如,将数据从PostgreSQL同步到ElasticSearch,Kafka连接器可以与Logstash完成类似的工作。
一个关键区别是:Kafka是一个集群,而Logstash基本上只是单个实例。您可以运行多个Logstash实例,但这些实例彼此不知道。例如,如果一个实例停机,其他实例将无法接管其工作。 Kafka会自动处理节点故障。如果您设置Kafka连接器以在分布式模式下工作,则其他连接器可以接管故障连接器的工作。
Kafka和Logstash也可以一起使用。例如,在每个节点上运行Logstash实例以收集日志,并将日志发送到Kafka。然后,您可以编写Kafka消费者代码来执行任何处理操作。
此外,我想通过场景补充一些东西:
场景1:事件峰值
您部署的应用程序存在一个糟糕的bug,会大量记录信息,从而淹没了您的日志基础设施。在其他多租户使用案例中,如游戏和电子商务行业,这种数据突发情况也相当普遍。在这种情况下,使用像Kafka这样的消息代理来保护Logstash和Elasticsearch免受潮涌影响。
场景2:无法连接 Elasticsearch
如果无法连接Elasticsearch,并且有多个数据源正在流向Elasticsearch,而您又无法停止原始数据源,则Kafka这样的消息代理可能会对您有所帮助!如果您使用Kafka进行Logstash船只和索引器架构,可以继续从边缘节点流式传输数据,并将它们暂时存储在Kafka中。当Elasticsearch重新启动时,Logstash将从上次离开的地方继续工作,并帮助您追赶数据积压。
整篇博客在这里,介绍了Logtash和Kafka的使用案例。