2016-05-17 84 views
7

我想问一下我对卡夫卡的理解是否正确。你使用Apache Kafka做什么?

对于真正的大数据流,传统的数据库是不够的,所以人们使用诸如Hadoop或Storm之类的东西。卡夫卡位于所述数据库的顶部,并提供...实时数据应该走的方向?

+0

推荐阅读:http://www.confluent.io/blog/stream-data-platform-1/和http://www.confluent.io/blog/stream-data-platform-2/以及https: //englishering.linkedin.com/blog/topic/kafka –

回答

8

我不这么认为。

卡夫卡是邮件系统和它不坐在数据库的顶部

您可以通过消息系统比较卡夫卡ActiveMQ的的RabbitMQ

从Apache文档page

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

关键要点:

  1. 卡夫卡维持称为主题类别的消息的饲料。
  2. 我们将调用向卡夫卡主题生产者发布消息的进程。
  3. 我们将调用订阅主题的进程并处理发布的消息消费者的源。
  4. Kafka作为由一个或多个服务器组成的集群运行,每个服务器称为代理。

enter image description here

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

使用案例:

  1. 消息卡夫卡的作品还有一个更传统的消息代理的替代品。在这个领域,Kafka与传统的消息系统如ActiveMQ或RabbitMQ相似
  2. 网站活动跟踪: Kafka的原始用例是能够将用户活动跟踪管道重建为一组实时发布 - 订阅饲料
  3. 度量:卡夫卡通常用于运行监测数据,其涉及从分布式应用程序聚集统计,以产生操作数据
  4. 的集中饲料
  5. 日志聚合
  6. 流处理
  7. 事件源是一种应用程序设计风格,其中状态更改记录为时间排序的记录序列。
  8. 提交日志对于分布式系统,Kafka可以作为一种外部提交日志。日志有助于复制节点和行为之间的数据重新同步机制,故障节点来恢复他们的数据
+0

对不起,但我不明白为什么我们有Kafa的任务看起来像服务器和客户端之间的通信? –

+0

在两个不同的企业服务/系统之间提供松耦合。发送者和接收者服务通过消息集成松散耦合。访问此链接:enterpriseintegrationpatterns.com和enterpriseintegrationpatterns.com/patterns/messaging –

3

要充分认识Apache Kafka角色,你应该得到更广泛的图片,并知道卡夫卡用例。现代数据处理系统试图打破传统的应用程序架构。你可以开始形式卡帕架构概述:

在这种架构中,你不电流world state存储在任何SQL或键值数据库。所有数据都被处理并作为一系列事件存储在仅附加的不可变日志中。不变事件更容易在分布式环境中复制和存储。 Apache Kafka是一个在其他系统组件之间进行代理和存储这些事件的元素。