kafka特性:

1、kafka的数据只会顺序append,不支持随机写,顺序读写的性能非常高效

2、数据的删除策略是累积到一定程度或者超过一定时间再删除 (默认是7天)

3、Kafka另一个独特的地方是将消费者信息保存在客户端而不是MQ服务器 (zookeeper)

4、消息的投递过程也是采用客户端主动pull的模型

5、客户端在pull数据的时候,尽量以zero-copy(nio)的方式传输, 利用sendfile(对应java里的 FileChannel.transferTo/transferFrom)这样的高级IO函数来减少拷贝开销

Kafka存储策略

1.  kafka以topic来进行消息管理,每个topic包含多个part(ition),每个part对应一个逻辑log,有多个segment组成。

2.  每个segment中存储多条消息(见下图),消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。

3.  每个part在内存中对应一个index,记录每个segment中的第一条消息偏移。

4.  发布者发到某个topic的消息会被均匀的分布到多个part上(随机或根据用户指定的回调函数进行分布),broker收到发布消息往对应part的最后一个segment上添加该消息,当某个segment上的消息条数达到配置值或消息发布时间超过阈值时,segment上的消息会被flush到磁盘,只有flush到磁盘上的消息订阅者才能订阅到,segment达到一定的大小后将不会再往该segment写数据,broker会创建新的segment。

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐