锁屏面试题百日百刷,每个工作日保持更新面试题。请看到最初就能获取你想要的, 接下来的是今日的面试题:

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上,理解更多请点我头像或到我的主页去取得,谢谢**