1. Producer
-
生产者将数据写入主题(由分区组成),生产者知道要写入哪个分区(及Kafka代理拥有它);
-
若kafka broker failure,生产者将自动恢复(automatically recover);
-
生产者向主题发送消息,并根据key hash等机制将消息分发到分区
为将消息成功写入主题,生产者必须指定一个确认acknowledgment level;
2. Message Key
-
生产者可选择发送带有key的消息(String,Number,Binary等);
-
若key = null,则消息会均匀地分布在主题中的分区中,
则循环发送数据(分区1,分区2,分区3……); -
若key != null,则共享该键的所有消息将始终转到同一partition(hashing);
-
key可用于标识消息的任何信息:字符串、数值、二进制值等;
-
若需对特定字段(如product_id)进行消息排序,则通常会发送key;
3. Message Anatomy
Entry | Memo |
---|---|
Key |
消息种Key可选,可为null,字符串,数字或任何对象,然后将key序列化为二进制格式 |
Value |
消息的内容,可为null,格式任意(arbitrary),也被序列化为二进制格式 |
Compression Type |
消息可被压缩,压缩类型可被指定为消息的一部分, |
Headers |
以键值对的形式列出可选的消息头,通常标头指定有关消息的元数据,尤其用于跟踪 |
Partition + Offset |
一旦消息被发送到主题,就会收到一个partition number |
Timestamp |
时间戳由用户或系统在消息中添加 |