producer线程模型
producer的cpu消耗
- reocrdbatch组装和压缩
- produce request组装和序列化
- 网络发送和数据接收
- callback函数回调
record batch组装
1.从record accumulator 申请 record batch,大小为batch size,申请的recordbatch是可以复用的,
2.将record陆续填充进record batch,record batch中record被存储到连续的内存空间,存储结构按照broker端的数据存储结构组装,在与服务器端版本相同的条件下。 如果record batch满,申请新的record batch。
3. 当recordbatch满后,对recordbatch的数据进行压缩,并计算crc,生成memoryrecord
produce request组装和序列化
1.将符合发送条件的record batch按照broker组合,为了保证发送顺序,每个topic partition只提取一个recordbatch
2.将发送给一个broker的recordbatch组装成produce request
3.将request序列化成Bytebuffer发送
lz4压缩
lz4压缩是在recordbatch填充的同时进行的&