码迷,mamicode.com
首页 > Web开发 > 详细

Apache Kafka教程

时间:2019-05-11 21:48:24      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:输入   quick   学习   amqp   移除   关系数据库   stream   规模   配置   

1.卡夫卡教程

今天,我们正在使用Apache Kafka Tutorial开始我们的新旅程。在这个Kafka教程中,我们将看到什么是Kafka,Apache Kafka历史以及Kafka的原因。此外,我们将学习Kafka Architecture,Kafka和Kafka Partition的组件。此外,我们将讨论Kafka和Kafka用例中的各种比较。除此之外,我们将在这个Kafka教程中看到各种术语,如Kafka Broker,Kafka Cluster,Kafka Consumer,Kafka Topics等。
所以,让我们开始Apache Kafka教程。

技术图片

Apache Kafka教程 - 初学者卡夫卡

2.什么是卡夫卡? 

在使用基于消息的主题实现生产者和消费者之间的通信时,我们使用Apache Kafka。Apache Kafka是一种快速,可扩展,容错,发布 - 订阅的消息传递系统。基本上,它为高端新一代分布式应用程序设计了一个平台。

此外,它允许大量永久或临时消费者。Kafka的最佳功能之一是,它具有高可用性和对节点故障的弹性,并支持自动恢复。此功能使Apache Kafka成为实际数据系统中大规模数据系统组件之间通信和集成的理想选择。

此外,该技术取代了传统的消息代理,能够提供更高的吞吐量,可靠性和复制,如JMS,AMQP等等。此外,核心抽象Kafka还提供Kafka经纪人Kafka制片人和Kafka消费者Kafka代理是Kafka集群上的一个节点,它的用途是持久化并复制数据。Kafka Producer将消息推送到名为Kafka Topic的消息容器中。而卡夫卡消费者则从卡夫卡主题中汲取信息。

在继续学习Kafka教程之前,让我们先了解一下Kafka中术语Messaging System的实际含义。

一个。卡夫卡的消息系统

当我们将数据从一个应用程序传输到另一个应用程序时,我们使用消息系统。结果是,在不担心如何共享数据的情况下,应用程序可以仅关注数据。在可靠消息排队的概念上,基于分布式消息传递。但是,消息在客户端应用程序和消息传递系统之间异步排队。有两种类型的消息传递模式可用,即点对点和发布 - 订阅(pub-sub)消息传递系统。但是,大多数消息传递模式都遵循pub-sub。
你知道Kafka Cluster吗?

技术图片

Apache Kafka - Kafka消息传递系统

  • 点对点消息系统

这里,消息持久存储在队列中。尽管如此,即使一个或多个消费者可以使用队列中的消息,也可以仅由最多一个消费者使用特定消息。此外,它确保消费者一旦在队列中读取消息,它就会从该队列中消失。

  • 发布 - 订阅消息系统

此处,消息将保留在主题中。在此系统中,Kafka Consumers可以订阅一个或多个主题并使用该主题中的所有消息。此外,消息制作者将发布者和消息消费者称为订阅者。

3. Apache Kafka的历史

以前,LinkedIn面临着从网站上大量数据的低延迟摄取到lambda架构的问题,该架构可以处理实时事件。作为一种解决方案,Apache Kafka是在2010年开发的,因为之前没有任何解决方案可以解决这个缺点。
但是,有可用于批处理的技术,但这些技术的部署细节与下游用户共享。因此,虽然涉及实时处理,但这些技术还不够合适。然后,在2011年,卡夫卡被公之于众。

4.我们为什么要使用Apache Kafka Cluster?

众所周知,大数据中存在大量数据而且,在涉及大数据时,存在两个主要挑战。一种是收集大量数据,另一种是分析收集的数据。因此,为了克服这些挑战,我们需要一个消息传递系统。然后Apache Kafka证明了它的实用性。Apache Kafka有许多好处, 例如:

  • 通过存储/发送事件来跟踪Web活动以进行实时处理。
  • 提醒和报告运营指标。
  • 将数据转换为标准格式。
  • 连续处理流数据到主题。

因此,该技术因其广泛使用而对一些最流行的应用程序(如ActiveMQ,RabbitMQ,AWS等)进行了激烈的竞争。

5.卡夫卡教程 - 观众

希望 使用Apache Kafka消息传递系统大数据分析领域开展职业的专业人士应该参考这篇Kafka Tutorial文章。它将使您完全了解Apache Kafka。

6.卡夫卡教程 - 先决条件

在继续本Apache Kafka教程之前您必须对JavaScala,分布式消息传递系统和Linux环境有很好的理解

7.卡夫卡建筑

下面我们将讨论这个Apache Kafka教程中的四个核心API:

技术图片

Apache Kafka - Kafka Architecture

一个。Kafka Producer API 
此Kafka Producer API允许应用程序将记录流发布到一个或多个Kafka主题。
湾 Kafka Consumer API 
要订阅一个或多个主题并处理在应用程序中生成的记录流,我们使用此Kafka Consumer API。
C。Kafka Streams API 
为了充当流处理器,消耗来自一个或多个主题的输入流,并为一个或多个输出主题生成输出流,并有效地将输入流转换为输出流,此Kafka Streams API允许应用。
d。Kafka Connector API
此Kafka Connector API允许构建和运行将Kafka主题连接到现有应用程序或数据系统的可重用生产者或使用者。例如,关系数据库的连接器可能捕获对表的每个更改。
Apache Kafka安全| Kafka的需求和组成部分

8.卡夫卡组件

使用以下组件,Kafka实现了消息传递:

一个。卡夫卡主题

基本上,Kafka如何在其系统中存储和组织消息,本质上是一组消息是主题。此外,我们可以复制和分区主题。这里,复制是指副本和分区指的是分区。此外,将它们可视化为日志,其中,Kafka存储消息。但是,这种复制和分区主题的能力是实现Kafka容错和可扩展性的因素之一。

技术图片

Apache Kafka - Kafka主题

湾 卡夫卡制片人

它将消息发布到Kafka主题。

C。卡夫卡消费者

该组件订阅主题,读取和处理来自主题的消息。

d。卡夫卡经纪人

Kafka Broker管理主题中的消息存储。如果Kafka有多个经纪人,那就是我们所说的Kafka集群。

即 卡夫卡动物园管理员

为了向经纪人提供有关系统中运行的流程的元数据,并促进健康检查和经纪人领导选举,Kafka使用Kafka zookeeper

9.卡夫卡教程 - 日志解剖学

我们将日志视为此Kafka教程中的分区。基本上,数据源将消息写入日志。其中一个优点是,一个或多个消费者在任何时候从他们选择的日志中读取。这里,下图显示了数据源正在写入日志,并且消费者正在以不同的偏移量读取日志。

技术图片

Apache Kafka教程 - 日志解剖

10.卡夫卡教程 - 数据日志

通过Kafka,消息可以保留相当长的时间。此外,消费者可以根据自己的方便阅读。但是,如果Kafka配置为将消息保留24小时且消费者停留的时间超过24小时,则消费者将丢失消息。并且,如果消费者的部分停机时间仅为60分钟,则可以从最后已知的偏移量读取消息。卡夫卡没有说明消费者从主题中读到什么。

11.卡夫卡教程 - 卡夫卡分区

每个Kafka经纪人都有几个分区。此外,每个分区可以是主题的领导者或副本。此外,随着使用新数据更新副本,Leader负责对主题的所有写入和读取。如果领导者以某种方式失败,副本将成为新的领导者。

技术图片

Apache Kafka教程 - Kafka中的分区

12. Apache在Kafka中的重要性

Apache Kafka是用纯Java编写的,Kafka的本机API也是java。但是,许多其他语言,如C ++,Python  .Net,Go等也支持Kafka。不过,一个不需要使用第三方库的平台就是Java。另外,我们可以说,用Java语言编写代码会有点开销。
另外,如果我们需要Kafka标准的高处理速率,我们可以使用 Java  语言。此外,Java为Kafka消费者客户提供了良好的社区支持。因此,在Java中实现Kafka是一个正确的选择。

13.卡夫卡用例

Kafka有几个使用案例,说明我们实际使用Apache Kafka的原因。

  • 消息

对于更传统的消息代理,Kafka可以作为替代品。我们可以说Kafka具有更好的吞吐量,内置分区,复制和容错功能,这使其成为大规模消息处理应用程序的理想解决方案。

  • 度量

对于运营监控数据,Kafka找到了良好的应用程序。它包括汇总分布式应用程序的统计信息,以生成操作数据的集中式提要。

  • 活动采购

由于它支持非常大的存储日志数据,这意味着Kafka是事件源的应用程序的优秀后端。

14.卡夫卡教程 - 卡夫卡比较

许多应用程序提供与Kafka相同的功能,如ActiveMQ,RabbitMQ,Apache Flume,Storm和Spark那么为什么要选择Apache Kafka而不是其他人呢?
我们来看下面的比较:

一个。Apache Kafka与Apache Flume

技术图片

Kafka教程 - Apache Kafka vs Flume

一世。工具类型
Apache Kafka - 对于多个生产者和消费者,它是一种通用工具。
Apache Flume - 它是一种用于特定应用程序的专用工具。
II。复制功能
Apache Kafka - 使用摄取管道,它复制事件。
Apache Flume- 它不会复制事件。

湾 RabbitMQ与Apache Kafka

最重要的Apache Kafka替代品之一是RabbitMQ。那么,让我们看看它们之间的区别如何:

技术图片

Kafka教程 - Kafka与RabbitMQ

一世。功能
Apache Kafka - 基本上,Kafka是分布式的。此外,凭借有保证的持久性和可用性,数据可以共享和复制。
RabbitMQ - 它对这些功能的支持相对较少。
II。性能速度
Apache Kafka  -其性能速率高达100,000条/秒。
RabbitMQ - 然而,RabbitMQ 的性能速率约为20,000条/秒。
III。处理
Apache Kafka  -它允许可靠的日志分布式处理。此外,Kafka Streams内置的流处理语义。
RabbitMQ  -在这里,消费者只是基于FIFO,从HEAD读取并处理1乘1. 
让我们学习Kafka与RabbitMQ

C。传统的排队系统与Apache Kafka

技术图片

Kafka教程 - 传统排队系统与Apache Kafka

一世。保留
传统排队系统  的消息 - 大多数排队系统在通常从队列末尾处理消息后删除消息。
Apache Kafka  - 此处,消息在处理后仍然存在。当消费者收到它们时,它们不会被移除。
II。基于逻辑的处理
传统的排队系统  - 它不允许基于类似的消息或事件处理逻辑。
Apache Kafka  - 它允许基于类似的消息或事件处理逻辑。

所以,这就是Apache Kafka Tutorials。希望你喜欢我们的解释。

15.结论:Kafka教程

因此,在这个Kafka教程中,我们已经看到了Apache Kafka的概念。此外,我们讨论了Kafka组件,用例和Kafka架构。最后,我们看到了Kafka与其他消息传递工具之间的比较。此外,如果您对Kafka Tutorial有任何疑问,请随时在评论部分询问。
另请参阅 -  
Kafka Consumer 
供参考

Apache Kafka教程

标签:输入   quick   学习   amqp   移除   关系数据库   stream   规模   配置   

原文地址:https://www.cnblogs.com/a00ium/p/10849861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!