kafka消息机制_kafka消息持久化处理

kafka消息机制_kafka消息持久化处理1、Kafka消息持久性概述 Kakfa依赖文件系统来存储和缓存消息。对于硬盘的传统观念是硬盘总是很慢,基于文件系统的架构能否提供优异的性能?实际上硬盘的快慢完全取决于使用方式。同时 Kafka 基于

【赵强老师】Kafka的消息持久化

kafka消息机制_kafka消息持久化处理

1、Kafka消息持久性概述

Kakfa依赖文件系统来存储和缓存消息。对于硬盘的传统观念是硬盘总是很慢,基于文件系统的架构能否提供优异的性能?实际上硬盘的快慢完全取决于使用方式。同时 Kafka 基于 JVM 内存有以下缺点:

  • 对象的内存开销非常高,通常是要存储的数据的两倍甚至更高

  • 随着堆内数据的增加,GC的速度越来越慢

实际上磁盘线性写入的性能远远大于任意位置写的性能,线性读写由操作系统进行了大量优化(read-ahead、write-behind 等技术),甚至比随机的内存读写更快。所以与常见的数据缓存在内存中然后刷到硬盘的设计不同,Kafka 直接将数据写到了文件系统的日志中:

  • 写操作:将数据顺序追加到文件中

  • 读操作:从文件中读取

这样实现的好处:

  • 读操作不会阻塞写操作和其他操作,数据大小不对性能产生影响

  • 硬盘空间相对于内存空间容量限制更小

  • 线性访问磁盘,速度快,可以保存更长的时间,更稳定

2、Kafka的持久化原理解析

一个Topic 被分成多 Partition,每个 Partition 在存储层面是一个 append-only 日志文件,属于一个 Partition 的消息都会被直接追加到日志文件的尾部,每条消息在文件中的位置称为 offset(偏移量)。

kafka消息机制_kafka消息持久化处理

如下图所示,我们之前创建了mytopic1,具有三个分区。我们可以到对应的日志目录下进行查看。

kafka消息机制_kafka消息持久化处理

Kafka日志分为index与log(如上图所示),两个成对出现:index文件存储元数据,log存储消息。索引文件元数据指向对应log文件中message的迁移地址;例如2,128指log文件的第2条数据,偏移地址为128;而物理地址(在index文件中指定)+ 偏移地址可以定位到消息。
我们可以使用Kafka自带的工具来查看log日志文件中的数据信息:

kafka消息机制_kafka消息持久化处理

kafka消息机制_kafka消息持久化处理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6218.html

(0)
上一篇 2023-04-14
下一篇 2023-04-15

相关推荐

  • 开源之夏 2022 重磅来袭,欢迎报名 RadonDB 社区项目

    开源之夏 2022 重磅来袭,欢迎报名 RadonDB 社区项目活动简介 “开源之夏(英文简称 OSPP)” 是中科院软件所 “开源软件供应链点亮计划” 指导下的一项面向高校学生的暑期活动,由中国科学院软件研究所与 openEuler 社区共同举办。 2022 年

    2023-05-15
    151
  • SQL抽象语法树及改写场景应用[亲测有效]

    SQL抽象语法树及改写场景应用[亲测有效]我们平时会写各种各样或简单或复杂的sql语句,提交后就会得到我们想要的结果集。比如sql语句,”select * from t_user where user_id > 10;”,意在从表t_user

    2023-06-09
    142
  • Python读取JSON文件并生成标题

    Python读取JSON文件并生成标题在Python开发中,读取JSON文件并且生成可视化的标题是常见的需求。JSON文件作为一种轻量级的数据交换格式,它易于人们理解和编写,同时易于计算机解析和生成,因此在很多场景下,JSON文件得到了广泛的应用。Python是一种功能强大且易学易用的编程语言,它提供了强大的JSON解析功能,并且支持生成各种可视化效果,本文将介绍如何使用Python读取JSON文件,并生成h1标题的方法。

    2024-04-22
    55
  • Python编程技巧之优雅处理单词出现次数

    Python编程技巧之优雅处理单词出现次数在日常开发中,我们常常需要对文本处理进行操作。其中一个常见的需求就是统计某一个文本中某一个单词或者词组出现的次数。常规的做法是通过遍历整个文档,一个一个字符串的比对,但是这样做不仅效率低下,而且代码难以维护。

    2023-12-21
    126
  • 用户画像 标签_用户画像标签库

    用户画像 标签_用户画像标签库一、数字营销是数字化转型排头兵 《⼗四五数字经济发展规划》中强调,要⼤⼒推进数字化转型,形成数据驱动的智能决策能⼒,提升企业整体运营效率。 要做好数字化转型,企业可从产、研、供、销、⽤等多个环节入手,

    2023-05-30
    147
  • Windows 下安装多个Redis 实例

    Windows 下安装多个Redis 实例1.在Redis 目录下复制redis.windows-service.conf文件,建议命名规则redis.windows-service-port.conf,我们以6380端口为例。 2.打开re

    2023-02-11
    156
  • apache druid 实时加载kafka 中的数据(一)[通俗易懂]

    apache druid 实时加载kafka 中的数据(一)[通俗易懂]简介 apache druid 是分布式列存储的 OLAP 框架。还是一个时间序列数据库。本篇文章主要是druid 在kafka 加载数据的配置。由于druid 升级情况太快,本人的环境还是在0.1…

    2022-12-19
    152
  • MySQL Event历史记录

    MySQL Event历史记录需求 SQL Server的作业历史(Job)记录是保存在msdb库中的,很方便就查询相关的Job定义,计划和历史记录,而MySQL的event却没有历史记录。为方便查看event是否正常执行以及执行

    2022-12-24
    169

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注