Rebalance
1、一个consumer group消费多个Topic,选择什么Rebalance策略
答:选择Round Robin或者Sticky策略,其中最好是Sticky策略。如果选择Range策略,平衡分数(rebalance score,衡量消费平衡性的指标,分数越高,平衡性越差)会很高。
2、KafkaConsumer实例的时候,哪些参数设置不合理会导致频繁的Rebalance
答:session.timeout.ms consumer---->consumer group 之间超时时间,超时会导致kafkaconsumer 被踢出不能再被消费,通过Generation标识控制
max.poll.interval.ms,consumer---->Broker两次取数的时间间隔
消息有序性
kafka做不到消息的全局有序性,消息有序性从Producer和Consumer两个角度分析。
Producer:
1、单pid+sequence+partition(key)、打开幂等,可确保发送方的有序性,
max.in.flight.requests.per.connection | 1 |
retries | 大于0 |
acks | all |
2、跨pid不能保证有序性,建议使用pid+sequence+partition(key)+timestamp(报文增加,给于消息方做排序使用)
Consumer:
1、有序队按key+timestamp排序,存储最近30秒的数据,按升序进行业务逻辑处理。
2、isolation.level 设置为read_commited
消费幂等性
1、enable.auto.commit 设置为false,业务逻辑处理完后再提交
2、isolation.level 设置为read_commited
3、每条消息有唯一流水号,基于流水号做幂等判断(如:redis的set结构或者单进程的BloomFilter)