Kafka

kafka如何防止消息丢失?
ack=all且分区ISR数量大于等于2可以保证百分百不会丢失

kafka怎么防止消息重复消费(幂等性)?
全局消息唯一ID
生产者拦截器生成唯一ID作为消息key
消费者执行业务操作数据库和提交offset偏移量这两个操作无法百分百保证事务的原子性(kafka宕机或者数据库宕机)
可以放弃偏移量,用数据库事务的方式百分百保证不会重复消费
消费者连接的数据库建一张本地消息表,消息ID字段唯一索引
消费消息执行业务操作完数据库后往本地消息表中插入消息ID,如果消息重复了就会报唯一冲突就会事务回滚

kafka消息积压怎么优化?
1.增加消费者数量
2.增加分区数量,提高并行消费能力
3.调整消费者的消费能力和参数设置,增加每次拉取的消息数量(fetch size),调整消费者的批量处理配置(batch size)
4.水平扩展 Kafka 集群
5.优化生产者和消费者的性能,异步发送批量发送
6.监控和调整配置: 及时监控 Kafka 集群的状态和指标,例如消息积压量、消费者位移的情况等

kafka高水位机制?

reblance机制?
1.RoundRobinAssignor(轮询分配器):这是一种基本的分配策略,按照消费者实例的顺序依次分配分区,确保每个消费者实例获得近乎相等数量的分区。
2.RangeAssignor(范围分配器):这种策略将分区划分为若干范围,并将每个消费者实例分配一到多个连续范围内的分区。适用于需要将相邻分区分配给同一个消费者的场景。
3.StickyAssignor(粘性分配器):这种策略在一定程度上保持了消费者实例与分区之间的粘性关系,使得消费者在重平衡时尽量保持分区的分配稳定性。
4.CooperativeStickyAssignor(协作粘性分配器):这是一种改进版的粘性分配器,它在粘性的基础上增加了协作机制,通过消费者之间的协调来更好地处理重平衡,降低重平衡带来的消费者停滞时间。

kafka的ack应答级别?
0:生产者发送过来的数据,不需要等数据落盘应答
1:生产者发送过来的数据,Leader收到数据后应答
all:生产者发送过来的数据,Leader和ISR队列里面所有接待你收齐数据后应答。

kafka分区策略?
1.指定分区
2.没指定分区但有key,则将key的hash值取余则为分区号
3.没指定分区也没key,采用粘性分区,随机采用一个分区并一直使用这个分区直到batch满了再选用别的分区

kafka的生产者批量发送参数?
batch.size 批次大小
linger.ms 等待时间
compress.type 压缩类型
RecordAccumulator 缓冲区大小

kafka的消息是顺序的吗?
单个分区中的消息在特定条件下是的
未开启幂等性时max.in.flight.requests.per.connection=1
开启幂等性时max.in.flight.requests.per.connection小于或等于5,会在kafka内存中重新排序
多个分区中的消息无法保证全局的顺序性

相关推荐

  1. kafka

    2023-12-17 10:06:05       58 阅读
  2. <span style='color:red;'>kafka</span>

    kafka

    2023-12-17 10:06:05      49 阅读
  3. Kafka

    2023-12-17 10:06:05       66 阅读
  4. Kafka

    2023-12-17 10:06:05       50 阅读
  5. <span style='color:red;'>KAFKA</span>

    KAFKA

    2023-12-17 10:06:05      70 阅读
  6. <span style='color:red;'>Kafka</span>

    Kafka

    2023-12-17 10:06:05      50 阅读
  7. <span style='color:red;'>Kafka</span>

    Kafka

    2023-12-17 10:06:05      56 阅读
  8. Kafka

    2023-12-17 10:06:05       55 阅读
  9. <span style='color:red;'>Kafka</span>

    Kafka

    2023-12-17 10:06:05      40 阅读
  10. kafka

    2023-12-17 10:06:05       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 10:06:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 10:06:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 10:06:05       82 阅读
  4. Python语言-面向对象

    2023-12-17 10:06:05       91 阅读

热门阅读

  1. pip install默认安装路径

    2023-12-17 10:06:05       65 阅读
  2. MySQL中union和union all的区别

    2023-12-17 10:06:05       62 阅读
  3. OpenGL阴影贴图实例编程

    2023-12-17 10:06:05       65 阅读
  4. 【从客户端理解Kafka的使用方式】

    2023-12-17 10:06:05       62 阅读
  5. CGAL的手柄和循环器

    2023-12-17 10:06:05       53 阅读
  6. 不设默认值(js的问题)

    2023-12-17 10:06:05       64 阅读
  7. 使用PyCharm创建Python项目

    2023-12-17 10:06:05       62 阅读
  8. linux基础知识面试题及一般面试技巧

    2023-12-17 10:06:05       57 阅读