精通vs卡夫卡

Aks*_*ora 25 elasticsearch apache-kafka fluentd

用例是这样的:我运行了几个java应用程序,它们都必须与不同的(每个都有一个特定的目标)elasticsearch索引进行交互.例如,应用程序A使用ElasticSearch的索引A,B,C来查询和更新.应用B使用指数A,C,D(比如说).

需要一些通用接口来管理所有这些数据流.目前我正在评估卡夫卡,并为此目的流利.有人可以解释哪种更适合这种情况.我看过Kafka和Fluentd的特点,我真的不明白它在这里会有什么区别.非常感谢.

Val*_*Val 51

kafka将发布/订阅消息传递作为分布式提交日志提供.通常,您需要在每个主机上安装kafka,您需要在其中生成一些要转发的数据,并且所有这些主机将共同组成一个群集.这里的好处是,如果由于某种原因,网络连接变得不稳定或出现故障,应用程序可以继续生产数据/日志,他们将不会丢失.如果您的应用程序直接将日志发送到某个远程集中式日志记录主机,则在网络出现故障时可能会丢失一些日志.

fluentd是一个集中式日志收集器,通常安装在一台主机上(如果需要水平扩展,则更多).它连接到远程数据源,应用过滤并将统一日志数据发送到远程数据接收器.

从fluentd文档,你可以看到,fluentd可以从卡夫卡消耗数据,并产生对卡夫卡的数据也是如此.仅此一点就应该暗示流利和卡夫卡在不同的层面,因为前者使用后者.

实际上比较流利和logstash更合乎逻辑.就流利而言,kafka只是另一个数据源和/或数据接收器,但它们完全是不同的动物.

如果您想要两全其美,请使用kafka作为来自/到您的应用程序的输入/输出数据管道,并使用流利的(或logstash)作为您的集中式日志系统从这些kafka主题中读取.

如果你想阅读更多关于这个主题的内容,你可以阅读流利和卡夫卡如何相互补充,阅读它们并不是相互竞争.

  • 你先生,是一个传奇:)非常感谢. (5认同)
  • 谢谢,我很乐意提供帮助;) (2认同)