美文网首页
kafka的存储方式及思考

kafka的存储方式及思考

作者: 瓢鳍小虾虎 | 来源:发表于2021-04-21 11:40 被阅读0次

kafka是基于磁盘存储的,但是与数据库落盘的方式是不同的,kafka是流式存储,数据在磁盘上也是顺序写入,节约了磁盘寻道的时间,因此写入速度还是很快的,官方统计,kafka的磁盘写入速要比随机写入内存的速度还快。

虽然kafka的存储是基于磁盘,但是并不意味着我们在选机器的时候只看重磁盘大小就可以了。kafka数据写入磁盘的过程利用了操作系统的page cache缓存,使用的是操作系统的内存。因此kafka需要大的磁盘空间和大的内存空间。

在开发的时候我们要注意,数据写入kafka的时候尽量不要自己创建缓存,直接调用kafka的api即可。
因为我们开发的时候使用的是JVM进程内存,这样做会导致同样一份数据在进程内存和操作系统内存各存一份,浪费了机器的内存空间。当然如果JVM内缓存的数据并不是用来落盘的就不需要考虑这个问题。

JVM缓存和操作系统page cache比较:

  1. JVM一般对象的形式存储数据,k-v属于散列的方式存储,占的内存空间通常比数据本身要大很多;而page cache是面向纯二进制流数据,数据更紧凑,节约内存。
  2. JVM的存储容易出现GC:操作系统的page cache不存在GC问题。

由于kafka的数据写入依赖操作系统的page cache,page cache是操作系统维护的,cache内容到一定量才会刷入到磁盘。因此这里有个隐患就是突然宕机可能会导致数据丢失。
kafka给我们提供了2种方式帮我们强制写入磁盘,一个是配置一定量就写入磁盘,另一个是配置达到一定时间间隔就写入磁盘。通常我们不需要修改这2个值。
另外,kafka本身是一个集群,单台机器宕机其实不会导致数据丢失。

相关文章

  • kafka的存储方式及思考

    kafka是基于磁盘存储的,但是与数据库落盘的方式是不同的,kafka是流式存储,数据在磁盘上也是顺序写入,节约了...

  • Kafka的数据存储与索引设计

    本文会介绍Kafka的底层数据存储形式、Kafka的高效索引设计及实际查询的过程。 1、segment Kafka...

  • Kafka学习

    1. Kafka消费方式:通过Flume,将kafka消息存储到HDFS 通过Spark Streaming读取...

  • 一.kafka设计解析

    1. 思考问题 kafka有哪些优点? kafka存储结构如何设计的? kafka的高效性是怎么保证的? kafk...

  • kafka手记

    参考 Kafka文件存储机制那些事 kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)zookee...

  • Kafka 日志存储

    Kafka 中的底层存储设计 Segment 是kafka文件存储的最小单位 日志存放目录 kafka_2.10...

  • Kafka 日志存储、清理规则、消息大小估算

    kafka的日志: kafka消息存储在kafka集群中(分parition存储,每个partition对应一个目...

  • Kafka学习笔记(二)架构深入

    1. Kafka工作流程及文件存储机制 Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,...

  • Kafka 基本原理

    目录 简介Kafka架构Kafka存储策略Kafka删除策略Kafka brokerKafka DesignThe...

  • kafka架构师2-图解kafka源码1发送者流程

    架构 Client生产发送流程Server:kafka 网络架构kafka 数据存储kafka 副本同步kafka...

网友评论

      本文标题:kafka的存储方式及思考

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