什么是Apache Kafka?
Apache Kafka是一个开源,分布式,可伸缩的发布-订阅消息系统。 负责该软件的组织是Apache Software Foundation。 该代码是用Scala编写的,最初是由LinkedIn公司开发的。 它于2011年开源,成为Apache的顶级项目。
该项目旨在提供一个统一的低延迟平台,该平台能够实时处理数据馈送。 对于需要系统之间集成的不同企业基础架构,它变得越来越有价值。 希望集成的系统可以根据其需求发布或订阅特定的Kafka主题。
Kafka受事务日志的影响, Apache Kafka背后的思想是成为可伸缩的消息队列,其结构类似于事务日志。
这个平台被指定为实时数据流。
Kafka允许组织特定主题下的数据。 数据生产者以“发布者”的身份撰写主题。 消费者或“订户”被配置和编程为读取主题队列。
主题消息将保留在磁盘上并在群集内复制,以防止数据丢失。 Kafka具有以群集为中心的设计,可提供强大的耐用性和容错保证。
Apache Kafka与Amazon Kinesis
Amazon Kinesis软件以Apache Kafka为模型。 众所周知,它令人难以置信的快速,可靠且易于操作。
Amazon Kinesis具有内置的交叉复制功能,而Kafka要求自行配置。 交叉复制是跨逻辑或物理数据中心同步数据的想法。 交叉复制不是强制性的,只有在需要时才应考虑这样做。
工程师出售了Kafka的价值主张,但希望提供类似于Kinesis模型的价值,请留意http://confluent.io。
什么时候使用?
如前所述,在与传统消息代理系统(例如ActiveMQ或RabbitMQ)相似的企业环境中,Kafka通常被选作集成系统。 Kafka客户端以多种语言协助系统之间的集成,包括Java,Scala,Ruby,Python,Go,Rust,Node.js等。
Kafka的其他用例包括针对一系列用例的网站活动跟踪,包括实时处理或加载到Hadoop或分析数据仓库系统中以进行脱机处理和报告。
但是,Kafka(和Kinesis)最近最有趣的部分是在流处理中的使用。 越来越多的应用程序和企业正在构建架构,其中包括由多个阶段组成的处理管道。 例如,一个多阶段设计可能包括在第1阶段从Kafka主题消耗的原始输入数据。在第1阶段,先消耗数据,然后对它们进行汇总,充实或转换。 然后,在阶段2中,将数据发布到新主题,以供以后使用或在后续阶段中进行后续处理。
结论
请随时关注supergloo.com,以获取有关Kafka和使用流的数据处理管道的更多文章和教程。 并且,如果有任何特定的“主题”,则�� 您想看到的,请在下面的评论中提及。
参考文献
翻译自: https://www.javacodegeeks.com/2016/06/apache-kafka-compare-amazon-kinesis.html
所有评论(0)