锁屏面试题百日百刷,每个工作日保持更新面试题。 请看到最初就能获取你想要的, 接下来的是今日的面试题:
1. 请简略形容一下 kafka 中消费者的负载平衡机制 **
Kakfa 的消费者负载平衡规定, 在一个消费者组内, 监控某一个 topic 的消费者的数量最多和这个 topic 的分片数量是相等的 如果大于了分片的数量, 必然会有消费者处于闲置的状态.
2. 当消费者无奈及时生产 kafka 中数据, 呈现了音讯积压, 如何解决呢?**
1) 能够减少消费者的数量 (留神: 最多和 topic 的分片数量相等, 并保障都在一个组内)
2) 如果无奈减少, 能够调整 topic 的分片数量, 以此来减少更多的消费者
3) 调整消费者的音讯的机制, 让其生产的更快
3. 请阐明 kakfa 中音讯的存储和查问的机制 **
在 kafka 中, 数据的存储都是分布式存储, 一个 topic 的数据被分在了多个分片上, 而后最终让每个分片的多个副原本存储, 而正本的数据就是存储在 kafka 的设定的数据目录下, 在每个正本下, 数据都是分文件段的模式来存储, 一个文件段中次要蕴含两个文件一个 log 文件. 一个 index 文件,index 文件存储了 log 数据文件的索引信息, 保障后续的查问更快, 每个文件段最多存储 1GB 的数据, 达到后, 就会滚动造成一个新的文件段, 同时文件名称代表了此文件存储音讯的起始偏移量信息
文件查问机制: 当查问某一个 topic 的也是先去从各个主正本中确定数据在那个正本中, 而后找到这个正本的对应的文件段, 接着查问这个文件段中 index 文件, 找到音讯在 log 文件的物理偏移量地位, 最终到 log 文件中程序查问到这条音讯
4. 请阐明 kafka 生产者的数据散发策略有几种?**
1) hash 取模计算法 在发送数据的时候须要传递 key 和 value . 默认依据 key 的 hash
2) 粘性分区 (2.4 版本下: 轮询计划)
当生产者去发送数据时候, 个别都是采纳批量的发送计划, 当发送一批数据到 broker 端后 首先会先随机抉择其中一个分片, 而后尽可能粘住这个分片, 将这一批数据全副交给这一个分片老版本轮询计划:
当生产者去发送数据时候, 个别都是采纳批量的发送计划, 当发送一批数据到 broker 端后, 依据分片的数量, 将一批数据切分为多个小的批次, 一个批次对应一个分片, 而后写入到 topic 的各个分片上
粘性分区益处: 缩小两头这个切分的计划, 间接将一批全副写入给某一个分片即可同时也会缩小了两头 ack 响应的次数 从而来晋升效率
3) 指定给某一个分片: 在产生数据的时候, 能够设置定制的分区编号, 来实现
4) 自定义散发策略:
4.1) 创立一个类, 实现 Partitioner 接口, 4.2) 重写其接口中办法: partition(次要的办法) close
partition 办法中参数:
String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, cluster cluster : 通过此对象 能够获取对应 topic 有几个分片
4.3) 将自定义的分区类 配置到生产者的配置对象中:
key: partitioner.class
value: org.apache.kafka.clients.producer.internals.DefaultPartitioner
**
**
全部内容在 git 上, 理解更多请点我头像或到我的主页去取得,谢谢 **