Producer发送模式
- 同步发送
- 异步发送
- 异步发送回调
Producer源码讲解
-
Producer发送流程:1.构建对象 2.发送消息
-
KafkaProducer构建clientId,为了给metricConfig(上报指标),初始化Serializer,加载partition负载均衡器,初始化RecordAccumulator类似于计数器,守护线程
-
Producer是线程安全的
-
Producer批量发送,减少磁盘IO操作,kafka日志是追加的方式,保证顺序
-
Producer.send计算分区,计算批次,accumulator.append达到一定阈值就会发送
-
创建批次,想批次追加消息
Producer发送原理
- 直接发送
- 负载均衡(kafka的数据是可以控制在哪个partition上)
- 异步发送(内存里面积累数据,当数据达到一定的阈值/时间,就会按照批次发送)
消息传递保障
- 最多一次(收到0到1次)
- 至少一次(收到1到多次)
- 正好一次(有且仅有1次)