《Kafka入门与实战》----------学习笔记

1.三大特性

1.能够允许发布和订阅流数据。
2.存储流数据时提供相应的容错机制
3.当流数据到达时能够及时被处理

2.基本概念

1.主题:

Kafka将一组消息抽象归纳为一个主题(topic),也就是说一个主题就是对消息的一个分类

2.消息:

消息是Kafka通信的基本单位,由一个固定长度的消息头和一个可变长度的消息体构成。

3.分区和副本

1.Kafka将一组消息归纳为一个主题,而每个主题又被分成一个或多个分区(Partition)。每个分区由一系列有序、不可变的消息组成,是一个有序队列。
2.分区使得Kafka在并发处理上变得更加容易,理论上来说,分区数越多吞吐量越高,但这要根据集群实际环境及业务场景而定。同时,分区也是Kafka保证消息被顺序消费以及对消息
进行负载均衡的基础。
3.Kafka只能保证一个分区之内消息的有序性,并不能保证跨分区消息的有序性。每条消息被追加到相应的分区中,是顺序写磁盘,因此效率非常高,这是Kafka高吞吐率的一个重要保证。同时与传统消息系统不同的是,Kafka并不会立即删除已被消费的消息,由于磁盘限制消息也不会一直被存储(事实上这也是没有必要的),因此Kafka提供两种删除老数据的策略,一是基于消息已存储的时间长度,二是基于分区的大小。这两种策略都能通过配置文件进行配置,

4.Leader 副本和 Follower 副本

由于Kafka副本的存在,就需要保证一个分区的多个副本之间数据的一致性,Kafka会选择该分区的一个副本作为Leader副本,而该分区其他副本即为Follower副本,只有Leader副本才负责处理客户端读/写请求,Follower副本从Leader副本同步数据。
副本Follower与Leader的角色并不是固定不变的,如果Leader 失效,通过相应的选举算法将从其他Follower副本中选出新的Leader副本。

5.偏移量

任何发布到分区的消息会被直接追加到日志文件(分区目录下以“1og”为文件名后缀的数据文件)的尾部,而每条消息在日志文件中的位置都会对应一个按序递增的偏移量。

6.代理

Kafka集群就是由一个或者多个Kafka实例构成,我们将每一个Kafka实例成为代理(Broker),通常也称代理为Kafka服务器(KafkaServer)

7.消费者和消费者组

消费者(Comsumer)以拉取(pul)方式拉取数据,它是消费的客户端。在Kafka中每消费者都属于一个特定消费组(ConsumerGroup),我们可以为每个消费者指定一个消费组,groupld 代表消费组名称,通过 group.id 配置设置。如果不指定消费组,则该消费者属于默消费组 test-consuner-group。

8.ISR

Kafka在zookeeper中动态维护了一个ISR(In-sync Replica),即保存同步的副本列表,该列表中保存的是与Leader副本保持消息同步的所有副本对应的代理节点id。如果一个Follower副本宕机或是落后太多,则该Follower副本节点将从列表中移除。

9.ZooKeeper

Kafka利用zookeeper保存元数据信息,Kafka元数据信息包括代理节点信息、Kafka集群信息、主题信息、分区状态信息、分区副本分区方案信息。
Kafka在启动或运行过程当中会在ZooKeeper上创建相应的节点来保存云数据信息,Kafka通过监听机制在这些节点注册相应监听器来监听节点元数据信息的变化,从而由Zookeeper负责管理维护Kafka集群,同时又能够很方便的对Kafka集群进行水平扩展及数据迁移。
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_48929324/article/details/115701802