Advertisement

Kafka数据 存储

阅读量:

目录

  • 前言
  • Kafka数据的存储方式
  • Kafka如何通过offset查找message

前言

与 Redis 和 Memcache 等内存消息队列不同的是 Kafka 将所有消息直接写入磁盘以换取更强的存储能力 其实 kafka 并未对存储性能造成显著影响 因为其在磁盘上仅执行 Sequence I/O 操作 这种特性使 Kafka 高度依赖底层操作系统提供的页缓存功能 当发生写操作时 系统仅将数据存储至页缓存 并标记相应页为脏页 读取操作则会优先从缓存中查找 若发生缺页则会触发磁盘调度机制 最终返回所需数据 实际上 Kafka 通过 PageCache 功能实现了尽可能高效的数据缓存管理 同时也能避免因内存占用过高导致的垃圾回收问题 如果采用 JVM 内部缓存方式 由于 JVM 垃圾回收线程会对堆空间进行频繁扫描 会带来不必要的开销 同时当 JVM 内存在占用过高时 完成 Full GC 会对系统的可用性产生重大威胁 在 JVM 内的所有对象均会产生 Object Overhead 这会导致内存有效利用率下降 而 Kafka 的 In-Process Cache 则完全依赖于 OS 提供的 PageCache 功能 因此通过将缓存存储于 PageCache 中 可以至少使可用缓存空间翻倍 如果 Kafka 重启 符合逻辑的

全部评论 (0)

还没有任何评论哟~