面试题总结--kafka

面试题总结–kafka

文章目录

  • 面试题总结--kafka
    • 1. kafka topic数量过多对kafka有什么影响
    • 2. kafka的ISR副本同步队列
    • 3. kafka如何保证精准一次消费

1. kafka topic数量过多对kafka有什么影响

问题:
topic数量过多,会导致总分区数很多,磁盘读写退化为随机,影响性能

解决方案:

2. kafka的ISR副本同步队列

ISR(In-Sync Replicas),副本同步队列。ISR 中包括 Leader 和 Follower。如果 Leader进程挂掉,会在 ISR 队列中选择一个服务作为新的 Leader。有 replica.lag.max.messages(延迟条数)和 replica.lag.time.max.ms(延迟时间)两个参数决定一台服务是否可以加入 ISR 副本队列,在 0.10 版本移除了 replica.lag.max.messages 参数,防止服务频繁的进去队列。
任意一个维度超过阈值都会把 Follower 剔除出 ISR,存入 OSR(Outof-Sync Replicas)列表,新加入的 Follower 也会先存放在 OSR 中。

3. kafka如何保证精准一次消费

方案一:利用关系型数据库的事务进行处理
出现丢失或者重复的问题,核心就是偏移量的提交与数据的保存,不是原子性的。如果能做成要么数据保存和偏移量都成功,要么两个失败。那么就不会出现丢失或者重复了。这样的话可以把存数据和偏移量放到一个事务里。这样就做到前面的成功,如果后面做失败了,就回滚前面那么就达成了原子性。

方案二:手动提交偏移量+幂等性处理
首先解决数据丢失问题,办法就是要等数据保存成功后再提交偏移量,所以就必须手工来控制偏移量的提交时机。
但是如果数据保存了,没等偏移量提交进程挂了,数据会被重复消费。怎么办?那就要把数据的保存做成幂等性保存。即同一批数据反复保存多次,数据不会翻倍,保存一次和保存一百次的效果是一样的。如果能做到这个,就达到了幂等性保存,就不用担心数据会重复了。

你可能感兴趣的:(面试总结,kafka,大数据,面试,kafka)