`
flychao88
  • 浏览: 743292 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为什么说Kafka使用磁盘比内存快

 
阅读更多

学习过[跟我学Kafka源码之LogManager分析]的同学一定会问为什么Kafka大量使用了磁盘作为传统意义的缓存。

其实Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。

而且Linux对于磁盘的读写优化也比较多,包括read-ahead和write-behind,磁盘缓存等。如果在内存做这些操作的时候,一个是JAVA对象的内存开销很大,另一个是随着堆内存数据的增多,JAVA的GC时间会变得很长,使用磁盘操作有以下几个好处:

  • 磁盘缓存由Linux系统维护,减少了程序员的不少工作。
  • 磁盘顺序读写速度超过内存随机读写。
  • JVM的GC效率低,内存占用大。使用磁盘可以避免这一问题。
  • 系统冷启动后,磁盘缓存依然可用。
分享到:
评论

相关推荐

    Kafka分布式消息系统

    Kafka是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进程...

    大数据工作面试练习题 BAT大数据面试题 Hadoop、kafka、HDFS、Spark、MapReduce 共19页.pdf

    10、kafka的数据存在内存还是磁盘 8 11、怎么解决kafka的数据丢失 9 12、fsimage和edit的区别? 10 13、列举几个配置文件优化? 10 14、datanode首次加入 cluster 的时候,如果 log 报告不兼容文件版本,那需要...

    Zabbix监控第三方中间件内存及CPU使用情况模板

    Zabbix监控第三方中间件内存及CPU使用情况模板 nginx redis mysql tomcat Rocketmq mongodb kafka zookeeper httpd elasticsearch jenkins hbase hadoop hive docker

    大白话教你认识Kafka

    按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存,且仅仅是起到了缓存的作用而并不是真正的缓存,数据仍然是存储在磁盘上面而不是内存。 1.Topic 主题 kafka学习了数据库里面的设计,在...

    feeyo-redisclient:在Feeyo-redisproxy中使用的Kafka队列服务

    kafka topic扩展指令如下KPUSH {topic} {content }KPUSH {topic} {partition} {content}KPOP {topic}KPOP {topic} {partition} {offset}KPARTITIONS {topic} KOFFSET {topic} {partition} {time}为什么要使用1、...

    内存与磁盘,部分运行程序简易构造图

    初次画图,有理解不到位的地方欢迎各位同行前辈指正

    大数据集群虚拟机-环境搭建-导入vmware直接使用

    1、三个节点,含多种环境快照 2、环境包含Hadoop、Hive、Zookeeper、Spark、Kafka、Hbase、ES、scala、jdk、mysql 3、最大资源占用:6核cpu、7G内存、90G磁盘容量

    zabbix_monitor_flume_es:监控flumekafkaelasticsearch通过zabbix

    esmonitor flume/kafka/elasticsearch by zabbix script description功能名称类型作用传递参数说明脚本apm_process_discovery.py自动发现脚本获取进程名称,最终传递给监控脚本,用于监控young gc、collector物理...

    各大数据组件介绍.pdf

    (概述图⽚来源:[2] ) 那么Zookeeper能做什么事情呢,简单的例⼦:假设我们有20个的(每个负责总索引中的⼀部分的搜索任务)和⼀个总服务器(负责向这20个 搜索引擎的服务器发出搜索请求并合并结果集),⼀个备⽤的总...

    wireless.zip

    - 为什么要使用消息队列 >解耦:将消息写入消息队列,需要消息的系统从消息队列中订阅 >异步:非必要的业务逻辑以异步方式进行,加快速度 >削峰:不直接访问数据库 - 消息队列的缺点 >系统可用性降低:消息队列可能...

    大数据平台常见面试题.pdf

    ⼤数据平台常见⾯试题 第1部分 申请ID..... 下列哪项通常是集群的最主要瓶颈 a)CPU b)⽹络 c)磁盘 IO d)内存 解析: 由于⼤数据⾯临海量数据,读写数据都需要 io,然后还要冗余数据,hadoop ⼀般备 3 份数据,所以 IO

    大数据的基础知识.pdf

    特点 特点 描述 描述 1 Volume(⼤量) 数据量越来越⼤ 2 Velocity(⾼速) 数据量增长越来越快 3 Variety(多样) 数据的结构多种多样 4 Value(多样) 价值密度的⾼低与数据总量⼤⼩成反⽐ ⼤数据应⽤场景 1、物流仓储 2、...

    java8集合源码-spark-tutorial:星火教程

    内存快 100 倍 构建执行计划 DAG(有向无环图) 巧妙的优化,例如:非依赖任务的并行运行 多线程的好处 驱动程序(将函数发送到)+ worker1 + worker2 + ...... 任务:针对分区的功能 RDD 弹性分布式数据集 ...

    库存:轮询有关库存的信息以生成操作

    为基于Kafka的交付构建一次精确的语义。 考虑崩溃之间在股票分析器的持久状态中的作用。 考虑与集成作为另一个消息队列选项。 向使用此存储库添加需求。 已知的问题 Websocket偶尔会关闭连接(由于当前未知的...

    styx:简单,高性能的事件流平台

    它旨在为各种规模的团队提供一个易于操作的,磁盘持久化的事件发布-订阅系统。 Styx被部署为没有依赖性的单个二进制文件,它公开了高性能的二进制协议以及用于事件产生和使用的HTTP和WebSockets API。 Styx围绕...

    centos7.5分布式平台搭建.docx

    19. Kafka 67 19.1. 优化 67 20. Spark2.x 68 20.1. 示例执行 68 21. YARN 68 21.1. 错误处理 68 22. Docker安装 68 22.1. 在线安装 68 22.1.1. 使用国内docker源 68 22.1.2. Docker安装 68 22.1.3. 启动进程 68 ...

    安装ganglia.txt

    Ganglia由gmond、gmetad和gweb三部分组成。易收集很多系统指标数据,如CPU、内存、磁盘、网络和活跃进程的数据等。

    大数据面试之——Spark

    Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。 1.Spark有几种部署模式,各个模式的特点 1.本地模式 Spark不一定非要跑在hadoop集群,可以在本地,起多个线程的方式来指定。方便调试,本地模式分三...

Global site tag (gtag.js) - Google Analytics