Bootstrap

2、Kafka消息发送机制

1 消息发送核心流程

2 生产者初始化过程

3 消息发送具体流程

4 生产者内存池设计

5 生产者配置参数

6 Kafka Producer 源码分析

 

1 消息发送核心流程


2 生产者初始化过程


1、设置分区器

2、设置重试机制  retry.backoff.ms,默认100ms

3、设置序列化器

4、设置拦截器(国过滤器),意义不大

5、设置获取元数据metadata(每隔5min自动更新一下元数据

6、设置单条消息大小,超过这个值消息就不能发送过去,默认1M,实际生产环境比这个要大(经验值10M)

7、设置压缩方式,提高吞吐量,相应的会消耗CPU

8、设置缓存大小,默认32M,一般够用

9、初始化一个管理网络的组件 NetWorkClient(几个重要的参数)

10、初始化一个发送消息的线程Sender 并 启动

生产端往kafka集群发送消息时,可以通过request.required.acks参数来设置数据的可靠性级别

  • 1:默认为1,表示在ISR中的leader副本成功接收到数据并确认后再发送下一条消息,如果主节点宕机则可能出现数据丢失

  • 0:表示生产端不需要等待节点的确认就可以继续发送下一批数据,这种情况下数据传输效率最高,但是数据的可靠性最低

  • -1:表示生产端需要等待ISR中的所有副本节点都收到数据之后才算消息写入成功,可靠性最高,但是性能最低,如果服务端的min.insync.replicas

;