我是靠谱客的博主 无语小松鼠,最近开发中收集的这篇文章主要介绍kafka问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. kafka的设计是什么样的

kafka以topic为单位进行分组整理,
向kafka发送消息的一方称为producers,生产者
预定并消费kafka信息的一方成为consumer,消费者

kafka以集群的形式出现,可以有一个或者多个服务组成,每一个服务叫做broker
producers将消息发送给集群,集群向consumers发送消息。

2.数据传输中的事务定义

事务定义有三种级别
(1)最多一次:消息不会被重复消费,最多被传输一次,也有可能一次都不传输。
(2)最少一次:消息不会被漏送,最少传输一次,也可能重复传输。
(3)精确的一次:不会漏传,也不会重复。

3.kafka如何判断节点还活着

(1)节点与zookeeper相连接,zookeeper通过心跳机制检查每个节点的连接
(2)能够及时同步节点的写操作

4.producers是否直接将数据发送到所有服务的主节点(leader)

producers直接将数据发送到所有服务的主节点(leader),不需要在多个节点进行分发,为了帮助producer做到这点,所有的kafka节点都可以及时的告知,哪些节点是活动的,目标topic以及对应的分区在哪。

5.kafka中的消费者consumers是否可以消费指定分区的数据

consumer指定了消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息。这样就可以回滚消费已经消费的数据。

6.kafka消费是采用pull还是push

producer 将消息推送到 broker,consumer 从 broker 拉取消息,简单的说就是producer将数据push到服务上,consumer从服务pull消息。
最终 Kafka 还是选取了传统的 pull 模式。
Pull 模式的另外一个好处是 consumer 可以自主决定是否批量的从 broker 拉取数据。Push模式必须在不知道下游 consumer 消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推送。如果为了避免 consumer 崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪费
Pull 有个缺点是,如果 broker 没有可供消费的消息,将导致 consumer 不断在循环中轮询,直到新消息到 t 达。为了避免这点,Kafka 有个参数可以让 consumer 阻塞知道新消息到达。

7.Kafka 存储设计特点

(1)kafka将topic中的一个 parition 大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。
(2).通过索引信息可以快速定位 message 和确定 response 的最大大小。
(3).通过 index 元数据全部映射到 memory,可以避免 segment file 的 IO 磁盘操作。
(4).通过索引文件稀疏存储,可以大幅降低 index 文件元数据占用空间大小。

8.kafka与传统消息队列的区别

(1)kafka是一个持久化日志,这些日志可以被重复读取并且无限期保留。
(2)kafka是一个分布式系统,它以集群形式运行,可以灵活伸缩,在内部通过复制数据提升容错率和高可用性。
(3)支持实时的流数据处理。

9.kafka新建的分区会在那个目录下创建

在启动kafka之前需要配置好log.dirs参数,其值是kafka数据的存放目录,这个参数可以配置多个目录,目录之间使用逗号分隔,通常这些目录是分布在不同的磁盘上用于提高读写性能。当然我们也可以配置 log.dir 参数,含义一样。只需要设置其中一个即可。
但是如果 log.dirs 参数配置了多个目录,那么 Kafka 会在哪个文件夹中创建分区目录呢?
答案是:Kafka 会在含有分区目录最少的文件夹中创建新的分区目录,分区目录名为 Topic名+分区 ID。注意,是分区文件夹总数最少的目录,而不是磁盘使用量最少的目录!也就是说,如果你给 log.dirs 参数新增了一个新的磁盘,新的分区目录肯定是先在这个新的磁盘上创建直到这个新的磁盘目录拥有的分区目录不是最少为止。

10.partition 的数据如何保存到硬盘

topic 中的多个 partition 以文件夹的形式保保存到 broker,每个分区序号从 0 递增,且消息有序
Partition 文件下有多个 segment(xxx.index,xxx.log)
segment 文件里的 大小和配置文件大小一致可以根据要求修改 默认为 1g
如果大小大于 1g 时,会滚动一个新的 segment 并且以上一个 segment 最后一条消息的偏移
量命名

最后

以上就是无语小松鼠为你收集整理的kafka问题的全部内容,希望文章能够帮你解决kafka问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部