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
值