当前位置: 首页 > news >正文

Kafka拷打!!!

8. Kafka是如何保证消息不丢失?

Kafka 防丢一般从三端保证。生产者端设置acks=all、开启重试和失败回调,必要时开启幂等生产者。Broker 端用多副本,配置合理的replication.factormin.insync.replicas,并关闭不干净 leader 选举。消费者端关闭自动提交 offset,业务处理成功后再手动提交。这样通常能保证不丢,但可能重复消费,所以业务要做幂等。

9. Kafka中消息的重复消费问题如何解决?

Kafka 重复消费一般不能完全避免,常见情况是业务已经处理成功了,但 offset 还没提交,消费者宕机或者发生 rebalance,之后这条消息会被重新拉取。

因此真正的核心是业务幂等。比如订单支付消息,可以用订单号或者消息唯一 ID 做去重,先判断这条消息或这个订单是否已经处理过;如果已经处理过就直接跳过。数据库层也可以加唯一索引,或者用 Redis 记录已消费消息,保证重复消费不会产生错误结果。

10. Kafka是如何保证消费的顺序性?

Kafka 保证的是单个 Partition 内有序,不保证整个 Topic 多分区的全局顺序。如果业务要求顺序,比如同一个订单的状态变更,就要用相同的业务 key,比如orderId,让这些消息进入同一个 Partition。消费者端也要按顺序处理,不能对同一分区随意并发消费。全局有序可以只用一个 Partition,但吞吐量会下降。

11. Kafka的高可用机制了解吗?

Kafka 的高可用主要是靠集群和分区副本机制实现的。

Kafka 集群里会部署多个 Broker,Topic 会被拆成多个 Partition。每个 Partition 可以配置多个副本,比如 3 副本,其中一个是 leader,其他是 follower。正常情况下,生产者和消费者主要和 leader 交互,follower 会从 leader 同步数据。

如果某个 Broker 宕机,Kafka 的 Controller 会感知到,然后对受影响的 Partition 重新选举 leader。一般会优先从 ISR 里面选新的 leader,因为 ISR 里的副本和原 leader 数据比较同步。这样只要还有可用副本,就可以继续对外提供服务。

12. 解释一下复制机制中的ISR?

是什么->具体情况->作用

ISR 是 Kafka 的同步副本集合,包含 leader 和同步状态良好的 follower。Kafka 会动态维护 ISR,follower 如果长时间落后 leader,就会被踢出 ISR,追上后可以重新加入。leader 宕机时会优先从 ISR 中选新 leader,因为这些副本数据相对最新。它还会配合acks=allmin.insync.replicas提高消息可靠性。

13. Kafka数据清理机制了解吗?

Kafka 的数据清理主要是基于日志保留策略,不是消费者消费完就立即删除。

Kafka 底层是追加写日志,日志会切成多个 segment。
最常见的清理策略是delete,也就是按照保留时间或者日志大小删除旧数据。比如可以配置消息保留 7 天,或者某个 Topic 的日志超过一定大小后,清理最旧的日志段。
除了删除策略,Kafka 还有一种compact日志压缩策略。它不是简单删除旧消息,而是针对相同 key 的消息,只尽量保留最新的一条,适合一些状态类数据,比如配置变更、用户状态或者 CDC 场景。

所以总结一下,Kafka 数据清理主要有两类:一种是按时间或大小删除旧日志,另一种是按 key 做日志压缩。

14. Kafka中实现高性能的设计有了解过吗?

Kafka 高性能主要靠几个设计:
第一是分区机制,一个 Topic 拆成多个 Partition,可以并行写入和消费;
第二是追加写日志,主要走顺序磁盘 IO;
第三是利用操作系统 Page Cache,减少真实磁盘访问;
第四是消费数据时使用零拷贝,减少数据拷贝开销;另外还有批量发送和消息压缩,减少网络 IO,提高整体吞吐量。

http://www.cnnetsun.cn/news/2748057.html

相关文章:

  • ICode竞赛Python一级通关秘籍:手把手教你搞定路线规划题(附20关代码详解)
  • 从零开始电路设计:智能感温杯垫实战与电子制作全流程解析
  • 基于免疫机制增强的MATLAB物流路径求解工具包(含真实数据与动态可视化)
  • 本科生可用的坐姿监测系统源码:带训练模型、语音提醒和图形界面
  • NAS跑大模型实战:GLM-5在家庭服务器上的部署与优化
  • AI工具链如何重塑CISSP/CEH认证路径:5大不可逆趋势与3步迁移方案
  • MCA Selector:让你的Minecraft世界重获新生的智能管家
  • MATLAB遗传算法实战:手把手教你为外卖站点或前置仓做智能选址排线
  • 单北斗GNSS在桥梁与大坝变形监测中的应用与发展分析
  • Navicat Mac版终极重置教程:3步解锁永久免费试用
  • 用Makey Makey自制久坐提醒传感器:从物理开关到健康管理
  • 基于聊天应用的远程患者管理:从工具到平台的医疗模式创新
  • 别再手动画进度条了!用Excel的复选框和COUNTIF函数,5分钟搞定动态项目仪表盘
  • VisualCppRedist AIO项目下载异常的处理与优化指南
  • ESP8266-01S双模式切换全攻略:从AT指令调试到固件烧录,一套接线搞定
  • transformer 挑战者 mamba 架构,线性attention RNN给改进iclr 2024拒稿
  • C++ MPI多进程协同筛素数:从基础分区到通信优化的完整实现包
  • 2017-2025年第一至十批绿色工厂名单匹配数据
  • 实战避坑:在Omni-Path或Slingshot网络中配置Dragonfly路由算法
  • BetterJoy:5步实现Switch手柄在电脑上的完美适配方案
  • 二抗选型别乱买!云克隆用教你读懂二抗核心作用、分类与选型底层逻辑
  • 告别玄学调试:用AURORA CHIP2CHIP的回环测试,给你的FPGA板级验证上个保险
  • 从废弃VCR屏到Arduino游戏机:硬件逆向与动态复用驱动实战
  • 太阳能4G远程机器人:能源管理与通信架构实战解析
  • VS2022 + OpenCV 4.9.0 环境配置避坑指南:从‘无法打开源文件’到成功运行
  • 基于STM8的精确脉冲发生器:从定时器原理到工程实践
  • 别再乱试了!聊聊ETH私钥碰撞的真实原理与安全边界(附多链工具避坑指南)
  • 基于树莓派与Flask的智能安防摄像头系统:从硬件连接到Web控制
  • 避开性能陷阱:CUDA异步编程与流(Stream)实战指南(附性能对比测试)
  • 鸿蒙 Flutter 项目里的平台能力层应该怎么命名和封装