【发布时间】:2016-09-13 10:59:59
【问题描述】:
请问我对Kafka的理解是否正确。
对于真正的大数据流,传统的数据库是不够的,所以人们使用诸如 Hadoop 或 Storm 之类的东西。 Kafka 位于上述数据库之上,并提供......实时数据应该去向的方向?
【问题讨论】:
标签: apache-kafka
请问我对Kafka的理解是否正确。
对于真正的大数据流,传统的数据库是不够的,所以人们使用诸如 Hadoop 或 Storm 之类的东西。 Kafka 位于上述数据库之上,并提供......实时数据应该去向的方向?
【问题讨论】:
标签: apache-kafka
我不这么认为。
Kafka 是消息系统,它不位于数据库之上。
您可以将 Kafka 与 ActiveMQ、RabbitMQ 等消息系统进行比较。
来自 Apache 文档page
Kafka 是一种分布式、分区、复制的提交日志服务。它提供消息传递系统的功能,但设计独特。
要点:
客户端和服务器之间的通信是通过简单、高性能、语言无关的 TCP 协议完成的。
用例:
【讨论】:
要全面了解Apache Kafka 的角色,您应该有更广泛的了解并了解 Kafka 的用例。现代数据处理系统试图打破经典的应用程序架构。您可以从 kappa 架构概述开始:
在这种架构中,您不会将世界的当前状态存储在任何 SQL 或键值数据库中。所有数据都作为一个或多个事件系列处理并存储在仅附加的不可变日志中。不可变事件更容易在分布式环境中复制和存储。 Apache Kafka 是一个用于存储这些事件并在其他系统组件之间代理它们的系统。
【讨论】:
Apache Kafka官网用例:http://kafka.apache.org/documentation.html#uses
更多用例:-
Kafka-Storm 管道 - Kafka 可以与 Apache Storm 一起使用来处理数据管道,以实现高速过滤和动态模式匹配。
【讨论】:
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 及其工作原理的更多详细信息
【讨论】:
Apache Kafka 是一个用 Scala 和 Java 编写的开源软件平台,主要用于流处理。
Apache Kafka 的用例有:
有关更多信息,请使用官方 apache Kafka 站点。 https://kafka.apache.org/uses
【讨论】:
Kafka 是一个 pub-sub 高度可扩展的消息传递系统。它充当传输层,保证语义和 Spark steaming 进行处理。我想到的下一个问题是,spark 甚至可以轮询目录以检查文件,甚至从套接字或端口读取。这个卡夫卡和火花如何协同工作?我的意思是用某种语言编写的应用程序,而不是写入数据库进行存储直接馈送到端口(或放置不会真正花费时间而宁愿进行某种批处理的文件),然后从中获取数据由 Kafka 生产者读取,然后通过 Kafka 消费者 API 读取并由 Spark Streaming 处理?
【讨论】: