美文网首页
kafka消息快的原因

kafka消息快的原因

作者: 联想桥南 | 来源:发表于2017-10-11 15:59 被阅读0次

大家都知道技术选型上,kafka适合做大数据收集,比如kafka+storm流式计算。
kafka被设计的特点是快,那原因是什么昵?

1.上述消息存储结构的设计kafka消息存储设计

2.page cache

3.生产消费分布式读写

4.批量

存储结构,就是持久化存储用的磁盘,大数据分小文件(segment单元)存储,方便根据offset二分快速查找定位小文件,设计有稀疏索引文件,方便快速查找具体message。
批量可以减少网络请求的次数,这是消息中间件通用的优化点

page cache(参考博文

在命令行输入cat /proc/meminfo,其中Cached就是Page Cache。Linux总会把系统中还没被应用使用的内存挪来给Page Cache,这是有OS管理的。

image

Page Cache中每个文件是一种多叉搜索树,就跟数据库的索引类似,节点由4k大小的Page组成,可以通过文件的偏移量快速定位到某个Page。

[图片上传中...(image-1ab9a6-1511006412683-0)]

当写操作发生时,它只是将数据写入Page Cache中,并将该页置上dirty标志。

当读操作发生时,它会首先在Page Cache中查找,如果有就直接返回了,没有的话就会从磁盘读取文件写入Page Cache再读取。

可见,只要生产者与消费者的速度相差不大,消费者会直接读取之前生产者写入Page Cache的数据,大家在内存里完成接力,根本没有磁盘访问。

既然linux操作系统有page cache,为什么应用还要引入应用缓存?

Page cache针对文件系统,特点顺序和4k,但是应用层的缓存大多缓存的是中间结果,是经过计算或者裁剪组合后的。所以说这是操作系统不知业务应用,提供的方法论级别的设计。

kafka使用page cache还有一个好处是,Page Cache又不需要GC,是操作系统级别的缓存,即使Kafka重启了,Page Cache数据依然还在。相应的,操作系统crash,会带来数据丢失(那些还没有被真正写盘的数据)。

真正写盘的是fluher内核线程,OS管理

至于写盘的内核线程,如何flush策略,是另一个话题。这也说明想高效使用kafka的化,使用单独的机器部署server端,调整操作系统的page cache相关参数是可以调优的。

消息的写入

写入会在log文件的尾部添加,文件的写入是利用的操作系统的page缓存批量刷盘,所以kafka服务器的操作系统底层要支持,这是kafka吞吐量高能原因之一,写入文件还有两个两个配置参数,消息达到指定数目M,时间超过S秒。这个是broker端的控制

rather than maintain as much as possible in-memory and flush it all out to the filesystem in a panic when we run out of space, we invert that. All data is immediately written to a persistent log on the filesystem without necessarily flushing to disk. In effect this just means that it is transferred into the kernel's pagecache

批量操作

这个是消息中间件都会考虑添加的一个功能,cmq云上服务。这个是producor端的控制

消息的删除

删除的策略,保留N天的数据,会有定时任务定时清理。

相关文章

  • kafka消息快的原因

    大家都知道技术选型上,kafka适合做大数据收集,比如kafka+storm流式计算。kafka被设计的特点是快,...

  • Kafka集群与运维

    Kafka集群与运维 集群应用场景 消息传递 Kafka可以很好地替代传统邮件代理。消息代理的使用有多种原因(将处...

  • kafka使用场景

    kafka使用场景 消息 Kafka被当作传统消息中间件的替代品。消息中间件的使用原因有多种(从数据生产者解耦处理...

  • 《Apache kafka实战》学习总结及代码实操(未完--持续

    Kafka高性能高吞吐的原因: kafka是作为消息中间件、流处理平台、消息引擎性能吞吐量均是是目前市面第一,得益...

  • 全网最通俗易懂的Kafka入门

    众所周知,消息队列的产品有好几种,这里我选择学习Kafka的原因,无他,公司在用。 我司使用的是Kafka和自研的...

  • Kafka常用命令

    启动Kafka并生产消费消息 启动ZooKeeper 启动Kafka 查看启动后kafka的版本 生产者发送消息 ...

  • Kafka/RocketMQ顺序消息对比

    一、Kafka顺序消息 Producer端:Kafka的顺序消息是通过partition key,将某类消息(例如...

  • 真厉害!1 秒写入 10 万条消息,Kafka 写得这么快,都是

    Kafka 作为消息队列中的中坚力量,基本上是每次面试必问的知识点。而说到 Kafka,大家对它的印象就是快!异常...

  • kafka高吞吐量的原因

    kafa 吞吐量高的原因 顺序读写 kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺...

  • Kafka实践

    kafka基本概念: Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为...

网友评论

      本文标题:kafka消息快的原因

      本文链接:https://www.haomeiwen.com/subject/nguwyxtx.html