What do you use Apache Kafka for?

时间:2016-05-17 11:14:22

标签: apache-kafka

I would like to ask if my understanding of Kafka is correct.

For really really big data stream, conventional database is not adequate so people use things such as Hadoop or Storm. Kafka sits on top of said databases and provide ...directions where the real time data should go?

6 个答案:

答案 0 :(得分:12)

我不这么认为。

Kafka 是邮件系统,它不位于数据库之上。

您可以将 Kafka ActiveMQ RabbitMQ 等邮件系统进行比较。

来自Apache文档page

  

Kafka是一种分布式,分区,复制的提交日志服务。它提供了消息传递系统的功能,但具有独特的设计。

关键要点:

  1. Kafka维护称为主题的类别的消息提要。
  2. 我们将调用将消息发布到Kafka主题生成器的进程。
  3. 我们将调用订阅主题的流程并处理已发布消息的消费者..
  4. Kafka作为一个由一个或多个服务器组成的集群运行,每个服务器都称为代理。
  5. enter image description here

    客户端和服务器之间的通信使用简单,高性能,语言无关的TCP协议完成。

    用例:

    1. 消息传递 Kafka可以替代更传统的消息代理。在这个领域,Kafka可与传统的消息传递系统(如ActiveMQ或RabbitMQ
    2. )相媲美
    3. 网站活动跟踪:Kafka的原始用例是能够将用户活动跟踪管道重建为一组实时发布 - 订阅源
    4. 指标:Kafka通常用于运营监控数据,包括汇总分布式应用程序的统计信息以生成运营数据的集中式提要
    5. 日志聚合
    6. 流处理
    7. 事件采购是一种应用程序设计风格,其中状态更改记录为按时间排序的记录序列。
    8. 提交日志 Kafka可以作为分布式系统的一种外部提交日志。该日志有助于在节点之间复制数据,并充当故障节点恢复其数据的重新同步机制

答案 1 :(得分:4)

要完全理解Apache Kafka的角色,您应该了解更广泛的情况并了解Kafka的用例。现代数据处理系统试图打破传统的应用程序架构。您可以从kappa架构概述开始:

在此体系结构中,您不能将世界的当前状态存储在任何SQL或键值数据库中。处理所有数据并将其作为一个或多个事件系列存储在仅附加不可变日志中。不可变事件更容易在分布式环境中复制和存储。 Apache Kafka是一个用于存储这些事件并在其他系统组件之间进行代理的系统。

答案 2 :(得分:2)

Apache Kafka官方网站上的用例:http://kafka.apache.org/documentation.html#uses

更多用例: -

Kafka-Storm Pipeline - Kafka可与Apache Storm一起使用,以处理数据管道,实现高速过滤和模式匹配。

答案 3 :(得分:1)

Apache Kafka 不是仅仅是消息代理。它最初是由LinkedIn设计和实现的,以用作消息队列。自2011年以来,Kafka已开源并迅速发展成为一个分布式流平台,用于实现实时数据管道和流应用程序。

  

它是水平可伸缩的,容错的,快速的,可在   在数千家公司中进行生产。

现代组织具有促进系统或服务之间通信的各种数据管道。当需要合理数量的服务进行实时通信时,事情会变得更加复杂。

由于需要各种集成才能实现这些服务的相互通信,因此架构变得复杂。更准确地说,对于包含m个源服务和n个目标服务的体系结构,需要编写n x m个不同的集成。而且,每种集成都带有不同的规范,这意味着可能需要不同的协议(HTTP,TCP,JDBC等)或不同的数据表示形式(二进制,Apache Avro,JSON等),这使事情更具挑战性。此外,源服务可能会解决来自连接的增加的负载,这可能会影响延迟。

Apache Kafka通过解耦数据管道而导致了更加简单和可管理的体系结构。 Kafka充当高吞吐量的分布式系统,其中源服务推送数据流,使数据流可用于目标服务以实时提取数据流。

此外,现在还有许多用于管理Kafka集群的开源和企业级用户界面。有关更多详细信息,请参见my answer to this question

您可以在博客文章"Why Apache Kafka?"

中找到有关Apache Kafka及其工作方式的更多详细信息。

答案 4 :(得分:0)

Apache Kafka是用Scala和Java编写的开源软件平台,主要用于流处理。

Apache Kafka的用例是:

  • 消息传递
  • 网站活动跟踪
  • 指标
  • 日志聚合
  • 流处理
  • 事件来源
  • 提交日志

有关更多信息,请使用Apache Kafka官方网站。 https://kafka.apache.org/uses

答案 5 :(得分:-1)

Kafka是一个发布订阅的高度可伸缩的消息传递系统。它充当传输层,确保语义和Spark Steaming进行一次处理。我想到的下一个问题是,甚至spark可以轮询目录以检查文件,甚至可以从套接字或端口读取。这种Kafka和spark如何协同工作?我的意思是,应用程序不是用某种语言编写的,而是写到数据库的存储,而是直接馈送到端口(或将不是真正的时间,而是某种批处理)的文件直接馈送到端口,然后从中获取数据由Kafka生产者读取,然后通过Kafka使用者API,然后由Spark Streaming读取和处理?