1、kafka是如何做到高效读写
1)Kafka 本身是分布式集群,可以采用分区技术,并行度高
2)读数据采用稀疏索引,可以快速定位要消费的数据。(mysql中索引多了之后,写入速度就慢了)
3)顺序写磁盘
4)页缓存 + 零拷贝技术
2、Kafka集群中数据的存储是按照什么方式存储的?
缓存存储;日志存储
3、kafka中是如何快速定位到一个offset的。
从特定的offset读取消息:客户端会创建一个从该offset开始的消费者,并使用seek(TopicPartition partition, long offset)方法来定位
4、简述kafka中的数据清理策略。
Kafka中的数据清理策略主要有两种:日志保留策略和删除策略
1)日志保留策略:
按照时间保留:通过log.retention.hours或log.retention.minutes配置,Kafka会保留消息在一定的时间内(默认为7天)。
按照大小保留:通过log.retention.bytes配置,Kafka会保留消息直到日志大小超过这个值(默认为-1,即不限制大小)。
2)删除策略:
日志段文件的删除:当一个日志段文件的所有数据都被消费完成后,它会被标记为删除,并在后台进行清理。
清理操作的触发:通过log.cleaner.enable配置,开启清理器可以进行删除操作。
删除策略配置:通过cleanup.policy配置,可以设置为delete或compact,分别代表直接删除或者压缩后删除数据。
5、消费者组和分区数之间的关系是怎样的?
当消费者数量小于分区数量时:每个消费者会分配到相应的分区,确保每个分区都被消费。如果消费者数量少于分区数量,未被分配到分区的消费者将处于闲置状态。
当消费者数量大于分区数量时:多余的消费者将不会被分配到任何分区,处于闲置状态。因此,为了充分利用资源,需要确保分区数量与消费者数量相匹配。
6、kafka如何知道哪个消费者消费哪个分区?
Kafka通过分区分配策略来决定哪个消费者消费哪个分区
Kafka的分区分配策略:
RangeAssignor(范围分配):这是Kafka的默认分配策略。它根据消费者的数量和主题的分区数量,将分区均匀地分配给每个消费者。例如,如果有10个分区和3个消费者,每个消费者将获得大约3.33个分区。
RoundRobinAssignor(轮询分配):这种策略将分区顺序分配给消费者,每个消费者依次消费一个分区。这种策略适用于所有消费者消费速率大致相同的情况。
StickyAssignor(粘性分配):这种策略尽量保持消费者的分区分配不变,除非必要。它试图减少因消费者增减而引起的频繁重新分配。
CooperativeStickyAssignor(协作粘性分配):这是StickyAssignor的改进版本,它通过协作方式减少重新分配的发生,适用于消费者数量经常变化的情况
7、kafka消费者的消费分区策略有哪些,默认是哪个?
RangeAssignor;RoundRobinAssignor;StickyAssignor
Kafka消费者的默认消费分区策略是RangeAssignor
标签:面试题,消费者,分区,Kafka,kafka,分配,策略 From: https://blog.csdn.net/qq_70299193/article/details/143693201