面试必懂的Kafka核心概念,看完搞定面试官

JMS:Java对于应用程序之间进行异步交互信息的API. 两种模式:

  1. Point-to-Point(P2P)(点对点)

面试必懂的Kafka核心概念,看完搞定面试官

P2P一对一消息传递,消费者需要主动从队列中获取,消息不会自动推送,且消息被消费后就会从队列中删除,所以不会有重复消费的场景。

  1. Publish/Subscribe(发布订阅)

面试必懂的Kafka核心概念,看完搞定面试官

Pub/Sub消息组播场景。发布订阅模式可以有多种不同的订阅者,消息推送到各个订阅者,临时订阅者只在主动监听才接受消息,而持久订阅者则监听主题的所有消息。

面试必懂的Kafka核心概念,看完搞定面试官

Kafka提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。

二、Kafka拓扑结构

面试必懂的Kafka核心概念,看完搞定面试官

三、Kafka核心概念

Broker

Broker是Kafka集群的实例或者说服务单元。Broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。Broker为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。多个Broker构成Kafka集群,其中一个Broker会成为集群控制器(cluster controller)即leader,负责管理集群,包括分配分区到broker、监控broker故障等。leader宕机也会进行选举,保证集群高可用。一般Broker分布在不同机器上。

面试必懂的Kafka核心概念,看完搞定面试官

Producer

生产者,创建消息,默认情况下Kafka会将消息均衡分配到所有的分区。可以根据消息的key,使用路由策略,将相同key值的消息写入同一个分区。

Consumer

消费者,可以订阅一个或多个主题。在读取时,消费者会记录当前已经读取的消息位移(offset),一般将该位移称为消费位移。

Consumer Group

Kafka利用消费组进行并行消费,相同Group的consumer不会重复消费,它们之间互不影响。Kafka保证每个分区只会被同一个Group里面的一个Consumer所消费。

面试必懂的Kafka核心概念,看完搞定面试官

Topic

主题,Kafka的消息以主题来进行分类,主题类似数据库中的表。Producer向主题里面丢消息,Consumer从主题拉取消息,形成发布订阅。

Partiton

面试必懂的Kafka核心概念,看完搞定面试官

分区。消息存在主题的队列中,分区就是将主题队列分成小队列,每个小队列都是一个有序不变的消息序列。每个partition在存储层面是append log文件,任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量)或,offset为一个long型数字,它是唯一标记一条消息。分区的存在大大提升Kafka的吞吐量。

Replication

副本,Kafka的消息存放在副本中,副本分为leader和follower,可以在配置中指定副本数量,副本存放在不同的Broker进程中,每个分区可配置多个副本实现高可用

面试必懂的Kafka核心概念,看完搞定面试官

上图中:

3个Broker服务:Broker0,Broker1,Broker2

3个分区:partition0,partition1,partition2

2个副本:一个leader,一个follwer

同一个分区的不同副本放在不同的Broker上,同时每个分区的主副本均匀分布。

四、Kafka相关知识点:

1. Kafka没有做读写分离,消息的读写都在分区的leader Replica上完成,follower Replica只是作为数据冗余。

没做读写分离的原因:1)Kafka中使用分区和副本,分区的leader副本均匀分布在不同的Broker上,这本身已经对流量做了负载,没必要再做读写分离。

2)Kafka中保存的是流数据,需要Offset,而数据库中的数据是静态的,如果对follower也进行读的话,可能会让系统变得更复杂。个人感觉后续版本也可以提供这个功能。

面试必懂的Kafka核心概念,看完搞定面试官

2. Kafka只保证分区下的消息有序,不能保证Topic下的消息有序

3. Partition和Consumer Group关系:

  • 一个partition只能被同组的同一个consumer消费
  • 同一组的一个Consumer可以消费不同的Partition
  • 消费效率最高的情况是partition和consumer数量相同
  • Consumer数量大于Partition数量时,会有Consumer闲置

面试必懂的Kafka核心概念,看完搞定面试官

3. Kafka基础概念总结图

面试必懂的Kafka核心概念,看完搞定面试官

end:如果你觉得本文对你有帮助的话,记得关注点赞转发,你的支持就是我更新动力。

相关推荐