面试必懂的Kafka核心概念

栏目: 后端 · 发布时间: 5年前

内容简介:JMS:Java对于应用程序之间进行异步交互信息的API.P2P一对一消息传递,消费者需要主动从队列中获取,消息不会自动推送,且消息被消费后就会从队列中删除,所以不会有重复消费的场景。

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

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

面试必懂的Kafka核心概念

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

  1. Publish/Subscribe(发布订阅)

面试必懂的Kafka核心概念

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

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

二、Kafka拓扑结构

面试必懂的Kafka核心概念

三、Kafka核心概念

Broker

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

Producer

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

Consumer

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

Consumer Group

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

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也进行读的话,可能会让系统变得更复杂。个人感觉后续版本也可以提供这个功能。

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

3. Partition和Consumer Group关系:

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

面试必懂的Kafka核心概念

3. Kafka基础概念总结图

面试必懂的Kafka核心概念

注:本文图片均来自网上资料收集


以上所述就是小编给大家介绍的《面试必懂的Kafka核心概念》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

学习JavaScript数据结构与算法

学习JavaScript数据结构与算法

[巴西] 格罗纳(Loiane Groner) / 孙晓博、邓钢、吴双、陈迪、袁源 / 人民邮电出版社 / 2015-10-1 / 39.00

本书首先介绍了JavaScript语言的基础知识,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、顺序搜索、二分搜索,还介绍了动态规划和贪心算法等常用的高级算法及相关知识。一起来看看 《学习JavaScript数据结构与算法》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具