简介
相信从事IT行业的你一定有听过Kafka这门消息队列技术。个人认为是随着行业的不断成熟,出现了越来越多的系统,系统间的信息传输愈发频繁,这促使了消息队列技术的诞生。而Kafka由于其较强的性能与可靠性在各类技术中脱颖而出。
希望本篇文章能对你入门Kafka带来一点帮助。
基础架构说明
作为消息队列技术,就类似于Kafka当个快递员,把快递(消息)从A传输到B手中。如上图所示,小智A就是消息生产者(Producer),可达鸭B就是消息消费者(Consumer)
如果小智把食物发给可达鸭一只神奇宝贝,那运输的过程十分简单。但如果小智这时打算把食物分发给多个神奇宝贝,却只给了一大盒食物,神奇宝贝在吃食物的时候就容易抢食;
所以小智学聪明了,他决定把食物放到3个盒子里,分别对应3个神奇宝贝;这样他们就能有序的吃自己的食物,不容易混乱。这种把食物(消息)分成多份,并与消费者一一对应的方法,在Kafka里就叫分区Partition。
emmmm… 我觉得我编不下去了哈哈哈,放一下Kafka的各种术语的解释吧!
基础专业术语解释
-
Producer
消息生产者; 如Flume抽取的数据;
如小智买的食物; -
Consumer
消息消费者; 如Spark Streaming消费数据;
如想吃食物的可达鸭 -
Consumer Group
消费者组; 由多个 Comsumer组成;
如上图中吃食物的杰尼龟,可达鸭,皮卡丘 -
Broker
一台服务器就是一个Broker
编不下去了… -
Topic
可以理解为一个队列;生产者与消费者面向的都是一个队列;
好比食物的种类? -
Partition
分区,类似Spark中的Partition;将数据分到不同的Partition中;但每个Partition都是一个有序队列;
相当于上图中的饲料碗,保证喂食有序进行… -
Replica
副本,当集群故障的时候可以快速恢复数据;
每个Partition有多个Replica副本;
每个分区Partition都有一个Leader和多个Follower -
Leader
Partition中的主信息;Producer发送数据的对象,Consumer消费数据的对象;
我觉得Leader某种程度上等价于Partition; -
Follower
不停的向Leader同步数据;当Leader挂掉的时候,Follower就会重新竞选生成Leader;
面试题
-
Kafka中的ISR,AR代表什么?
ISR(In-Sync Replica): 与 Leader保护同步的follower集合
AR(Assigned Replica): 分区的所有副本 -
Kafka中的HW,LEO等分别代表什么?
LEO (Log End Offset): 当前日志文件中的下一条要写入消息的Offset
HW (High Watermak): 高水位,标志Consumer可消费的日志的范围;
如 HW = 6,则Consumer可消费的范围是0 ~ 5https://www.cnblogs.com/yoke/p/11486196.html
-
Kafka中是怎么体现消息顺序性的?
每个分区内,每条消息都有一个offset,保证分区内有序 -
Kafka中的分区器,序列化器,拦截器是否了解?他们之间的顺序是如何?
拦截器 --> 序列化器 --> 分区器 -
Kafka生产者客户端的整体结构是什么样子的?使用了几个线程来处理?
main线程,sender线程 -
讨论消费者组中的消费者个数 M 与 topic的分区数 N 关系
M > N: 有消费者无法数据
M = N: 消费者 与 分区 一一对应
M < N: 有消费者消费多个分区