生产者
生产者架构
发送流程
┌─────────────────────────────────────────────────────────────┐
│ Kafka Producer │
│ │
│ ┌──────────┐ ┌────────────┐ ┌─────────────────────┐ │
│ │ 业务线程 │───▶│ Serializer │───▶│ Partitioner │ │
│ │ send() │ │ 序列化器 │ │ 分区器 │ │
│ └──────────┘ └────────────┘ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────┐ │
│ │ RecordAccumulator │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │Batch│ │Batch│ │Batch│ │ │
│ │ │ P0 │ │ P1 │ │ P2 │ │ │
│ │ └─────┘ └─────┘ └─────┘ │ │
│ └───────────────┬────────────┘ │
│ │ │
│ ┌────────────┐ │ │
│ │ Sender │◀─────────────────────────────┘ │
│ │ Thread │ │
│ └─────┬──────┘ │
│ │ │
└────────┼─────────────────────────────────────────────────────┘
│
▼
Kafka Broker核心组件
组件
作用
发送方式
三种发送方式
发送方式对比
方式
特点
适用场景
分区策略
默认分区策略
分区策略详解
自定义分区器
批量发送与压缩
批量发送
批量参数配置
压缩配置
算法
压缩率
CPU 消耗
适用场景
关键配置参数
可靠性相关
性能相关
幂等性与事务
幂等性 Producer
事务 Producer
完整代码示例
面试高频问题
1. 如何保证消息不丢失?
2. 如何保证消息有序?
3. batch.size 和 linger.ms 的关系?
4. 幂等性如何实现的?
总结
Last updated