【Kafka学习笔记3】Kafka的基本概念

来源:

1、《Apache Kafka实战》胡夕 著

2、Kafka官方文档

1、kafka是什么

kafka既是消息引擎,也是一个分布式流式处理平台。

kafka的处理流程概括起来如下图:
在这里插入图片描述

  • kafka是一个集群
  • 依托zookeeper进行服务的协调管理
  • kafka能够接收生产者发布的消息到topic中,并由多个消费者订阅这些topic
  • kafka集群将流数据存储在一群叫做topic的结构中,每个记录由一个键、一个值、一个时间戳组成
  • kafka能够对流数据进行处理
  • kafka能够以容错、持久化的方式储存流式数据
  • 官方采用broker代表Kafka服务器

2、消息

Kafka中的消息是一个结构化的数据,有很多字段,包括管理消息的元数据、消息键、消息体。

Kafka使用紧凑的 **二进制字节数组 ** 保存消息,没有多余的比特位浪费。

Kafka的消息格式经历了V0V1V2三个版本的演变。

…待补充

3、topic

topic —— 主题

topic只是一个逻辑概念,代表了一类消息,也可以理解为消息发送的目的地。

一个topic可以被多个消费者订阅。

4、partition

partition —— 分区

Kafka通过partition来分散负载。
在这里插入图片描述
一个topic由多个partition组成,每个partition都有自己的序列号,从0开始。

只能在每个partition的尾部追加新的消息,每条消息都会被分配一个唯一的序号,叫做offset,值是从0递增的整数。

5、offset

offset—— 位移

partition下的每条消息都会被分配一个唯一的offset值。

因此,Kafka中的每一条消息的位置其实就是一个<topic, partition, offset>三元组,通过这个三元组,我们可以在Kafka集群中找到唯一的那条消息。

6、replica

replica —— 副本

Kafka集群是分布式的系统,为了实现高可靠性,采用冗余机制,保存一条消息为多个副本。

replica存在的唯一目的就是防止数据丢失。

replica分为两类:(1)leader replica领导者副本)、(2)follower replica追随者副本)。

7、leader和follower

Kafka的副本分为leaderfollower两类。

只有leader对外提供服务,所有的follower只是被动地从leader获取数据,保持和leader同步。

一旦leader宕机,立即会有一个follower被选举为leader接替它的工作。

Kafka会保证同一个partition下的多个replica不会分配到同一个broker上面。

8、ISR

ISR —— in-sync replica,也就是和leader保持同步的replica集合,通常情况下是包含leader在内的。

Kafkapartition动态维护一个replica集合。该集合中的所有replica保存的消息日志都与leader保持同步状态。只有这个集合中的replica才能被选举为leader,也只有该集合中的所有replica都接收到了同一条消息,Kafka才会将该消息置为 “已提交” 状态,即认为这条消息发送成功。

Kafka会保证:如果这个集合中至少存活一个replica,那么那些 “已提交” 的消息就不会丢失。

Kafka会动态地维护该集合。当其中一些replica滞后于leader状态一定程度之后,会被 “踢出” 这个ISR;而当这些replica的状态重新 “追上” leader之后,由会被 “加入” 这个ISR

发布了178 篇原创文章 · 获赞 152 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/hbtj_1216/article/details/104110522
今日推荐