Kafka核心知识点整理,值得收藏!

消息队列应用场景

  1. 提高系统性能:通过异步处理减少响应时间。
  2. 削峰/限流:应对高并发场景。
  3. 降低系统耦合性:解耦生产者和消费者。

消息队列对比

  • Kafka:高吞吐量,适合日志收集和传输,适合大型公司。
  • RocketMQ:高可靠性,适合金融互联网领域,如电商订单扣款。
  • RabbitMQ:性能好,社区活跃,适合小公司。

基础知识

  • 版本号:如Scala 2.11 - kafka_2.11-2.1.1,Scala版本号 + Kafka版本号。
  • 吞吐量大的原因
    • 顺序读写:消息追加到文件末尾。
    • Page Cache:基于内存的读写操作。
    • 零拷贝、批量读写、批量压缩。
    • 分区分段+索引:按topic和partition存储,建立索引文件。

基本概念

  • 主题(Topic):承载消息的逻辑容器。
  • 分区(Partition):主题下有序不变的消息序列。
  • 消息位移(Offset):消息在分区中的位置。
  • 副本(Replica):数据冗余。
  • 生产者(Producer):发送消息的应用程序。
  • 消费者(Consumer):订阅消息的应用程序。
  • 消费者位移(Consumer Offset):消费者消费进度。
  • 消费者组(Consumer Group):多个消费者实例共同消费。
  • HW(High Watermark):消费者只能消费到此偏移量之前的消息。
  • LEO(Log End Offset):日志文件中下一条待写入消息的offset。

消息模型

  • 消费者策略
    • RangeAssignor:默认策略,分区总数除以消费者总数。
    • RoundRobinAssignor:轮询分配。
    • StickyAssignor:保留现有分配,平衡分配。
    • CooperativeStickyAssignor:允许重构分区策略。
  • Push和Pull:消费端主动拉取消息。
  • 消费者组:共享Group ID,协调消费主题分区。

位移主题

  • 作用:保存消费者位移信息。
  • 创建:自动创建,分区数和副本数可配置。
  • 提交方式:自动提交和手动提交。
  • Compact策略:删除过期消息,避免主题膨胀。

重平衡(Rebalance)

  • 触发条件:组成员数变更、订阅主题数变更、分区数变更。
  • 过程:所有消费者停止消费,等待分配完成。

分区机制

  • 分区策略
    • 轮询策略:顺序分配。
    • 随机策略:随意分配。
    • 消息键策略:相同Key的消息分配到同一分区。

压缩机制

  • 压缩位置:生产者端和Broker端。
  • 解压缩:消息到达Consumer端后解压缩。

拦截器

  • 类型:生产者拦截器和消费者拦截器。
  • 设置方法:通过interceptor.classes参数配置。

副本机制

  • 副本角色:领导者副本处理请求,追随者副本同步数据。
  • ISR副本集合:与Leader同步的副本集合。
  • Unclean领导者选举:允许非同步副本成为领导者。

控制器(Broker)选举

  • 控制器:管理和协调Kafka集群。
  • 优先副本选举:尽可能让优先副本成为Leader副本。

幂等性

  • 支持版本:0.11.0.0及以上。
  • 配置:enable.idempotence设置为true。
  • 实现原理:用空间换时间,broker端多存字段标识数据唯一性。

事务

  • 保证:消息写入分区的原子性。
  • 配置:enable.idempotence和transctional.id参数。
  • 处理:数据发送需在beginTransaction和commitTransaction之间。

数据存储

  • 存储单元:Partition。
  • 组织方式:Segment,包括索引文件和数据文件。

请求模型

  • 处理方式:请求到Broker后,通过网络线程池转发到IO线程池处理。

常见场景

  • 重复消费:进程异常退出导致重复消费。
  • 消息丢失:Consumer程序丢失数据。
  • 消息顺序:保证Partition内部有序。
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值