Kafka入门简介

小天
• 阅读 589

简介

Apache Kafka 是一个分布式流处理平台。它能够

  • 发布和订阅数据流
  • 持久化数据流
  • 处理数据流  

其广泛应用于:

  • 构建实时流数据管道,在系统或应用程序之间可靠地获取数据。
  • 构建实时流应用程序以转换或响应数据流。  

Kafka 作为一个集群运行在一个或多个可以跨越多个数据中心的服务器上。Kafka 集群将数据流存储在称为主题的类别中。每条记录由一个键、一个值和一个时间戳组成。 Kafka入门简介  

Kafka 有以下核心 API:

  • Producer 生产者: 应用程序可以将数据流发布到一个或多个Kafka主题。
  • Consumer 消费者: 应用程序可以订阅主题并处理为它们生成的数据流。
  • Streaming 流:应用程序可以充当流处理器,使用来自一个或多个主题的输入流并将输出流生成到一个或多个输出主题,从而有效地将输入流转换为输出流。
  • Connector 连接器: 构建和运行可重用的生产者或消费者,将Kafka主题连接到现有应用程序或数据系统。例如,关系数据库的连接器可能会捕获对表的每次更改。  

在Kafka中,客户端和服务器之间的通信是通过一个简单、高性能、独立于特定语言的TCP 协议完成的。该协议是版本化的,并保持与旧版本的向后兼容性。因此,Kafka提供多语言客户端。

主题和日志

Kafka的核心概念是主题。主题是发布数据流的类别名称。Kafka主题支持多订阅。这意味着一个主题可以有零个,一个或者多个消费者订阅。   对于每个主题,Kafka集群维护一个分区日志,如下所示: 每个分区都是一个有序的、不可变的记录序列,不断地附加到结构化的提交日志中。每个分区中的记录都分配有一个品偏移量序号,它唯一地标识分区中的每个记录。 Kafka入门简介   Kafka集群持久地保存所有已发布的记录,无论它们是否已经被消费者读取。对于某个主题,Kafka支持设置过期时间。比如,如果过期时间设置为两天,则在记录发布后的两天内,它可以使用。超过两天的记录会被丢弃以释放空间。请注意,过期时间不会影响Kafka读取性能,其仅仅影响存储空间。 Kafka入门简介   对于消费者而言,每个消费者保留的唯一元数据是该消费者在日志中的偏移量或位置。这个偏移量是由消费者控制的。通常,消费者在读取记录时会线性增加其偏移量,但是,因为位置由消费者控制,它可以以任何顺序消费记录。例如,消费者可以重置为较旧的偏移量以重新处理过去的数据或跳到最近的记录并从“现在”开始消费。   这种特性组合意味着Kafka消费者可以来去匆匆,而不会对集群或其他消费者产生太大影响。例如,您可以使用命令行工具来“跟踪”任何主题的内容,而无需更改其他消费者使用的内容。打一个比较有意思的比喻:在Kakfa有点像我们小学时候的黑板报,只是它只能写入,不能擦除。生产者像是不断往黑板报上写入内容的写手,而消费者像是不断看内容的看客。

分区

日志分布在Kafka集群中的服务器上,每个服务器处理数据和请求分区共享。每个分区都在可配置数量的服务器上复制以实现容错。   每个分区都有一个充当“领导者”的服务器和零个或多个充当“跟随者”的服务器。领导者处理分区的所有读写请求,而追随者被动地复制领导者。如果领导者失败,其中一个追随者将自动成为新的领导者。每个服务器充当其某些分区的领导者和其他分区的追随者,以便在集群内成功平衡负载。   生产者将数据发布到他们选择的主题。生产者负责选择将哪条记录分配给主题中的哪个分区。这可以为负载平衡以循环方式完成,也可以根据某些语义分区函数(例如,基于记录中的某个键)来完成。   消费者使用消费者组名称标记自己,并且发布到主题的每条记录都被传递到每个订阅消费者组中的一个消费者实例。消费者实例可以位于不同的进程或不同的机器上。如果所有消费者实例都具有相同的消费者组,那么记录将有效地在消费者实例上进行负载平衡。如果所有的消费者实例都有不同的消费者组,那么每条记录都会被广播到所有的消费者进程。 Kafka入门简介   Kafka仅保证分区内记录的顺序,而不是主题中不同分区之间的顺序。理由很简单,某一个消费者仅储存当前订阅分区的偏移量。对于大多数应用程序而言,这已经能够满足需求了。但是,如果您需要某一主题严格保证顺序,这可以通过只有一个分区的主题来实现,尽管这意味着每个消费者组只有一个消费者进程。总结来说Kafka提供以下顺序保证:

  • 生产者发送到特定主题分区的消息按发送顺序附加。例如,如果记录 M1 与记录 M2 由同一生产者发送,并且 M1 先发送,则 M1 的偏移量将低于 M2,并且出现在日志中的更早。
  • 消费者实例按照记录在日志中的存储顺序查看记录。  

接下来,我们会更加深入谈到Kafka原理,并附加应用实例。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
Kafka 入门和 Spring Boot 集成
Kafka入门和SpringBoot集成概述kafka是一个高性能的消息队列,也是一个分布式流处理平台(这里的流指的是数据流)。由java和Scala语言编写,最早由LinkedIn开发,并2011年开源,现在由Apache开发维护。应用场景下面列举了
Stella981 Stella981
2年前
Kafka概述及安装部署
一、Kafka概述1.Kafka是一个分布式流媒体平台,它有三个关键功能:(1)发布和订阅记录流,类似于消息队列或企业消息传递系统;(2)以容错的持久方式存储记录流;(3)记录发送时处理流。2.Kafka通常应用的两大类应用(1)构建在系统或应用程序之间的可靠获取数据的实时流数据管道;(2)构建转换或响应数据流的实施
Stella981 Stella981
2年前
Kafka
1kafka是用于构建实时数据管道和流应用程序。具有横向扩展,容错wickedfast(变态快)等优点.kafka名词解释producer:消息和数据生产者,向kakfa的一个topic发布消息的过程叫做producerconsumers:消息和数据消费者,订阅topics并发处理其发布的消息的过程叫做consumertopic特指
Stella981 Stella981
2年前
Kafka 简介
Kafka简介_Kafka是分布式流平台。_一个流平台有3个主要特征:发布和订阅消息流,这一点与传统的消息队列相似。以容灾持久化方式的消息流存储。在消息流发生时处理消息流。Kafka通常使用在两大类应用中:在系统或应用之间,构建实时、可靠的消息流管道。构建实时流应用
Stella981 Stella981
2年前
Apache Kafka:大数据的实时处理时代
作者|王国璋编辑|小智在过去几年,对于ApacheKafka的使用范畴已经远不仅是分布式的消息系统:我们可以将每一次用户点击,每一个数据库更改,每一条日志的生成,都转化成实时的结构化数据流,更早的存储和分析它们,并从中获得价值。同时,越来越多的企业应用也开始从批处理数据平台向实时的流数据数据平台转移。本演讲将介绍最近ApacheKafka
韦康 韦康
1个月前
Flink 从0到1实战实时风控系统|同步追更
Flink从0到1实战实时风控系统|同步追更download》quangneng.com/2323/关于Flink从0到1实战实时风控系统的介绍ApacheFlink是一个快速、可扩展且容错的开源流处理和批处理框架。它提供了高效处理大规模数据流和批处理作业
何婆子 何婆子
4个月前
Spark Streaming实时流处理项目实战
SparkStreaming实时流处理项目实战download》chaoxingit.com/691/SparkStreaming是ApacheSpark的一个模块,用于处理实时数据流。它提供了一种简单的方法来处理大规模的实时数据流,如日志数据、社交媒体数
何婆子 何婆子
3个月前
Spark Streaming实时流处理项目实战
SparkStreaming实时流处理项目实战download》chaoxingit.com/691/SparkStreaming是ApacheSpark的一个模块,用于处理实时数据流。它提供了一种简单的方法来处理大规模的实时数据流,如日志数据、社交媒体数
贾蓁 贾蓁
3个月前
Flink 从0到1实战实时风控系统|同步追更
Flink从0到1实战实时风控系统|同步追更Flink实时风控系统概述Flink是一个快速、可扩展且容错的开源流处理和批处理框架,它提供了高效处理大规模数据流和批处理作业的能力,具有低延迟、高吞吐量和精确一次语义等特点1。在实时风控系统中,Flink可以用
程昱 程昱
2个月前
Flink 从0到1实战实时风控系统|同步追更
Flink从0到1实战实时风控系统|同步追更Flink实时风控系统概述Flink是一个快速、可扩展且容错的开源流处理和批处理框架,它提供了高效处理大规模数据流和批处理作业的能力,具有低延迟、高吞吐量和精确一次语义等特点1。在实时风控系统中,Flink可以用
小天
小天
Lv1
男 · Meta · 软件工程师
兴趣是最好的老师。
文章
7
粉丝
7
获赞
10