### pulsar大小
- entry大小
1. pulsar_entry_size_sum / pulsar_entry_size_count = entry 总大小 / entry 总数量 = 平均每个 entry 多大
- msg大小
1. 前情提要: Producer 发给 Broker 的确可能是一个 batch,但这个 batch 里面会带 batch metadata,Broker 能知道里面有多少条 message。
2. 计算平均每个entry包含多少消息数 = 平均每个 entry 多大 / 平均每条 message 多大
3. pulsar_throughput_in / pulsar_rate_in = 写入吞吐字节数 / 写入消息条数 = 平均每条 message 多大
- 通常一个 batch ≈ 一个 BookKeeper entry ,未启用 batching 时一条消息 → 一个 entry
### kafka大小
- Producer 发送数据到 broker 时,不是一条一条裸发,而是组成 ProduceRequest,里面包含一个或多个 record batch。
- Kafka Producer 会先按 topic-partition 聚合消息,组成 record batch,再把一个或多个 batch 放进 ProduceRequest 发给 broker。这样可以减少网络请求、提升顺序写效率、提高压缩率和整体吞吐。
- 平均每个 produce request 大小(就是record batch,类似entry) = BytesInPerSec / ProduceRequestsPerSec
- 平均每个 request 包含消息数 = MessagesInPerSec / ProduceRequestsPerSec
- msg大小
1. BytesInPerSec / MessagesInPerSec
### kafka、pulsar类比
- 业务层一条消息:
Pulsar message ≈ Kafka record/message
- 客户端攒起来的一批:
Pulsar batch ≈ Kafka record batch
- 服务端存储单位:
Pulsar BK entry ≈ Kafka log 中的一段 record batch
- Pulsar entry 是 BookKeeper ledger 的写入单位 (pulsar是发多少就是entry多少)
Kafka record batch 是 Kafka log 里的批记录格式(kafka是需要攒 batch再写入的)